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 :

excel mfc couleur cellule

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 :

excel vba couleur cellule mfc

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 :

excel vba couleur cellule mise en forme conditionnelle mfc

Le fichier Excel de cet exemple est disponible ici : 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