Graphique secteur à partir d'une mise en forme conditionnell
Bonjour,
j'essaye depuis quelques temps de créer un graphique secteur à partir d'une mise en forme conditionnelle, je m'explique :
J'ai fait une mise en forme conditionnelle sur un tableau qui colore les lignes si le texte de la colonne A contient un texte donné (ici A = rouge, B = vert)
J'aimerai à partir de cette mise en forme obtenir un graphique secteur qui reprendrai la somme de la colonne B si il a une mise en forme particulière comme dans le fichier joint (A1+A2+A3+A4 et B1+B2 dans notre exemple)
En VBA, j'ai essayé de tester la caractéristique "couleur" des cellules mises en forme via la mise en forme conditionnelle, mais il me renvoi la mise en forme de base (sans tenir compte de la mise en forme conditionnelle appliquée).
J'ai également essayé le graphique croisé dynamique...
J'ai pensé à une macro qui testerai le contenu de mes cellules une à une pour les mettre en forme (comme le ferait une mise en forme conditionnelle) et additionnerai ma colonne B au fur et à mesure...
Y-a-t-il une astuce plus simple?
D'avance merci,
Cordialement,
Marti_M
Bonjour,
Un premier jet en attendant plus de précisions.
En VBA, la couleur de MFC n'est pas reconnue, il faut simplement utiliser la même formule ou test que dans la MFC. Dans le code ci-dessous, on recherche les lettres A et B puis on totalise pour chaque lettre et on colore les cellules correspondantes. Pour l'instant, les totaux sont affichés dans une boite de message :
Sub Total()
Dim Plage As Range
Dim Cel As Range
Dim Total_A As Double
Dim Total_B As Double
With Worksheets("Feuil1")
Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
For Each Cel In Plage
If InStr(Cel, "A") <> 0 Then
Total_A = Total_A + Cel.Offset(, 1)
Cel.Interior.ColorIndex = 3 'rouge
Cel.Offset(, 1).Interior.ColorIndex = 3 'rouge
ElseIf InStr(Cel, "B") <> 0 Then
Total_B = Total_B + Cel.Offset(, 1)
Cel.Interior.ColorIndex = 4 'vert
Cel.Offset(, 1).Interior.ColorIndex = 4 'vert
Else
Cel.Interior.ColorIndex = 0 'automatique
Cel.Offset(, 1).Interior.ColorIndex = 0 'automatique
End If
Next Cel
MsgBox "Total concernant la lettre A : " & Total_A & _
vbCrLf & _
"Total concernant la lettre B : " & Total_B
End SubHervé.
Ok,
je vais faire comme ça.
Dommage qu'on ne puisse pas le faire "directement" depuis une MFC
Merci !