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
| Sub Module2Compare()
Dim Kol As New Collection
Dim LastLig1 As Long, LastLig2 As Long, i As Long
Dim k As Byte
Dim c As Range, v As Range, w As Range
Dim Data1 As String, Data2 As String
Application.ScreenUpdating = False
With Sheets("Référentiel BAL")
.AutoFilterMode = False
LastLig2 = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LastLig2
On Error Resume Next
Kol.Add .Range("A" & i).Value, .Range("A" & i).Value
On Error GoTo 0
Next i
For i = 1 To Kol.Count
With Sheets("Envois")
.AutoFilterMode = False
LastLig1 = .Cells(Rows.Count, 1).End(xlUp).Row
End With
.Range("A1").AutoFilter field:=1, Criteria1:=Kol(i)
Set c = Sheets("Envois").Range("A1:A" & LastLig1).Find(Kol(i), lookat:=xlWhole)
If Not c Is Nothing Then
Sheets("Envois").Range("A1").AutoFilter field:=1, Criteria1:=Kol(i)
For Each v In .Range("A2:A" & LastLig2).SpecialCells(xlCellTypeVisible)
Data1 = vbNullString
For k = 1 To 12
Data1 = Data1 & "_" & .Cells(v.Row, k)
Next k
For Each w In Sheets("Envois").Range("A2:A" & LastLig1).SpecialCells(xlCellTypeVisible)
Data2 = vbNullString
For k = 1 To 12
Data2 = Data2 & "_" & Sheets("Envois").Cells(w.Row, k)
Next k
If Data1 = Data2 Then
.Range("A" & v.Row & ":C" & v.Row).Interior.ColorIndex = 4 'vert
Exit For
Else
.Range("A" & v.Row & ":C" & v.Row).Interior.ColorIndex = 8 'Cyan bleu
End If
Next w
Next v
Set c = Nothing
Else
.Range("A2:C" & LastLig2).SpecialCells(xlCellTypeVisible).Interior.ColorIndex = 22 'rose
.Range("A2:C" & LastLig2).SpecialCells(xlCellTypeVisible).Copy Sheets("Envois").Range("A" & LastLig1 + 1)
End If
Next i
.AutoFilterMode = False
End With
Sheets("Envois").AutoFilterMode = False
End Sub |
Partager