Macro copier / coller sous condition

Fermé
Nathalie.chassefaire Messages postés 10 Date d'inscription mercredi 18 novembre 2020 Statut Membre Dernière intervention 19 novembre 2020 - 18 nov. 2020 à 16:02
yg_be Messages postés 22805 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 mai 2024 - 19 nov. 2020 à 18:25
Bonjour à tous,

J'ai cherché ma solution dans différents forums mais je ne trouve pas alors je me permets de vous solliciter :-)

Je suis à la recherche d'une macro me permettant de copier coller des lignes de ma feuille 1 (alimentée de manière brute par une extraction depuis une liste sharepoint) vers ma feuille 2 seulement si ma colonne 3 contient "valeur A" et si la ligne n'est pas déjà présente dans ma feuille 2 (j'ai un numéro de ligne en colonne 1).

Je risque d'avoir un nombre important de données (environ 6000 lignes par an), il faudrait que la recherche soit simple afin qu'elle ne prenne pas trop de temps à s'exécuter.

Merci par avance pour votre aide précieuse!






Configuration: Windows / Edge 86.0.622.56
A voir également:

5 réponses

yg_be Messages postés 22805 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 mai 2024 1 469
Modifié le 18 nov. 2020 à 16:34
bonjour,
tu n'as pas expliqué où tout cela devait arriver dans la feuille de destination.
il est sans doute préférable que tu partages un fichier d'exemple.
0
Nathalie.chassefaire Messages postés 10 Date d'inscription mercredi 18 novembre 2020 Statut Membre Dernière intervention 19 novembre 2020
18 nov. 2020 à 16:34
Bonjour,

Effectivement! Désolée, je suis novice... ça se voit! :-)
Dans ma feuille de destination, il faut que ça s'incrémente à la suite du tableau actuel soit première ligne vide

Merci
0
yg_be Messages postés 22805 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 mai 2024 1 469
18 nov. 2020 à 16:36
il est sans doute préférable que tu partages un fichier d'exemple.
0
Nathalie.chassefaire Messages postés 10 Date d'inscription mercredi 18 novembre 2020 Statut Membre Dernière intervention 19 novembre 2020
Modifié le 18 nov. 2020 à 17:17
Li'dée :
- Onglet 1 : il s'agit de mon extraction brute sharepoint
- Onglet 2 (qui sera propre à chaque site) récupère dans l'onglet 1 les lignes qui concernent son site et qui ne sont pas déjà présentes dans l'onglet.

Dans l'exemple, il s'agit du site 1, il a fait sa mise à jour le 09/11/2020, et depuis, des nouvelles données ont été saisies dans le sharepoint qui sont maintenant dans l'onglet 1

J'espère avoir été assez claire sur mon explication
0
yg_be Messages postés 22805 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 mai 2024 1 469
18 nov. 2020 à 17:54
pour pouvoir déterminer le site associé à l'onglet, il est nécessaire qu'il y ait déjà des données dans l'onglet.
je cherche comment ganger du temps:
serait-il possible d'utiliser une colonne de "extraction", pour indiquer que la ligne est déjà extraite? en fait, l'extraction de sharepoint recrée chaque fois la liste complète?
les numéros de ligne sont toujours croissants dans tous les onglets?
si une ligne de extraction est présente dans un des onglets, peut-on supposer que toutes les lignes précédentes ont déjà été traitées (pour tous les sites)?
0
Nathalie.chassefaire Messages postés 10 Date d'inscription mercredi 18 novembre 2020 Statut Membre Dernière intervention 19 novembre 2020 > yg_be Messages postés 22805 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 mai 2024
18 nov. 2020 à 18:33
serait-il possible d'utiliser une colonne de "extraction", pour indiquer que la ligne est déjà extraite? en fait, l'extraction de sharepoint recrée chaque fois la liste complète? => oui l'extraction sharepoint écrase tout à chaque fois

les numéros de ligne sont toujours croissants dans tous les onglets? => les numéros correspondent à ceux de la colonne 1 de l'extraction

