Macro copier / coller sous condition

Nathalie.chassefaire Messages postés 10 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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

5 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  2. Nathalie.chassefaire Messages postés 10 Statut Membre
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      il est sans doute préférable que tu partages un fichier d'exemple.
      0
  3. Nathalie.chassefaire Messages postés 10 Statut Membre
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
      1. Nathalie.chassefaire Messages postés 10 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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
      2. Nathalie.chassefaire Messages postés 10 Statut Membre > Nathalie.chassefaire Messages postés 10 Statut Membre
         
        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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    un essai:

    https://www.cjoint.com/c/JKsr4fpTy2Q
    0
    1. Nathalie.chassefaire Messages postés 10 Statut Membre
       
      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
    2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > Nathalie.chassefaire Messages postés 10 Statut Membre
       
      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
    3. Nathalie.chassefaire Messages postés 10 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
       
      C'est exactement ça!
      Par contre, quand je bascule la macro dans le véritable fichier, ça ne fonctionne pas...
      0
    4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > Nathalie.chassefaire Messages postés 10 Statut Membre
       
      Il faut adapter la macro aux feuilles, c'est marqué dans les commentaires!

      Lire les commentaires pour comprendre la macro!
      0
    5. Nathalie.chassefaire Messages postés 10 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
       
      Bon, au final ça fonctionne bien avec mon fichier!

      Génial. Merci.
      0