Formule en Excel sur base d'une cellule avec un fond coloré
Ppouille Messages postés 306 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je souhaiterais savoir comment procéder pour ceci :
Si ma cellule A1 a un fond d'une certaine couleur (vert par exemple), je souhaite que A2 affiche 1 ou 0 si A1 n'est pas vert.
Pouvez-vous m'aider svp ?
Je vous remercie.
- Formule en Excel sur base d'une cellule avec un fond coloré
- Formule si et excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Comment colorer une cellule excel avec une formule si - Guide
- Liste déroulante excel - Guide
- Formule somme excel ligne - Guide
4 réponses
Bonjour,
Oui, je peux t’aider — et tu touches là à une limite classique d’Excel.
Une formule Excel seule ne peut pas lire la couleur de fond d’une cellule.
Pour faire ça, il faut passer par une macro VBA (ou changer d’approche).
- Avec une macro VBA (la plus directe)
Objectif
Si A1 est verte → A2 = 1
Sinon → A2 = 0
Étapes
Appuie sur Alt + F11 (ouvre l’éditeur VBA)
Menu Insertion > Module
Colle ce code :
Function CouleurCellule(c As Range) As Long
CouleurCellule = c.Interior.Color
End Function
Ferme l’éditeur VBA
Utilisation dans A2
Supposons que le vert soit RGB(0,255,0) (vert standard) :
=SI(CouleurCellule(A1)=RGB(0;255;0);1;0)
Résultat :
A1 verte → 1
A1 autre couleur ou pas de couleur → 0
Important à savoir
La macro ne se recalculera pas automatiquement si tu changes juste la couleur.
Il faudra soit :
modifier la cellule (ex : taper un espace puis supprimer)
ou forcer le recalcul (F9)
ou gérer ça avec une macro événementielle (plus avancé)
- Sans VBA (souvent plus propre)
Si la couleur vient d’une règle de mise en forme conditionnelle, le mieux est de tester la condition elle-même, pas la couleur.
Exemple
Si A1 devient verte quand sa valeur est "OK" :
=SI(A1="OK";1;0)
Plus fiable
Pas de macro
Pas de problème de recalcul
Quelle solution choisir ?
Couleur mise manuellement → VBA
Couleur liée à une condition logique → formule classique (recommandé)
Mille mercis pour ton retour et ton aide.
Après éxécution, voici ce que j'obtiens en A2 => #NOM?
Serais-ce le code couleur qui ne serait pas bon ?
Merciiiiiii
L’erreur #NOM? signifie qu’Excel ne reconnaît pas une fonction.
Dans ton cas, ça veut dire que :
la fonction VBA CouleurCellule() n’est pas reconnue par Excel
Les causes les plus courantes sont :
1. Le fichier n’est pas enregistré en .xlsm
Les fonctions VBA ne fonctionnent pas dans un fichier .xlsx.
À vérifier absolument :
Fichier > Enregistrer sous
Type : Classeur Excel avec macros (*.xlsm)
Puis :
Fermer Excel
Rouvrir le fichier
Autoriser les macros
2. Le code n’est pas dans un module standard
Le code doit être dans :
Insertion > Module
Pas dans :
Feuil1
ThisWorkbook
Emplacement correct :
Modules
└─ Module1
3. Version Excel en français → séparateurs
Ta formule est correcte pour Excel FR, mais pour être sûr :
=SI(CouleurCellule(A1)=RGB(0;255;0);1;0)
(Si ton Excel était en anglais, ce serait IF et des ,)
Test rapide pour vérifier que la fonction est reconnue
Dans une cellule vide, tape simplement :
=CouleurCellule(A1)
Si tu vois un nombre (ex : 5296274), la fonction fonctionne
Si tu vois #NOM?, Excel ne “voit” toujours pas la macro
Comment être sûr du vert exact
Si la cellule est verte via mise en forme conditionnelle, la couleur peut ne pas être exactement RGB(0,255,0).
Teste ceci pour afficher la couleur exacte :
=CouleurCellule(A1)
Puis :
note le nombre obtenu
remplace la comparaison par ce nombre :
=SI(CouleurCellule(A1)=5296274;1;0)
Si tu veux un fonctionnement automatique
Si tu veux que A2 se mette à jour dès que la couleur change, je peux te fournir :
une macro événementielle
ou une solution 100 % sans couleur (plus robuste)
Dis-moi :
si la couleur est manuelle ou conditionnelle
ta version d’Excel (2016 / 2019 / 365…)
On finalise ça proprement
Je suis en excel 1997 (.xls)
En faisant un test couleur, le vert que j'ai (le vert brillant) a le code 4
Serais-ce ma version d'excel qui pose problème ?
merci bcp
Oui — c’est normal, et ce n’est pas un bug
C’est bien ta version d’Excel (1997 / .xls) qui explique ça.
Je te propose une macro 100 % compatible Excel 97 (.xls), basée sur ColorIndex (pas de RVB), puisque c’est ce que ta version comprend le mieux.
Tester si une cellule est verte (ColorIndex = 4)
Sub TesterVert()
If Selection.Interior.ColorIndex = 4 Then
MsgBox "La cellule est verte (ColorIndex 4)"
Else
MsgBox "La cellule n'est PAS verte"
End If
End Sub
Fonctionne avec :
Excel 97
Excel 2000 / 2003
Fichiers .xls
Mettre une cellule en vert (vert brillant Excel)
Sub MettreEnVert()
With Selection.Interior
.ColorIndex = 4 ' vert Excel
.Pattern = xlSolid
End With
End Sub
Macro automatique selon une valeur
(ex : si la cellule contient "OK", elle devient verte)
Sub CouleurSelonValeur()
Dim c As Range
For Each c In Selection
If c.Value = "OK" Then
c.Interior.ColorIndex = 4 ' vert
Else
c.Interior.ColorIndex = xlNone
End If
Next c
End Sub
Rappel important pour Excel 97
Utiliser ColorIndex, pas .Color = RGB(...)
Palette limitée à 56 couleurs
Très stable si on reste sur ces index