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
| Sub ColorierEmployes()
Dim ws As Worksheet
Dim employe As String
Dim lastRow As Long
Dim lastCol As Long
Dim i As Long
Dim j As Long
Dim k As Long
Dim couleurs As Object
Dim couleur As Long
Dim tableauCouleurs As Variant
Set ws = ThisWorkbook.Sheets("Feuil1") 'Nom de la feuille contenant les données
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row 'Dernière ligne de la colonne "Code Employé"
Set couleurs = CreateObject("Scripting.Dictionary") 'Création d'un dictionnaire pour stocker les couleurs
tableauCouleurs = Array(RGB(255, 0, 0), RGB(0, 255, 0), RGB(0, 0, 255), RGB(255, 255, 0), RGB(255, 0, 255), RGB(0, 255, 255)) 'Tableau de couleurs prédéfinies (rouge, vert, bleu, jaune, magenta, cyan)
j = 0 'Compteur pour les couleurs
For i = 2 To lastRow 'Boucle pour parcourir chaque ligne (en commençant à la ligne 2 pour ignorer les en-têtes)
employe = ws.Cells(i, 1).Value 'Récupération du code employé
If Not couleurs.Exists(employe) Then 'Si le code employé n'a pas encore de couleur associée
couleur = tableauCouleurs(j Mod UBound(tableauCouleurs) + 1) 'Récupération de la couleur du tableau (en bouclant si nécessaire)
couleurs.Add employe, couleur 'Ajout de la couleur au dictionnaire pour ce code employé
j = j + 1 'Incrémentation du compteur pour les couleurs
Else 'Si le code employé a déjà une couleur associée
couleur = couleurs(employe) 'Récupération de la couleur associée à ce code employé
End If
lastCol = ws.Cells(i, ws.Columns.Count).End(xlToLeft).Column 'Dernière colonne contenant des données dans cette ligne
For k = 1 To lastCol 'Boucle pour parcourir chaque cellule jusqu'à la dernière colonne contenant des données
ws.Cells(i, k).Interior.Color = couleur 'Changement de la couleur de fond de cette cellule
Next k
Next i
End Sub |