Couleurs dans une fonction IF (Microsoft Excel)
Steve aimerait créer une instruction IF (en utilisant la fonction de feuille de calcul) basée sur la couleur d’une cellule. Par exemple, si A1 a un remplissage vert, il veut renvoyer le mot « aller », s’il a un remplissage rouge, il veut renvoyer le mot « stop », et s’il s’agit d’une autre couleur renvoie le mot « ni l’un ni l’autre » . Steve préfère ne pas utiliser de macro pour ce faire.
Malheureusement, il n’y a aucun moyen d’accomplir cette tâche de manière acceptable sans utiliser de macros, sous une forme ou une autre. La solution non-macro la plus proche est de créer un nom qui détermine les couleurs, de cette manière:
-
Sélectionnez la cellule A1.
-
Cliquez sur Insérer | Nom | Définir. Excel affiche la boîte de dialogue Définir le nom.
-
Utilisez un nom tel que « ma couleur » (sans les guillemets).
-
Dans la zone Se réfère à, saisissez ce qui suit, sur une seule ligne:
-
Cliquez sur OK.
Avec ce nom défini, vous pouvez, dans n’importe quelle cellule, saisir ce qui suit:
=mycolor
Le résultat est que vous verrez du texte basé sur la couleur de la cellule dans laquelle vous placez cette formule. L’inconvénient de cette approche, bien sûr, est qu’elle ne vous permet pas de référencer des cellules autres que celle dans laquelle la formule est placée.
La solution consiste alors à utiliser une fonction définie par l’utilisateur, qui est (par définition) une macro. La macro peut vérifier la couleur avec laquelle une cellule est remplie, puis renvoyer une valeur. Par exemple, l’exemple suivant renvoie l’un des trois mots, en fonction de la couleur d’une cellule cible:
Function CheckColor1(range) If range.Interior.Color = RGB(256, 0, 0) Then CheckColor1 = "Stop" ElseIf range.Interior.Color = RGB(0, 256, 0) Then CheckColor1 = "Go" Else CheckColor1 = "Neither" End If End Function
Cette macro évalue les valeurs RVB des couleurs dans une cellule et renvoie une chaîne basée sur ces valeurs. Vous pouvez utiliser la fonction dans une cellule de cette manière:
=CheckColor1(B5)
Si vous préférez vérifier les couleurs d’index au lieu des couleurs RVB, la variation suivante fonctionnera:
Function CheckColor2(range) If range.Interior.ColorIndex = 3 Then CheckColor2 = "Stop" ElseIf range.Interior.ColorIndex = 4 Then CheckColor2 = "Go" Else CheckColor2 = "Neither" End If End Function
Que vous utilisiez l’approche RVB ou l’approche d’index de couleur, vous voudrez vous assurer que les valeurs utilisées dans les macros reflètent les valeurs réelles utilisées pour les couleurs dans les cellules que vous testez. En d’autres termes, Excel vous permet d’utiliser différentes nuances de vert et de rouge, vous voudrez donc vous assurer que les valeurs RVB et les valeurs d’index de couleur utilisées dans les macros correspondent à celles utilisées par les nuances de couleur dans vos cellules.
Une façon de le faire est d’utiliser une macro très simple qui ne fait rien d’autre que renvoyer une valeur d’index de couleur:
Function GetFillColor(Rng As Range) As Long GetFillColor = Rng.Interior.ColorIndex End Function
Maintenant, dans votre feuille de calcul, vous pouvez utiliser ce qui suit:
=GetFillColor(B5)
Le résultat est que la valeur d’index de couleur de la cellule B5 est affichée. En supposant que la cellule B5 est formatée en utilisant l’une des couleurs attendues (rouge ou vert), vous pouvez rebrancher la valeur d’index dans les macros précédentes pour obtenir les résultats souhaités. Cependant, vous pouvez simplement ignorer cette étape et vous fier à la valeur renvoyée par GetFillColor pour assembler une formule IF, de cette manière:
=IF(GetFillColor(B5)=4,"Go", IF(GetFillColor(B5)=3,"Stop", "Neither"))
Vous voudrez garder à l’esprit que ces fonctions (que vous regardiez les valeurs de couleur RVB ou les valeurs d’index de couleur) examinent le formatage explicite d’une cellule. Ils ne prennent en compte aucune mise en forme implicite, telle que celle appliquée via la mise en forme conditionnelle.
Pour d’autres bonnes idées, formules et fonctions sur le travail avec les couleurs, reportez-vous à cette page sur le site Web de Chip Pearson:
http://www.cpearson.com/excel/colors.aspx
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (10780) s’applique à Microsoft Excel 2007 et 2010. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:
link: / excel-Colors_in_an_IF_Function [Couleurs dans une fonction IF]
.