OVH Cloud OVH Cloud

MFC et macros

9 réponses
Avatar
yan
bonjour à tous
Grâce à des MFC je met en couleur les cellules d'une plage
3 critères
3 couleurs rouge(3),vert(4), rose(40)
voulant obtenir le nb de cellules de chaque couleur, j'ai fait ceci

For each c in selection
If c.Interior.ColorIndex = 3 then
rouge = rouge+1
next
Mais le N° de couleur renvoyé n'est pas celui de la MFC semble t-il mais
celui d'origine dans plage
questions
1) quelle serait la bonne syntaxes pour récupérer la couleur mis par la MFC
2) si il y en a une est-on obligé de passer par "for each.......next" ou
peut_on le faire directement avec "count.???"
Merci
Cordialement
Yan

9 réponses

Avatar
Daniel
Bonjour.
Il est plus simple de tester les conditions de la MFC.
Cordialement.
Daniel
"yan" a écrit dans le message de news:
457452d4$0$5067$
bonjour à tous
Grâce à des MFC je met en couleur les cellules d'une plage
3 critères
3 couleurs rouge(3),vert(4), rose(40)
voulant obtenir le nb de cellules de chaque couleur, j'ai fait ceci

For each c in selection
If c.Interior.ColorIndex = 3 then
rouge = rouge+1
next
Mais le N° de couleur renvoyé n'est pas celui de la MFC semble t-il mais
celui d'origine dans plage
questions
1) quelle serait la bonne syntaxes pour récupérer la couleur mis par la
MFC
2) si il y en a une est-on obligé de passer par "for each.......next" ou
peut_on le faire directement avec "count.???"
Merci
Cordialement
Yan




Avatar
yan
mais comment?
Merci

"Daniel" a écrit dans le message de news:

Bonjour.
Il est plus simple de tester les conditions de la MFC.
Cordialement.
Daniel
"yan" a écrit dans le message de news:
457452d4$0$5067$
bonjour à tous
Grâce à des MFC je met en couleur les cellules d'une plage
3 critères
3 couleurs rouge(3),vert(4), rose(40)
voulant obtenir le nb de cellules de chaque couleur, j'ai fait ceci

For each c in selection
If c.Interior.ColorIndex = 3 then
rouge = rouge+1
next
Mais le N° de couleur renvoyé n'est pas celui de la MFC semble t-il mais
celui d'origine dans plage
questions
1) quelle serait la bonne syntaxes pour récupérer la couleur mis par la
MFC
2) si il y en a une est-on obligé de passer par "for each.......next" ou
peut_on le faire directement avec "count.???"
Merci
Cordialement
Yan








Avatar
Daniel
Suppose que ta MEFC soit :
Si la valeur de la cellule="toto", alors, couleur rouge, au lieu de tester
la couleur, teste "toto" :

Sub test()
For Each cell In ActiveSheet.UsedRange
If cell = "toto" Then
rouge = rouge + 1
Next cell
End Sub

Daniel
"yan" a écrit dans le message de news:
457478c4$0$25939$
mais comment?
Merci

"Daniel" a écrit dans le message de news:

Bonjour.
Il est plus simple de tester les conditions de la MFC.
Cordialement.
Daniel
"yan" a écrit dans le message de news:
457452d4$0$5067$
bonjour à tous
Grâce à des MFC je met en couleur les cellules d'une plage
3 critères
3 couleurs rouge(3),vert(4), rose(40)
voulant obtenir le nb de cellules de chaque couleur, j'ai fait ceci

For each c in selection
If c.Interior.ColorIndex = 3 then
rouge = rouge+1
next
Mais le N° de couleur renvoyé n'est pas celui de la MFC semble t-il mais
celui d'origine dans plage
questions
1) quelle serait la bonne syntaxes pour récupérer la couleur mis par la
MFC
2) si il y en a une est-on obligé de passer par "for each.......next" ou
peut_on le faire directement avec "count.???"
Merci
Cordialement
Yan












