Couleur par MFC non reconnue par VBA

gusgus13

XLDnaute Nouveau
Bonjour,

J'ai regardé beaucoup de forums pour tenter de résoudre mon problème et essayer nombreuses solutions inscrites dans les forums mais je n'y arrive toujours pas. Mes connaissances et compétences en VBA sont assez primaires mais je commence doucement à m'y adapter.

Je vous demande donc votre aide pour ce problème.

J'ai réalisé une MFC (par Format / Mise en forme conditionnelle ...) sur une cellule. Cette cellule devient rouge lorsque sa valeur est supérieure à 0.2 et devient verte lorsqu'elle est inférieure ou égale à 0.2

Lorsque la cellule est rouge apparaît un Userform (Userform1) qui indique aux opérateurs que leur résultats ne sont pas bons.

Lorsque la cellule est verte apparaît un autre Userform (Userform2) qui indique aux opérateurs que leur résultats sont bons.

J'ai déjà fait tout ce qui est userform. Malheureusement, j'ai vu que VBA ne reconnait pas une couleur par MFC. Mes Userfoms ne s'affichent donc pas .

Auriez-vous une solution à mon problème? Je pense qu'il existe une formule ou un moyen mais je n'y arrive pas...Si il y a besoin d'autres informations je vous les donnerai

J'espère avoir été assez claire...

Je vous remercie d'avance !

Cordialement.
 

gusgus13

XLDnaute Nouveau
Re : Couleur par MFC non reconnue par VBA

Rebonjour,

Oui j'ai vu sur internet cette programmation : (si c'est bien de cela que vous parlez)

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


Mais mes connaissances en vba sont un peu limitées... je sais que ce qui est en rouge ne me concerne pas car il n'est question ici que de la couleur du fond de la cellule.


Pourrais-tu me donner d'autres indices s'il te plaît?? ou quelqu'un d'autres?
 

kjin

XLDnaute Barbatruc
Re : Couleur par MFC non reconnue par VBA

Bonjour, salut Pierrot :),
Oui j'ai vu sur internet cette programmation : (si c'est bien de cela que vous parlez)
Je pense qu'il y a méprise, il suffit simplement de tester les formules de tes MFC pour afficher tes formulaires, on doit donc retrouver les mêmes formules dans ton code VBA
Et j'ajoute que si tu dois tester tes formules en VBA autant y inclure les MFC également

Edit : le forum te permet de joindre un fichier exemple...

A+
kjin
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Couleur par MFC non reconnue par VBA

Bonjour Gugus, Pierrot, bonjour le forum,

J'imagine que tu utilises la macro événementielle Change pour afficher les UserForms. Donc comme le suggérait Pierrot il ne te faut pas tenir compte de la couleur de la cellule mais de la condition de la MFC. Ton code doit spécifier :
Code:
If Range(Ta_Cellule).Value > 0.2 then
     UserForm1.Show
Else
     UserForm2.Show
End If

[Édition]
Salut Kjin on s'est croisés
 

Misange

XLDnaute Barbatruc
Re : Couleur par MFC non reconnue par VBA

Bonjour

en complément aux réponses apportées :
La couleur mise par une mfec na pas un indice identique à ce que tu obtiens en faisant ton coloriage à la main. Ca se complique du reste encore un peu ces histoires de couleurs quand on passe des versions sans ruban aux versions avec.
Laurent Longre avait pondu une macro (qui est sur excelabo) pour récupérer la couleur de la MEFC mais c'est de son propre aveu plus par amusement que par utilité qu'il l'avait pondue.
au lieu de dire
si ma cellule répond à telle condition alors bleu
puis
pour toutes les cellules bleues faire ceci

il est autrement plus logique de dire
pour toutes les cellules répondant à telle condition faire ceci.

Récupérer la couleur d'une cellule pour appliquer un traitement n'a de sens que si la couleur a été mise à la main et que la logique derrière la mise en couleur n'est pas possible à mettre en formule.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 501
dernier inscrit
talebafia