mettez ceci dans un module dans votre projet VBA. Vous pouvez ensuite mettre en surbrillance une plage dans une feuille et exécuter le sous-élément à partir de l'élément de menu Outils> Macro> Macros pour colorier chaque cellule de la plage sélectionnée.
Public Sub ColorCells()
Dim cell, rng As Range
Dim color As Integer
Dim sheet As Worksheet
Application.ScreenUpdating = False
Application.StatusBar = "Coloring Cells"
Set rng = Application.Selection
Set sheet = Application.ActiveSheet
For Each cell In rng.cells
Select Case Trim(LCase(cell))
Case "blue"
color = 5
Case "red"
color = 3
Case "yellow"
color = 6
Case "green"
color = 4
Case "purple"
color = 7
Case "orange"
color = 46
Case Else
color = 0
End Select
sheet.Range(cell.Address).Interior.ColorIndex = color
Next cell
Application.ScreenUpdating = True
Application.StatusBar = "Ready"
End Sub
Si les utilisateurs entrent de nouveaux noms de couleur dans les cellules alors vous pouvez mettre cela dans le code de la feuille dans le projet VBA pour colorer les cellules en tant que utilisateur entre dans les noms de couleurs dans les cellules
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.cells.Count > 1 Then Exit Sub
Dim color As Integer
Select Case Trim(LCase(Target))
Case "blue"
color = 5
Case "red"
color = 3
Case "yellow"
color = 6
Case "green"
color = 4
Case "purple"
color = 7
Case "orange"
color = 46
Case Else
color = 0
End Select
Target.Interior.ColorIndex = color
End Sub
EDIT: Ajout de la fonction Trim autour de l'expression de l'instruction case à tester, afin que les espaces de début et de fin accidentels dans les cellules soient ignorés :)