Compter des cellules mises en forme par MFC
Bonjour à tous,
JE suis trés embétté, voila plusieurs jours que je m'arrache les cheveux mais sans succés.
Je n'arrive pas a compter des cellules mise en forme par MFC, j'ai téléchargé une mutitude de code et aucun fonctionne correctement à 100%, je me demande donc si oui ou non c'est possible?
en gros j'ai un tableau disposant de ligne disons de 10 cellules chacune, sur cette ligne les cellule s'alterne en rouge ou rien (trés important car le rien reste une MFC... enfin je crois) a la fin de cette ligne j'aurais aimé une fonction qui compte le nombre de cellule colorié en rouge grâce à la MFC.
J'ai fait une boucle qui parcoure la ligne pour compter, sur chaque cellule de la ligne elle teste la valeur du Colorindex grace a la fonction suivante, si la valeur retourner et égale a 3 (rouge: notre exemple) et bien je fait +1...
JE vous fournis le code capable de retourner le numéro d'une couleur de MFC, mais ce dernier fonctionne quand il veux, des fois c'est rouge il retourne 0 des fois c'est vide il retourne 3.... les premiere ligne fonctionne... et je ne comprend vraiment plus rien :cry::
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
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 |
help me please :calim2: