Comparer deux colonnes et copier/coller
Résolu
Walles
Messages postés
15
Statut
Membre
-
ALS35 Messages postés 1041 Statut Membre -
ALS35 Messages postés 1041 Statut Membre -
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
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:
- Comparer deux colonnes et copier/coller
- Comment faire deux colonnes sur word - Guide
- Historique copier coller - Guide
- Copier-coller - Accueil - Informatique
- Copier coller pdf - Guide
- Style d'écriture a copier coller - Guide
1 réponse
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
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
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
Vu que tu as plusieurs conditions, peux-tu poster ici juste un exemple de tes deux feuilles
Cordialement
Comme ceci?
Euh non, plutôt en passant par les sites ci-joint.com ou mon-partage.fr et en collant le lien ici
Cordialement,
Voilà,
Cordialement,