J'essaye de faire en sorte qu'une cellule remplisse une fonction basée sur la couleur très claire d'une cellule.
Voici la fonction que j'ai actuellement:
=IF(A6.Interior.ColorIndex=6,IF(ROUNDDOWN(IF(M6<3,0,IF(M6<5,1,IF(M6<10,3,(M6/5)+2))),0)=0,0,ROUNDDOWN(IF(M6<3,0,IF(M6<5,1,IF(M6<10,2,(M6/5)+2))),0)),IF(ROUNDDOWN(IF(M6<7,0,IF(M6<10,1,M6/5)),0)=0,0,ROUNDDOWN(IF(M6<7,0,IF(M6<10,1,M6/5)),0)))
Pour que vous n'ayez pas à lire tout cela, voici un exemple plus simple.
=IF(A6.Interior.ColorIndex=6,"True","False")
Tout ce qui lui revient est #NAME? . Est-il possible de faire cela comme une fonction dans une cellule ou est-ce que VBA est absolument nécessaire?
Merci,
Jordan
Vous ne pouvez pas utiliser VBA (Interior.ColorIndex
) dans une formule, raison pour laquelle vous recevez l'erreur.
Il n'est pas possible de faire cela sans VBA.
Function YellowIt(rng As Range) As Boolean
If rng.Interior.ColorIndex = 6 Then
YellowIt = True
Else
YellowIt = False
End If
End Function
Cependant, je ne le recommande pas: ce n'est pas la façon dont les fonctions VBA définies par l'utilisateur (UDF) sont destinées à être utilisées. Ils doivent refléter le comportement des fonctions Excel, qui ne peuvent pas lire le formatage des couleurs d'une cellule. (Cette fonction pourrait ne pas fonctionner dans une version ultérieure d'Excel.)
Il vaut bien mieux que vous fondiez une formule sur la condition originale (décision) qui rend la cellule jaune en premier lieu. Vous pouvez également exécuter une procédure Sub pour renseigner les valeurs True ou False (bien que ces valeurs ne soient bien entendu plus liées au formatage de la cellule d'origine).
Je ne crois pas qu'il y ait un moyen d'obtenir la couleur d'une cellule à partir d'une formule. Le plus proche que vous puissiez obtenir est la formule CELL
, mais (du moins à partir d'Excel 2003), elle ne renvoie pas la couleur de la cellule.
Ce serait assez facile à implémenter avec VBA:
Public Function myColor(r As Range) As Integer
myColor = r.Interior.ColorIndex
End Function
Puis dans la feuille de travail:
=mycolor(A1)
Bien que cela ne réponde pas directement à votre question, vous pouvez trier vos données en fonction de la couleur de la cellule dans Excel (ce qui facilite la tâche pour étiqueter tous les enregistrements avec une couleur particulière de la même manière et donc de conditionner cette étiquette).
Pour ce faire, dans Excel 2010, accédez à Données -> Trier -> Trier sur "Couleur de la cellule".
La seule solution facile que j’ai appliquée consiste à recréer la condition principale qui utilise les faits saillants comme condition IF
et à l’utiliser dans la formule IF
. Quelque chose comme ça. En fonction de la condition de surbrillance, la formule changera mais je pense que cela devrait être recréé (par exemple, surbrillance supérieure à 20).
=IF(B3>20,(B3)," ")
J'ai eu un problème similaire dans lequel je devais uniquement afficher une valeur provenant d'une autre cellule Excel si la police était noire. J'ai créé cette fonction: `Option Explicit
Fonction blackFont (r As Range) As Boolean Si r.Font.Color = 0 Alors blackFont = True Autre blackFont = False Fin si
Fonction de fin `
J'ai dans ma cellule cette formule: =IF(blackFont(Y51),Y51," ")
Cela a bien fonctionné pour moi de tester une police noire et d'afficher la valeur dans la cellule Y51 si elle avait une police noire.