Un exemple sur ton fichier :
La plage M3:M14 est nommée : MesCouleurs. Elle définit des valeurs de couleur (12) que tu peux désigner par leur rang dans la plage (1 à 12).
Tu crées une fonction MACOULEUR, assorti d'un argument Integer qui permettra de lui indiquer la couleur souhaitée (de 1 à 12).
Function MACOULEUR(clr As Integer)
MACOULEUR = [MesCouleurs].Cells(clr, 1).Value
End Function
Cette fonction doit être placée dans un module Standard.
Tu tapes par exemple : =MACOULEUR(12) dans une cellule, la formule renverra la valeur de couleur indiquée par ton tableau MesCouleurs.
Dans le module de la feuille tu définis un procédure d'évènement Change.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.HasFormula Then
If Target.Formula Like "*MACOULEUR*" Then
Target.Interior.Color = Target.Value
Target.ClearContents
End If
End If
End Sub
Cette procédure va se déclencher chaque fois qu'une cellule est modifiée dans la feuille. Donc quand tu tapes ta formule.
Elle teste si la cellule modifiée contient une formule. Si c'est le cas, elle vérifie que le texte de la formule contient "MACOULEUR".
Et si c'est le cas, elle colorie la cellule en appliquant la valeur de couleur que la fonction renvoie dans la cellule.
Et elle efface la cellule (tu peux ne pas l'effacer, mais une fois la cellule coloriée, la valeur de couleur ne sert plus).
Cordialement.