Comparer deux colonnes et copier/coller [Résolu]

Messages postés
15
Date d'inscription
mercredi 13 juillet 2016
Statut
Membre
Dernière intervention
12 septembre 2019
- - Dernière réponse : ALS35
Messages postés
207
Date d'inscription
jeudi 18 juillet 2019
Statut
Membre
Dernière intervention
22 octobre 2019
- 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
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
207
Date d'inscription
jeudi 18 juillet 2019
Statut
Membre
Dernière intervention
22 octobre 2019
7
1
Merci
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

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 65020 internautes nous ont dit merci ce mois-ci

ALS35
Messages postés
207
Date d'inscription
jeudi 18 juillet 2019
Statut
Membre
Dernière intervention
22 octobre 2019
7 -
Bonjour,
Par contre si une cellule de "sheet2" n'est pas présente dans "sheet1", la rajouter en bas du document
Tu rajoute quoi ? Dans ton exemple : La cellule de la colonne F de Sheet2 que tu ajoutes à la fin de la colonne C de sheet1, c'est à dire la valeur F12 de sheet2 (AX32LN5) que tu veux ajouter en C35 de sheet1 ?
Cordialement
Walles
Messages postés
15
Date d'inscription
mercredi 13 juillet 2016
Statut
Membre
Dernière intervention
12 septembre 2019
-
C'est exactement ça, je veux juste ajouter toutes les références manquantes dans Sheet1, donc dans mon exemple AX32LN5, AX32LN6, AX32LN7, AX32LN8, AX32LN9, DFU35, DFU36, DFU42, etc...

Cordialement
ALS35
Messages postés
207
Date d'inscription
jeudi 18 juillet 2019
Statut
Membre
Dernière intervention
22 octobre 2019
7 -
Bonjour,

essaie cette macro en dehors de ta précédente pour voir si c'est ça que tu veux
Sub Test2()
Dim I As Integer
Sheets("Sheet2").Activate
For I = 8 To 100
If WorksheetFunction.CountIf(Sheets("Sheet1").Range("C:C"), Sheets("Sheet2").Range("F" & I)) = 0 Then
Sheets("Sheet1").Range("C8").End(xlDown).Offset(1, 0) = Sheets("Sheet2").Range("F" & I)
End If
Next I
End Sub


Cordialement
Walles
Messages postés
15
Date d'inscription
mercredi 13 juillet 2016
Statut
Membre
Dernière intervention
12 septembre 2019
-
Ca marche parfaitement, merci beaucoup !
ALS35
Messages postés
207
Date d'inscription
jeudi 18 juillet 2019
Statut
Membre
Dernière intervention
22 octobre 2019
7 -
Bonjour,
De rien, tu peux passer le sujet en résolu.
Cordialement
Commenter la réponse de ALS35