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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
Option Explicit
Option Base 1
Sub Comparaison()
'Variables
'Compteurs
Dim i As Double
'Adresse
Dim LastRowA As Double
Dim LastRowB As Double
Dim RowCompare As Double
Dim LastRowCompare As Double
'Tableaux
Dim ArrayA As Variant
Dim ArrayB As Variant
Dim ArrayCompare As Variant
'Collections
Dim CollectA As New Collection
Dim CollectB As New Collection
Dim CollectCompare As New Collection
'Divers
Dim Var As String
'Chargement des Données des feuilles "FichierA" et "FichierB"
LastRowA = Sheets("FichierA").Cells(1, 1).End(xlDown).Row
LastRowB = Sheets("FichierB").Cells(1, 1).End(xlDown).Row
ArrayA = Sheets("FichierA").Range(Sheets("FichierA").Cells(1, 1), Sheets("FichierA").Cells(LastRowA, 2))
ArrayB = Sheets("FichierB").Range(Sheets("FichierB").Cells(1, 1), Sheets("FichierB").Cells(LastRowB, 2))
'Charge les Numéros de commande dans les collections
'i commence à 2 si tu as tes en-têtes (N°cde,Références) sinon met le à 1
'Fichier A
For i = 2 To LastRowA
CollectA.Add Item:=ArrayA(i, 1), Key:=CStr(ArrayA(i, 1))
Next i
'Fichier B
For i = 2 To LastRowB
CollectB.Add Item:=ArrayB(i, 1), Key:=CStr(ArrayB(i, 1))
Next i
'Isole les Données du Fichier A qui sont identiques au Fichier B
ReDim ArrayCompare(LastRowA, 2)
RowCompare = 1
On Error Resume Next
For i = 1 To LastRowA
Var = ""
Var = CollectB.Item(CStr(CollectA.Item(i)))
If Var <> "" Then
ArrayCompare(RowCompare, 1) = CollectA.Item(i)
RowCompare = RowCompare + 1
End If
Next i
On Error GoTo 0
LastRowCompare = RowCompare - 1
'Charge les Références dans les collections
Set CollectA = New Collection
Set CollectB = New Collection
'Fichier A
For i = 2 To LastRowA
CollectA.Add Item:=ArrayA(i, 2), Key:=CStr(ArrayA(i, 1))
Next i
'Fichier B
For i = 2 To LastRowB
CollectB.Add Item:=ArrayB(i, 2), Key:=CStr(ArrayB(i, 1))
Next i
'Données Identiques des Fichier A et B
For i = 1 To LastRowCompare
CollectCompare.Add Item:=ArrayCompare(i, 1), Key:=CStr(ArrayCompare(i, 1))
Next i
'Analyse des Références
For i = 1 To LastRowCompare
If CollectA.Item(CStr(CollectCompare(i))) = CollectB.Item(CStr(CollectCompare(i))) Then
ArrayCompare(i, 2) = "OK"
Else
ArrayCompare(i, 2) = "PROBLEME"
End If
Next i
'Ecriture de la comparaison sur la feuille "Comparaison
Sheets("Comparaison").Range(Sheets("Comparaison").Cells(2, 1), Sheets("Comparaison").Cells(LastRowCompare + 1, 2)) = ArrayCompare
'Met de la couleur
For i = 2 To LastRowCompare + 1
If Sheets("Comparaison").Cells(i, 2) = "PROBLEME" Then
Sheets("Comparaison").Cells(i, 2).Interior.Color = 255
ElseIf Sheets("Comparaison").Cells(i, 2) = "OK" Then
Sheets("Comparaison").Cells(i, 2).Interior.Color = 5287936
End If
Next i
End Sub |
Partager