si une ligne de extraction est présente dans un des onglets, peut-on supposer que toutes les lignes précédentes ont déjà été traitées (pour tous les sites)? => normalement oui, je vérifie
0
Nathalie.chassefaire Messages postés 10 Date d'inscription mercredi 18 novembre 2020 Statut Membre Dernière intervention 19 novembre 2020 > Nathalie.chassefaire Messages postés 10 Date d'inscription mercredi 18 novembre 2020 Statut Membre Dernière intervention 19 novembre 2020
18 nov. 2020 à 18:39
Vérification faite, le numéro de ligne est bien incrémenté à chaque nouvelle saisie.
Donc si ligne n°x déjà intégrée dans l'onglet n°2, pas besoin de traiter les lignes d'avant
0
Nathalie.chassefaire Messages postés 10 Date d'inscription mercredi 18 novembre 2020 Statut Membre Dernière intervention 19 novembre 2020
18 nov. 2020 à 17:14
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
18 nov. 2020 à 18:56
Bonjour,

un essai:

https://www.cjoint.com/c/JKsr4fpTy2Q
0
Nathalie.chassefaire Messages postés 10 Date d'inscription mercredi 18 novembre 2020 Statut Membre Dernière intervention 19 novembre 2020
Modifié le 18 nov. 2020 à 19:08
Merci pour cet envoi.
La macro m'insère donc les lignes n°0 et 2 (qui sont bien du site 1).
Mais quid des autres lignes du site n°1?

Je souhaiterais qu'à chaque mise à jour de l'onglet "extraction", il puisse m'intégrer dans l'onglet suivi des actions les lignes du site 1 qui n'y sont pas déjà.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > Nathalie.chassefaire Messages postés 10 Date d'inscription mercredi 18 novembre 2020 Statut Membre Dernière intervention 19 novembre 2020
18 nov. 2020 à 19:59
J'ai vu ces 2 lignes qui avaient en commun "Action Dangereuse"

Donc voici le code pour tout le site 1:

Option Explicit
Sub For_X_to_Next_Ligne()
Dim FL1 As Worksheet, NoCol As Integer
Dim NoLig As Long, Var As Variant
Dim FL2 As Worksheet
Dim derligne As Long
Dim obj As Object
    Set FL1 = Worksheets("Extraction") 'a adapter
      Set FL2 = Worksheets("Suivi actions") 'a adapter
    NoCol = 3 'lecture de la colonne C
    Application.ScreenUpdating = False
    For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4)
        Var = FL1.Cells(NoLig, NoCol)
        If Var = "Site 1" Then
        derligne = FL2.Range("A" & Rows.Count).End(xlUp).Row + 1
  Set obj = FL2.Columns("A").Find(FL1.Cells(NoLig, NoCol - 2), , , xlWhole)
If Not obj Is Nothing Then
MsgBox "La ligne " & obj.Rows & " existe déjà!", vbCritical, "Ajout de ligne" ' on peut supprimer le message
Else
FL1.Range("A" & NoLig & ":J" & NoLig).Copy _
    Destination:=FL2.Range("A" & derligne)
    End If
        End If
     Next
    Set FL1 = Nothing
     Application.ScreenUpdating = True
End Sub



Voilà

0
Nathalie.chassefaire Messages postés 10 Date d'inscription mercredi 18 novembre 2020 Statut Membre Dernière intervention 19 novembre 2020 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
19 nov. 2020 à 14:43
C'est exactement ça!
Par contre, quand je bascule la macro dans le véritable fichier, ça ne fonctionne pas...
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > Nathalie.chassefaire Messages postés 10 Date d'inscription mercredi 18 novembre 2020 Statut Membre Dernière intervention 19 novembre 2020
19 nov. 2020 à 14:54
Il faut adapter la macro aux feuilles, c'est marqué dans les commentaires!

Lire les commentaires pour comprendre la macro!
0
Nathalie.chassefaire Messages postés 10 Date d'inscription mercredi 18 novembre 2020 Statut Membre Dernière intervention 19 novembre 2020 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
19 nov. 2020 à 15:23
Bon, au final ça fonctionne bien avec mon fichier!

Génial. Merci.
0