Comparer deux colonnes et copier/coller

Résolu
Walles Messages postés 15 Statut Membre -  
ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,
Voici le descriptif de ce que j'essaie de faire.
Dans la "sheet2", si les colonnes L et M sont vides et que ce qui est inscrit dans la colonne F est égal à ce qu'il y a inscrit dans la colonne C de "sheet1" alors inscrire "Option 1" dans la colonne AF de la même ligne. Par contre si une cellule de "sheet2" n'est pas présente dans "sheet1", la rajouter en bas du document. Voici mon code:

Dim i As Integer
Dim j As Integer

i = 3
j = 8

For i = 3 To 100
For j = 8 To 100

Sheets("Sheet2").Activate
If Range("L" & i) = "" And Range("M" & i) = "" Then
If Range("F" & i) = Worksheets("Sheet1").Range("C" & j) And Worksheets("Sheet1").Range("C" & j) <> "" Then

Worksheets("Sheet1").Range("AF" & j) = "Option 1"
Else
Sheets("Sheet2").Activate
Range("F" & i).Copy
Sheets("Sheet1").Activate
Range("B65536").End(xlUp).Offset(1, 0).Select
ActiveCell.PasteSpecial Paste:=xlPasteValues

End If
End If

Next j
Next i

La première partie fonctionne bien, le problème est après le "else". Il sélectionne bien la bonne cellule et réalise le copier coller mais le souci c'est qu'il colle la cellule une centaine de fois, je suppose qu'il le fait pour chaque ligne qu'il compare. Est-il possible de limiter l'action à une seule fois?

Merci d'avance pour vos réponses

1 réponse

  1. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
     
    Bonjour,

    Tu déclares un booléen
    Dim CopieFaite as Boolean
    Après ton Else tu testes à False ce booléen et tu le mets à True après la copie
    If CopieFaite = False then
    Sheets("Sheet2").Activate
    Range("F" & i).Copy
    Sheets("Sheet1").Activate
    Range("B65536").End(xlUp).Offset(1, 0).Select
    ActiveCell.PasteSpecial Paste:=xlPasteValues
    CopieFaite = True
    end if
    1
    1. Walles Messages postés 15 Statut Membre
       
      Bonjour, merci pour ta réponse.

      Cela foncionne mais s'arrête à la première différence. Je me suis mal exprimé je pense, je vais faire un exemple.
      Imaginons que dans ma sheet1 j'ai:
      1
      2
      3
      4
      5
      Et dans ma sheet2:
      3
      4
      5
      6
      7
      8

      Je voudrais avoir en dans ma sheet1 après macro:
      1
      2
      3 Option 1
      4 Option 1
      5 Option 1
      6
      7
      8

      Avec ta solution j'obtiens:
      1
      2
      3 Option 1
      4 Option 1
      5 Option 1
      6

      J'espère que cet exemple sera assez parlant
      0
    2. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Bonjour,
      Vu que tu as plusieurs conditions, peux-tu poster ici juste un exemple de tes deux feuilles
      Cordialement
      0
    3. Walles Messages postés 15 Statut Membre
       


      Comme ceci?
      0
    4. ALS35 Messages postés 1034 Date d'inscription   Statut Membre Dernière intervention   147
       
      Bonjour,

      Euh non, plutôt en passant par les sites ci-joint.com ou mon-partage.fr et en collant le lien ici

      Cordialement,
      0
    5. Walles Messages postés 15 Statut Membre
       
      https://mon-partage.fr/f/X31wDFVK/

      Voilà,

      Cordialement,
      0