Astuce VBA : couleur d'une cellule avec une MFC
Si vous cherchez à récupérer les couleurs d'une cellule de manière classique, vous obtiendrez les couleurs propres à la cellule, en ignorant toute mise en forme conditionnelle.
Pour récupérer la couleur affichée (en tenant compte des MFC), il vous suffit d'ajouter DisplayFormat à votre code.
Exemple d'utilisation
Dans le tableau suivant, les cellules sont colorées par mise en forme conditionnelle :
Sans tenir compte de la MFC
Le code va copier ici la couleur de fond et le numéro de couleur des cellules B2 et B3 dans 2 autres cellules :
Sub exemple()
'Couleur de fond
Range("B10").Interior.Color = Range("B2").Interior.Color
Range("B11").Interior.Color = Range("B3").Interior.Color
'Numéro de couleur
Range("B10") = Range("B2").Interior.Color
Range("B11") = Range("B3").Interior.Color
End Sub
Vous pouvez remarquer que la couleur appliquée par la MFC a été ignorée par ce code :
En tenant compte de la MFC
Pour tenir compte de la couleur affichée (et donc de la MFC), ajoutez DisplayFormat :
Sub exemple()
'Couleur de fond
Range("B10").Interior.Color = Range("B2").DisplayFormat.Interior.Color
Range("B11").Interior.Color = Range("B3").DisplayFormat.Interior.Color
'Numéro de couleur
Range("B10") = Range("B2").DisplayFormat.Interior.Color
Range("B11") = Range("B3").DisplayFormat.Interior.Color
End Sub
Cette fois-ci c'est bien la couleur affichée qui a été récupérée :
En cas de besoin, vous pouvez télécharger le fichier Excel de cet exemple : couleur-mfc.xlsm
Pour tenir compte de la couleur affichée dans une fonction personnalisée à insérer sur une feuille Excel, il existe une astuce : Fonctions de couleur et MFC