1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| Dim wsh1 As Worksheet, wsh2 As Worksheet
Dim ligne1 As Long, LastLig1 As Long, ligne2 As Long, LastLig2 As Long, LigneCopie As Long, i As Long
Dim C As Range
Sub EssaiComparaison()
Set wsh1 = Worksheets("ImportReporting")
Set wsh2 = Worksheets("ImportDonnées")
LastLig1 = wsh1.Cells(Rows.Count, "A").End(xlUp).Row 'comptage des lignes feuille ImportReporting
LastLig2 = wsh2.Cells(Rows.Count, "A").End(xlUp).Row 'comptage des lignes feuille ImportDonnées
'Pour ligne2 = 2 jusqu'à LastLig2 denière ligne de la feuille importDonnées
For ligne2 = 2 To LastLig2 'définir quel est la ligne de départ
'recherche dans la colonne A de la feuille ImportReporting la valeur de la cellule "ligne2,"A" dans la feuille importDonnées
With Worksheets("ImportReporting").Columns(1)
Set C = .Find(wsh2.Cells(ligne2, "A"), LookIn:=xlValues)
' si l'occurence n'est pas trouvée
If C Is Nothing Then
' Copie les données de ImportDonnées sur la dernière ligne +1 de la feuille ImportReporting
LastLig1 = LastLig1 + 1
wsh1.Range("A" & LastLig1, "R" & LastLig1).Value = wsh2.Range("A" & ligne2, "R" & ligne2).Value
'Sinon
Else
FirstAddress = C.Address ' on retient l'adresse de la première occurence trouvée
i = C.Row 'on défini le numéro de ligne de cette adresse
'si la valeur de la colonne B de ImportReporting est différente de la valeur de la colonne "B" de ImportDonnées alors
If wsh1.Cells(i, "B").Value <> wsh2.Cells(ligne2, "B").Value Then
Do
'Recherche prochaine occurence
Set C = .FindNext(C)
i = C.Row
'Boucle jusqu'à ce qu'occurence trouvée ET colonnes B de ImportDonnées et ImportReporting soient égales
Loop Until Not C Is Nothing And C.Address <> FirstAddress & wsh1.Cells(i, "B").Value = wsh2.Cells(ligne2, "B").Value
i = C.Row
' copie sur ImportReporting les valeurs impotDonnées
wsh1.Range("B" & i, "R" & i).Value = wsh2.Range("B" & ligne2, "R" & ligne2).Value
'MsgBox ("Occurence trouvée et condition remplie, Ligne mise à jour" & C.Row)
'Exit Do
'Sinon La première occurence trouvée était la bonne, mise à jour des données
Else
' Copie les données de ImportDonnées sur la dernière ligne +1 de la feuille ImportReporting
LastLig1 = LastLig1 + 1
wsh1.Range("A" & LastLig1, "R" & LastLig1).Value = wsh2.Range("A" & ligne2, "R" & ligne2).Value
End If
End If
End With
Set C = Nothing
Next ligne2
End Sub |
Partager