CouleurMFC si MFC repose sur formule

Bonjour,

Je souhaite compléter la fameuse fonction CouleurMFC() pour qu'elle prenne aussi en compte la MFC par formule.

J'ai donc écrit le code suivant qui évidemment ne fonctionne pas:

Public Function CouleurMFC(RG, 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
        ElseIf LoMFC.Type = xlExpression Then
            LoTest = Evaluate(LoMFC.Formula1)
        End If
        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
    Next i
    CouleurMFC = xlNone
End Function

Est-il possible d'évaluer la formule dans le cas où type=xlExpression?

Merci.

Bonjour AlainBo

Sauf erreur de ma part, cette question n'a jamais trouvée de réponse

En effet, si tu utilises une MFC exemple :

=ET($A1=1;$C1=1)

et que cette MFC à une portée de A1:A10

Pour la 1ère cellule, pas de souci on peut évaluer la formule,

mais comment l'évaluer pour les cellules suivantes, sachant que la formule est toujours la même

@+

Merci pour votre réponse.

Pas de bol!

Oui mais pourtant cela fonctionne dans les autres cas; xlEqual, etc... et le problème est bien le même?

Dans ces cas Excel est bien capable de faire évoluer l'adresse de la cellule non? Une MFC s'applique généralement à une étendue.

Je pensais que c'était parce que dans ce cas, LoMFC.formula1 commence par un "=". J'ai donc tenté de l'enlever mais Evaluate() échoue tout de même.

Je trouve quand même fort que depuis plus de 10 ans que l'on cherche une solution pour retourner la couleur d'une cellule définie par MFC, Microsoft n'ait pas apporté de réponse satisfaisante.

Car le fait de pouvoir le faire dans une Sub et afficher le résultat dans une MsgBox ne présente pas le moindre intérêt.

RE,

Oui mais pourtant cela fonctionne dans les autres cas; xlEqual, etc... et le problème est bien le même?

Dans ces cas Excel est bien capable de faire évoluer l'adresse de la cellule non? Une MFC s'applique généralement à une étendue.

Non le problème n'est pas le même

Dans le cas d'une valeur la fonction évalue le résultat de la fonction par apport à cette valeur, il n'y a aucune référence

Case xlEqual
LoTest = RG = Evaluate(LoMFC.Formula1)

RG = 1

LoMFC.Formula1 = "=1"

Evaluate(LoMFC.Formula1) = 1

1=1 = Vrai

Je pensais que c'était parce que dans ce cas, LoMFC.formula1 commence par un "=". J'ai donc tenté de l'enlever mais Evaluate() échoue tout de même.

Oui, mais ce n'est pas pour cette raison

Je trouve quand même fort que depuis plus de 10 ans que l'on cherche une solution pour retourner la couleur d'une cellule définie par MFC, Microsoft n'ait pas apporté de réponse satisfaisante.

Si cela existe : SOMME.SI.ENS()

Sauf qu'on utilise pas la couleur des cellules pour faire le total, mais les critères qui sont utilisés dans la MFC

La MFC, c'est du "décors"

@+

Re,

Ah, effectivement je n'avais pas pensé à cette fonction qui devrait le faire...

Donc j'ai essayé!

Et malgré la doc et quelques exemples trouvés sur le net, je n'arrive pas à la faire fonctionner.

Dans le fichier ci-joint je l'ai utilisée en N35 où je devrais retrouver 100% puisque D28 et E28 remplissent le critère.

Où ai-je donc foiré ???

3planning.xlsx (48.84 Ko)

Bonsoir,

S'agissant de plages de temps, on ne peut pas utiliser SOMME.SI.ENS()

Il faut utiliser un calcul matriciel

=SOMMEPROD((N$6>=$D$12:$D$34)*($E$12:$E$34>=N$6)*($H$12:$H$34))

@+

Ok, merci bien

Rechercher des sujets similaires à "couleurmfc mfc repose formule"