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.

4 réponses

  1. Bruno83200_6929 Messages postés 725 Date d'inscription   Statut Membre Dernière intervention   171
     

    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
  2. 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
    1. Bruno83200_6929 Messages postés 725 Date d'inscription   Statut Membre Dernière intervention   171
       

      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
  3. 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
    1. Bruno83200_6929 Messages postés 725 Date d'inscription   Statut Membre Dernière intervention   171
       

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