VBA - Fonction qui retourne la couleur active d'une MFC

Avec la fonction de la démo, deux valeurs peuvent êtres retournées.
- Mode = 0 : retourne la valeur de Interior.ColorIndex
- Mode = 1 : retourne la valeur de Interior.Color
Mais avec quelque modifications toutes les autres propriétés peuvent êtres renvoyées.
Public Function CouleurMFC(RG As Range, Optional Mode As Byte = 0) As Variant Dim e As Long, i As Byte, LoTest As Boolean Dim LoMFC As FormatCondition Application.Volatile 'boucle sur le nombre de condition(s) 'Si pas de MFC .FormatConditions.Count renvoi 0 For i = 1 To RG.FormatConditions.Count Set LoMFC = RG.FormatConditions(i) If LoMFC.Type = xlCellValue Then 'tester le type de la formule entrée Select Case LoMFC.Operator Case xlEqual LoTest = RG = Evaluate(LoMFC.Formula1) Case xlNotEqual LoTest = RG <> Evaluate(LoMFC.Formula1) Case xlGreater LoTest = RG > Evaluate(LoMFC.Formula1) Case xlGreaterEqual LoTest = RG >= Evaluate(LoMFC.Formula1) Case xlLess LoTest = RG < Evaluate(LoMFC.Formula1) Case xlLessEqual LoTest = RG <= Evaluate(LoMFC.Formula1) Case xlNotBetween LoTest = (RG < Evaluate(LoMFC.Formula1) Or RG > Evaluate(LoMFC.Formula2)) Case xlBetween LoTest = (RG >= Evaluate(LoMFC.Formula1)) And (RG <= Evaluate(LoMFC.Formula2)) End Select If LoTest Then 'Peu ajouter d'autre format si nécessaire, 'comme la bordure, la police etc.. Select Case Mode Case 0 CouleurMFC = LoMFC.Interior.ColorIndex Case 1 CouleurMFC = LoMFC.Interior.Color End Select Exit Function End If End If Next i CouleurMFC = 0 End Function
La formule dans le tableur
=CouleurMFC(A2)
La MFC peut être avec une valeur directe ou une valeur indirecte (le contenu d'une autre cellule)
- Ex 1 : >1 and <10
- Ex 2 : >=D10 and <=E10
Ce document intitulé « VBA - Fonction qui retourne la couleur active d'une MFC » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.