1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Sub Doublon()
Dim mondico As Object, temp As String
Dim j As Long, couleur As Long
Set mondico = CreateObject("Scripting.Dictionary") 'on crée un dictionnaire
For j = 1 To 10 Step 3
For i = 2 To Cells(1, j).End(xlDown).Row 'on parcourt toutes données
Randomize
couleur = RGB(255, 255, 255)
If Not mondico.exists(Cells(i, j).Value) And Cells(i, j).Value <> "" Then 'si l'ingrédient n'existe pas encore dans le dico c'est qu'on ne l'a jamais croisé donc pas double
mondico.Add (Cells(i, j).Value), Cells(i, j).Address 'on stock l'adresse de la cellule pour la retrouver par la suite
Else
If Not IsNumeric(mondico(Cells(i, j).Value)) Then
couleur = Val(RGB(100 + (Rnd * 154), 100 + (Rnd * 150), 100 + (Rnd * 144))) ' on mixe la couleur au hasard
Range(mondico(Cells(i, j).Value)).Interior.Color = couleur ' on applique la couleur a la cellule dont l'adresse est dans l'item du dico
mondico(Cells(i, j).Value) = couleur ' on remplace l'ancienne adresse dans l'item du dico par la couleur
End If
Cells(i, j).Interior.Color = mondico(Cells(i, j).Value) ' et enfin on applique la couleur a l'occurrence en cours avec la couleur de l'item dico correspondant a la valeur de la cellule
End If
Next i
Next j
Set mondico = Nothing 'on oublie pas de libérer la mémoire
End Sub |
Partager