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   -  
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.

A voir également:

4 réponses

Bruno83200_6929 Messages postés 688 Date d'inscription   Statut Membre Dernière intervention   161
 

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é)


1
Ppouille Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   3
 

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

0
Bruno83200_6929 Messages postés 688 Date d'inscription   Statut Membre Dernière intervention   161
 

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

0
Ppouille Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   3
 

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

0
Bruno83200_6929 Messages postés 688 Date d'inscription   Statut Membre Dernière intervention   161
 

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

0
Ppouille Messages postés 306 Date d'inscription   Statut Membre Dernière intervention   3
 

Désolé mais là je suis perdu :-)

J'en reviens à ma demande initiale => si A1 à le fond vert brillant (4), A2 affiche 1, si non 0.

Tout cela en excel 97.

Merciiiiiiii

0