Comparer deux colonnes et copier/coller

Résolu/Fermé
Walles Messages postés 15 Date d'inscription mercredi 13 juillet 2016 Statut Membre Dernière intervention 12 septembre 2019 - 19 août 2019 à 13:56
ALS35 Messages postés 1033 Date d'inscription jeudi 18 juillet 2019 Statut Membre Dernière intervention 9 janvier 2024 - 20 août 2019 à 09:50
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
A voir également:

1 réponse

ALS35 Messages postés 1033 Date d'inscription jeudi 18 juillet 2019 Statut Membre Dernière intervention 9 janvier 2024 139
19 août 2019 à 14:35
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
Walles Messages postés 15 Date d'inscription mercredi 13 juillet 2016 Statut Membre Dernière intervention 12 septembre 2019
19 août 2019 à 15:15
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
ALS35 Messages postés 1033 Date d'inscription jeudi 18 juillet 2019 Statut Membre Dernière intervention 9 janvier 2024 139
19 août 2019 à 15:46
Bonjour,
Vu que tu as plusieurs conditions, peux-tu poster ici juste un exemple de tes deux feuilles
Cordialement
0
Walles Messages postés 15 Date d'inscription mercredi 13 juillet 2016 Statut Membre Dernière intervention 12 septembre 2019
19 août 2019 à 16:27


Comme ceci?
0
ALS35 Messages postés 1033 Date d'inscription jeudi 18 juillet 2019 Statut Membre Dernière intervention 9 janvier 2024 139
19 août 2019 à 16:56
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
Walles Messages postés 15 Date d'inscription mercredi 13 juillet 2016 Statut Membre Dernière intervention 12 septembre 2019
19 août 2019 à 17:00
https://mon-partage.fr/f/X31wDFVK/

Voilà,

Cordialement,
0