Re-,
tu avais 8 erreurs dans la colonne A..
Lignes : 765, 1357, 3700, 4767, 4773, 7735, 7736 et 15981
Pour 6, j'ai remplacé par la valeur de la cellule du dessus
Par contre, pour A7735 et A7736, comme la Ref est unique, j'ai mis "Cousin" (je ne savais pas quoi mettre....)
Avec ce code, 9163 Références, temps de traitement de ton fichier : un peu plus de 6 secondes (sur mon PC)
J'ai mis en début de code :
t = Timer
et en fin de code :
MsgBox Timer - t
pour calculer le temps de traitement.... Tu peux bien évidemment les enlever
Le code :
Sub References()
Dim Cel As Range
Dim Concat As String
Dim NbLig As Long, I As Long
Dim Maquettes As Object, Maquettes2 As Object
Application.ScreenUpdating = False
t = Timer
Set Maquettes = CreateObject("Scripting.Dictionary")
Range("E2:G" & [E65000].End(xlUp).Row + 1).Clear
For Each Cel In Range("C2:C" & [C65000].End(xlUp).Row)
Concat = Cel.Value & ";" & Cel.Offset(0, -2).Value
If Not Maquettes.Exists(Concat) Then
Maquettes.Add Concat, 1
Else
Maquettes.Item(Concat) = Maquettes.Item(Concat) + 1
End If
Next Cel
NbLig = Maquettes.Count
[H1] = NbLig
[E2].Resize(NbLig, 1).Value = Application.Transpose(Maquettes.Keys)
Range("E2:E" & NbLig + 1).TextToColumns Destination:=Range("E2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, Semicolon:=True
[G2].Resize(NbLig, 1).Value = Application.Transpose(Maquettes.Items)
Range("E1:G" & NbLig + 1).Sort Key1:=Range("E2"), Order1:=xlAscending, Key2:=Range("G2") _
, Order2:=xlAscending, Header:=xlYes
Set Maquettes2 = CreateObject("Scripting.Dictionary")
For I = NbLig + 1 To 2 Step -1
If Not Maquettes2.Exists(Cells(I, 5).Value) Then
Maquettes2.Add Cells(I, 5).Value, Cells(I, 5).Value
Else
If Cells(I + 1, 7).Value <> Cells(I, 7).Value Then
Cells(I, 5).Resize(1, 3).Delete Shift:=xlUp
Else
Cells(I, 5).Resize(2, 3).Interior.ColorIndex = 4
End If
End If
Next I
Columns("E:G").HorizontalAlignment = xlCenter
MsgBox Timer - t
End Sub
PS, je pense que l'heure des croissants est passée...