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
| Sub CompareReference()
Dim WB1 As Workbook
Dim WB2 As Workbook
Dim RG2 As Range
Dim Cel As Range
Dim LastLine1 As Single
Dim LastLine2 As Single
Dim I As Single
Dim MyDico As Object
Set WB1 = Workbooks("classeur1")
Set WB2 = Workbooks("classeur2")
'Définit les deux classeurs
With WB2.Worksheets("nomdefeuille")
LastLine2 = .Columns(1).Find("*", , , , xlByRows, xlPrevious).Row
'Calcul de la dernière ligne
Set RG2 = .Range(.Cells(3, 1), .Cells(LastLine2, 1))
End With
'Définit la plage de référence du classeur 2
Set MyDico = CreateObject("Scripting.Dictionary")
'Création du dictionnaire
For Each Cel In RG2
If MyDico.Exists(CStr(Cel.Value)) = False And Cel.Value <> "" Then
MyDico.Add CStr(Cel.Value), Cel.Value
End If
Next Cel
'Remplis le dico avec les référence du classeur 2
With WB1.Worksheets("nomdefeuille")
LastLine1 = .Columns(1).Find("*", , , , xlByRows, xlPrevious).Row
'Calcul de la dernière ligne
For I = LastLine1 To 1 Step -1
If MyDico.Exists(CStr(.Cells(I, 1).Value)) = True ' mettre false pour tester si valeur non présente
Then
'que faire si la valeur est présente dans le dico
Next I
End With
'On parcours les lignes une par une en commençant par la dernière.
'On regarde dans le Dico si les valeurs existent. Si elles existent, procédure à suivre
Set MyDico = Nothing
'On Libère la variable
End Sub |