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
| Sub Couleur()
Dim nbLignes As Long, Cnt As Long
Dim C As Range, Plage As Range
Dim strValeurs As String
nbLignes = Cells(Rows.Count, "N").End(xlUp).Row
Set Plage = Range("N5:Q" & nbLignes)
For Each C In Plage
If C.Value <> "" Then
'Si la valeur n'est pas trouvée, on la met dans une String
'en plus d'un index qui s'incrémente à chaque fois
'le tout séparés par un point-virgule qui va nous servir lors du Split
If Not strValeurs Like "*" & C.Value & "*" Then
strValeurs = strValeurs & C.Value & ";" & Cnt & ";"
Cnt = Cnt + 1
End If
End If
Next C
For Each C In Plage
If C.Value <> "" Then
C.Interior.ColorIndex = GetCouleur(C, strValeurs)
End If
Next C
End Sub
Function GetCouleur(C As Range, strValeurs As String) As Long
Dim I As Long
Dim arrCouleurs
Dim Tablo
'Tableau de couleur prédéfinies (ColorIndex)
arrCouleurs = Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
Tablo = Split(strValeurs, ";")
For I = 0 To UBound(Tablo) Step 2 'le 1e item est la valeur, le 2e est l'index de couleurs
If Tablo(I) = C.Value Then
GetCouleur = arrCouleurs(Tablo(I + 1))
Exit Function
End If
Next
End Function |
Partager