Bonjour a vous tous,


J'ai un besoin de pouvoir colorer tous les élément dont la valeur se répète plus qu'une fois. J'ai trouvé en fouillant le web un code utilisant le dico que je trouve génial mais je voudrais être en mesure de l'améliorer afin qu'il puisse répondre a mes besoins.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Sub couleur_sur_doublons()
  Dim m As Object, i As Long, z
  Set m = CreateObject("Scripting.Dictionary")
  For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
  z = Cells(i, 1)
  If Not m.Exists(z) Then m.Add z, z Else Cells(i, 1).Interior.ColorIndex = 3
  Next i
 End Sub
Présentement le code utilise une selection, je voudrais pouvoir définir une plage précise, donc la transformer en fonction dont l'argument est un range.. Je regarde les variables mais je bloque a la boucle. Je croyais pouvoir remplacer certaine choses mais il me manque le concecpt de seulement prendre une partie du range pour la couleur. (Je pensais abolir la variable i ...)


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Function couleur_sur_doublons_test(colonne_voulu As Range)
  
  Dim m As Object, i As Long, z
  Set m = CreateObject("Scripting.Dictionary")
'  For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
  z = Range(colonne_voulu & 2, colonne_voulu & LastLignUsedInColumn(colonne_voulu))
  If Not m.Exists(z) Then m.Add z, z Else Cells(i, 1).Interior.ColorIndex = 3
'  Next i
 End Function
Autre chose que j'interprete le code c'est que lorsqu'il rencontre une cellule, il peuple le dico, ce qui empeche de colorier la premiere apparence du doublons. Étant donné que je suis novice en dico, Est-ce qu'il y a une facon de peupler en premier le dico et non au fur et a mesure ???



merci de votre aide précieuse !!!