Re-bonjour,
Je présume que tu as adapté une partie du code ... sans être certain de ce que tu faisais?
Ça ressemble assez à ce que Jacques Boisgontier propose sur son site (si c'est là que tu as trouvé le code, l'usage veut qu'on cite ses sources)
Dans une première boucle, tu "garnis" un objet "Dictionary" avec le contenu de la colonne B.
Dans une seconde boucle, tu cherches la position -parmi les clés du Dictionary- de chaque valeur figurant ... en colonne A il est donc assez normal que tu obtiennes une erreur!
J'ai par contre été surpris de découvrir (d'autres le savaient sans doute) que le traitement de chaînes de caractères de plus de 250 caractères posait problème ... j'ai donc dû adapter le code, moi aussi!
Ceci étant, avec 722 valeurs uniques, il y a tout de même des couleurs qui reviennent un certain nombre de fois (parmi les 30 du tableau). Par ailleurs, je ne sais pas toi, mais une police noire sur un remplissage noir ... j'ai un peu de mal à distinguer le texte Il y a sans doute, dans les index de couleurs des résultats fort similaires, voire identiques.
Teste ce code:
Sub GroupColor()
couleurs = Array(1, 3, 4, 6, 7, 8, 14, 15, 17, 20, 22, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 50, 53)
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("B2", [b65000].End(xlUp))
If c <> "" Then mondico.Item(Left(c.Value, 250)) = mondico.Item(Left(c.Value, 250)) + 1
Next c
For Each c In Range("b2", [b65000].End(xlUp))
If c <> "" Then
nocoul = (Application.Match(Left(c.Value, 250), mondico.keys, 0)) Mod UBound(couleurs)
If mondico.Item(Left(c.Value, 250)) > 1 Then c.Interior.ColorIndex = couleurs(nocoul)
End If
Next c
End Sub