Avatar
Daniel
Bien sûr, si tu as des cellules avec la valeur "toto" et un fond mauve, on
est mal.
"Daniel" a écrit dans le message de news:

Suppose que ta MEFC soit :
Si la valeur de la cellule="toto", alors, couleur rouge, au lieu de tester
la couleur, teste "toto" :

Sub test()
For Each cell In ActiveSheet.UsedRange
If cell = "toto" Then
rouge = rouge + 1
Next cell
End Sub

Daniel
"yan" a écrit dans le message de news:
457478c4$0$25939$
mais comment?
Merci

"Daniel" a écrit dans le message de news:

Bonjour.
Il est plus simple de tester les conditions de la MFC.
Cordialement.
Daniel
"yan" a écrit dans le message de news:
457452d4$0$5067$
bonjour à tous
Grâce à des MFC je met en couleur les cellules d'une plage
3 critères
3 couleurs rouge(3),vert(4), rose(40)
voulant obtenir le nb de cellules de chaque couleur, j'ai fait ceci

For each c in selection
If c.Interior.ColorIndex = 3 then
rouge = rouge+1
next
Mais le N° de couleur renvoyé n'est pas celui de la MFC semble t-il
mais
celui d'origine dans plage
questions
1) quelle serait la bonne syntaxes pour récupérer la couleur mis par la
MFC
2) si il y en a une est-on obligé de passer par "for each.......next"
ou
peut_on le faire directement avec "count.???"
Merci
Cordialement
Yan
















Avatar
yan
Salut Daniel
En fait c'est pas si simple
je valide les cellules avec une liste de validation contenant une trentaine
de possibilité.
Les valeurs de la liste sont issues de 3 plages liste1,liste2 et liste3
Et mes 3 MFC sont les suivantes
=EQUIV(T12;liste1;0) (rouge)
=EQUIV(T12;list2;0) (vert)
=EQUIV(T12;list3;0) (rose)
liste1,liste2 et liste3 sont 3 plages différentes
Si le résultat de la cellule appartient a la liste1 la couleur sera rouge a
la liste2 vert.........
voili voilou pas simple? en tout cas pour moi
A+
Yan


"Daniel" a écrit dans le message de news:

Bien sûr, si tu as des cellules avec la valeur "toto" et un fond mauve, on
est mal.
"Daniel" a écrit dans le message de news:

Suppose que ta MEFC soit :
Si la valeur de la cellule="toto", alors, couleur rouge, au lieu de
tester la couleur, teste "toto" :

Sub test()
For Each cell In ActiveSheet.UsedRange
If cell = "toto" Then
rouge = rouge + 1
Next cell
End Sub

Daniel
"yan" a écrit dans le message de news:
457478c4$0$25939$
mais comment?
Merci

"Daniel" a écrit dans le message de news:

Bonjour.
Il est plus simple de tester les conditions de la MFC.
Cordialement.
Daniel
"yan" a écrit dans le message de news:
457452d4$0$5067$
bonjour à tous
Grâce à des MFC je met en couleur les cellules d'une plage
3 critères
3 couleurs rouge(3),vert(4), rose(40)
voulant obtenir le nb de cellules de chaque couleur, j'ai fait ceci

For each c in selection
If c.Interior.ColorIndex = 3 then
rouge = rouge+1
next
Mais le N° de couleur renvoyé n'est pas celui de la MFC semble t-il
mais
celui d'origine dans plage
questions
1) quelle serait la bonne syntaxes pour récupérer la couleur mis par
la MFC
2) si il y en a une est-on obligé de passer par "for each.......next"
ou
peut_on le faire directement avec "count.???"
Merci
Cordialement
Yan




















Avatar
AV
Exemple pour décompter le nombre de cellules rouges :
Il suffit de décompter combien de valeurs, dans la plage à examiner
("Plage"), appartiennent à "list1" (rouge)
Matricielle (à valider par ctrl+maj+entrée)
=SOMME(ESTNUM(EQUIV(Plage;list1;0))*1)

Pour les cellules vertes ou roses, changer "list1" par "list2" ou "list3"

Exemple là :
http://cjoint.com/?mfhTqPlvVD

AV
Avatar
yan
Bonjour alain
Merci pour cette formule c'est impec!
Par contre pour revenir à ma question si j'avais besoin dans une macro de
récuperer le N° de couleur mis par une MFC cela serait possible?
A+
Yan


"AV" a écrit dans le message de news:
eplf%
Exemple pour décompter le nombre de cellules rouges :
Il suffit de décompter combien de valeurs, dans la plage à examiner
("Plage"), appartiennent à "list1" (rouge)
Matricielle (à valider par ctrl+maj+entrée)
=SOMME(ESTNUM(EQUIV(Plage;list1;0))*1)

Pour les cellules vertes ou roses, changer "list1" par "list2" ou
"list3"

Exemple là :
http://cjoint.com/?mfhTqPlvVD

AV




Avatar
AV
Par contre pour revenir à ma question si j'avais besoin dans une macro de
récuperer le N° de couleur mis par une MFC cela serait possible?


L'affaire se complique un peu ...
Exemple pour dénombrer les cellules d'une sélection dont la couleur de
police est rouge (MEFC) :

Sub Compte_FC()
For Each c In Selection
Dim FC As FormatCondition, F1, F2
For Each FC In c.FormatConditions
If FC.Type = xlCellValue Then
F1 = Evaluate(FC.Formula1)
Select Case FC.Operator
Case xlBetween: If c >= F1 _
And c <= Evaluate(FC.Formula2) Then Exit For
Case xlEqual: If c = F1 Then Exit For
Case xlGreater: If c > F1 Then Exit For
Case xlGreaterEqual: If c >= F1 Then Exit For
Case xlLess: If c < F1 Then Exit For
Case xlLessEqual: If c <= F1 Then Exit For
Case xlNotBetween: If c < F1 _
Or c > Evaluate(FC.Formula2) Then Exit For
Case xlNotEqual: If c <> F1 Then Exit For
End Select
Else
On Error Resume Next
If Evaluate(FC.Formula1) Then Exit For
End If
Next FC
If Not FC Is Nothing Then
If FC.Font.ColorIndex = 3 Then x = x + 1
End If
Next
MsgBox x
End Sub

AV

Avatar
yan
Merci Alain
Je vais étudier cet exemple.
Mais je crains que cela dépasse mes modeste connaissance et de trés loin.
Je n'en suis pas encore a ce stade de compétence
J e te remercie et te souhaite une bonne soirée
A+
Yan

"AV" a écrit dans le message de news:

Par contre pour revenir à ma question si j'avais besoin dans une macro de
récuperer le N° de couleur mis par une MFC cela serait possible?


L'affaire se complique un peu ...
Exemple pour dénombrer les cellules d'une sélection dont la couleur
de police est rouge (MEFC) :

Sub Compte_FC()
For Each c In Selection
Dim FC As FormatCondition, F1, F2
For Each FC In c.FormatConditions
If FC.Type = xlCellValue Then
F1 = Evaluate(FC.Formula1)
Select Case FC.Operator
Case xlBetween: If c >= F1 _
And c <= Evaluate(FC.Formula2) Then Exit For
Case xlEqual: If c = F1 Then Exit For
Case xlGreater: If c > F1 Then Exit For
Case xlGreaterEqual: If c >= F1 Then Exit For
Case xlLess: If c < F1 Then Exit For
Case xlLessEqual: If c <= F1 Then Exit For
Case xlNotBetween: If c < F1 _
Or c > Evaluate(FC.Formula2) Then Exit For
Case xlNotEqual: If c <> F1 Then Exit For
End Select
Else
On Error Resume Next
If Evaluate(FC.Formula1) Then Exit For
End If
Next FC
If Not FC Is Nothing Then
If FC.Font.ColorIndex = 3 Then x = x + 1
End If
Next
MsgBox x
End Sub

AV