Re,
Bonjour Jean-Paul, merci pour tes remarques, je ne pratique plus guère, je suis un peu rouillé et loin d'être un pro
@Augusto, évite les MP, tu te prives de réponses plus pertinentes que la mienne, néanmoins voici une proposition de code pour le fichier que tu m'as posté:
Option Explicit
Sub Colorier_ref()
Dim c As Range '......déclaration de c(cellule)
Dim couleurs '........déclaration du tableau couleurs
Dim mondico As Object 'déclare le dictionnaire dico
Dim nocoul
Dim dl As Long
' Ce code colore chaque groupe
' les couleurs choisies sont toutes des couleurs claires pour permettre _
de lire facilement les données malgré les fonds des cellules coloriés
couleurs = Array(4, 8, 15, 17, 19, 20, 22, 24, 26, 27, 28, 33, 34, 35, 36, _
37, 38, 39, 40, 42, 43, 44, 45, 46, , 48, 50) 'tableau contenant les couleurs
With Sheets("Stock Par Région") '..............................agit sur cette feuille uniquement
dl = .Range("A" & Rows.Count).End(xlUp).Row '.................dernière ligne de la feuille colonne A
Set mondico = CreateObject("Scripting.Dictionary") '..........définit le dictionnaire
MsgBox dl
Application.ScreenUpdating = False '..........................désactive le rafraichissment de l'écran
For Each c In .Range("C4:C" & dl) '...........................boucle sur chaque cellule de la colonne C
If c <> "" Then mondico.Item(c.Value) = mondico.Item(c.Value) + 1 'si c <> vide, on l'ajoute au dico
Next c
For Each c In .Range("C4:C" & dl) 'boucle sur chaque cellule de la colonne C
'si c <>"" ,on définit la couleur en fonction de la correspondance de c dans le tableau de couleurs
If c <> "" Then nocoul = (Application.Match(c.Value, mondico.keys, 0)) Mod UBound(couleurs)
c.EntireRow.Resize(, 7).Interior.ColorIndex = couleurs(nocoul) 'on colorie les cellules (7 colonnes, à adapter)
'le changement de couleur s'effectuera lorsque la valeur en colonne D changera si vide, on conserve la couleur
Next c
End With
End Sub
Cordialement,