Bonjour à tous,
Je sais ce que vous allez me dire... une MFC c'est le papier peint d'Excel car la couleur renvoyé si on teste seulement la Cellule va renvoyer 0.
J'ai beaucoup cherché, lu des tas de solutions qui ne fonctionnent pas, enfin du moins si je l'applique à mon projet .
Je crée ces MFD par macro avec VBA comme ceci :
Si un nombre en Cellule N j'affiche une MFC avec la couleur correspondante en Cellule O, je voudrais connaitre son numéro de couleur excel en Cellule P.
Non non non je ne suis pas Sadomasochisme ! car je veux tester si la couleur est rouge soit 3 ( les autres ne m’intéresse pas ) dans une ou plusieurs Cellule de la colonne P je récupère les lignes que j'incrémente dans une listebox.
Je sais mon chère Job75 que vous avez posé la question fut un temps sur ce précieux forum et que vous aviez engagé un fil trépident qui hélas ne m'a pas fait avancé ( je fais des recherches hihihi )
J'ai trouvé aussi ceci :
en rajoutant dans la feuille ou il y a Les MFC la formule suivante :
mais hélas la valeur renvoyé est 0 la tête à toto !
J'ai beaucoup cherché est j'ai vue que des solutions existent mais ne sont pas généralistes et fonctionnent que dans certains cas de MFC.
J'ai lu aussi de rechercher la formule dans O mais je n'arrive pas le synthétiser...
en gros chercher si la formule dans O est bien :
faire une boucle dans la Colonne O jusqu'à la dernière Cellule remplie et faire une conditionnelle, si formule présente alors je colore en rouge la Cellule en P ( ça je sais faire ) mais tester si la formule est là et si elle correspond là j'ai du mal !
Car la valeur retourné si je cherche si il y a une formule dans la Cellule est :
par exemple donc forcément si je compare les deux je tombe sur else et end if.
Car ?????? est variable et c'est à cause de cela que je n'arrive pas à valider si oui ou non la condition est vraie !
Sur cette piste je suis pas loin mais pas encore assez près du succès hélas !
Bref je suis un peu perdu et toute aide sera la bienvenue !
Merci par avance à vous tous
Je sais ce que vous allez me dire... une MFC c'est le papier peint d'Excel car la couleur renvoyé si on teste seulement la Cellule va renvoyer 0.
J'ai beaucoup cherché, lu des tas de solutions qui ne fonctionnent pas, enfin du moins si je l'applique à mon projet .
Je crée ces MFD par macro avec VBA comme ceci :
Code:
Range("O" & df).Select
With ThisWorkbook.Worksheets(1).Range("O" & df)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=ET(N" & df & "<=" & s & ")"
.FormatConditions(1).Interior.ColorIndex = 3
End With
With ThisWorkbook.Worksheets(1).Range("O" & df)
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=ET(N" & df & " >= " & d & ";N" & df & "<" & X & ")"
.FormatConditions(2).Interior.ColorIndex = 46
End With
With ThisWorkbook.Worksheets(1).Range("O" & df)
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=ET(N" & df & " >= " & X & ")"
.FormatConditions(3).Interior.ColorIndex = 4
End With
With ThisWorkbook.Worksheets(1).Range("O" & df)
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=ET(N" & df & "=" & e & ")"
.FormatConditions(4).Interior.ColorIndex = 1
End With
Si un nombre en Cellule N j'affiche une MFC avec la couleur correspondante en Cellule O, je voudrais connaitre son numéro de couleur excel en Cellule P.
Non non non je ne suis pas Sadomasochisme ! car je veux tester si la couleur est rouge soit 3 ( les autres ne m’intéresse pas ) dans une ou plusieurs Cellule de la colonne P je récupère les lignes que j'incrémente dans une listebox.
Je sais mon chère Job75 que vous avez posé la question fut un temps sur ce précieux forum et que vous aviez engagé un fil trépident qui hélas ne m'a pas fait avancé ( je fais des recherches hihihi )
J'ai trouvé aussi ceci :
Code:
Option Explicit
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
en rajoutant dans la feuille ou il y a Les MFC la formule suivante :
Code:
=CouleurMFC(O17;1)
mais hélas la valeur renvoyé est 0 la tête à toto !
J'ai beaucoup cherché est j'ai vue que des solutions existent mais ne sont pas généralistes et fonctionnent que dans certains cas de MFC.
J'ai lu aussi de rechercher la formule dans O mais je n'arrive pas le synthétiser...
en gros chercher si la formule dans O est bien :
Code:
=ET(N" & df & "<=" & s & ")
faire une boucle dans la Colonne O jusqu'à la dernière Cellule remplie et faire une conditionnelle, si formule présente alors je colore en rouge la Cellule en P ( ça je sais faire ) mais tester si la formule est là et si elle correspond là j'ai du mal !
Car la valeur retourné si je cherche si il y a une formule dans la Cellule est :
Code:
=ET(N12 <= 5)
Code:
=ET(N" & df & "<=" & s & ") = =ET(N12 <= 5) ' la valeur 5 n'est pas la même sur toute les lignes elle dépend de la valeur choisie par l'utilisateur
Sub cco()
Feuil1.Select
tz = Range("N65536").End(xlUp).Row
For t = 9 To tz
X = Feuil1.Range("O" & t).FormatConditions(1).Formula1
If Feuil1.Range("O" & t).FormatConditions(1).Formula1 = "=ET(O" & t & " <= ??????)" Then
Range("P" & t).Interior.ColorIndex = 3
Else
End If
Next
End Sub
Car ?????? est variable et c'est à cause de cela que je n'arrive pas à valider si oui ou non la condition est vraie !
Sur cette piste je suis pas loin mais pas encore assez près du succès hélas !
Bref je suis un peu perdu et toute aide sera la bienvenue !
Merci par avance à vous tous
Dernière édition: