Affichage graphique selon résultat : VBA SI 3 Conditions

alcoupe

XLDnaute Nouveau
Bonjour tous le monde,

Mon problème étant sur un fichier confidentiel que je ne peux transférer publiquement, je vais essayer de synthétiser mon besoin. Dans le cas de non compréhension, je créerais un fichier type avec un exemple de mon besoin.

Mon soucis est le suivant :

J'ai élaborer un fichier de suivis de la performance. Sur ce fichier, il y a donc des valeurs et comme indicateur de performance j'ai 3 jauges différentes (graphiques en anneau) qui doivent correspondre au résultat (résultat à la cellule O59).

Je m'explique ; Entre 0;10 : jauge Verte - Entre 11;20 : jauge Orange - et Entre 21 et +∞ . Cas plutôt basique en soit.

Ayant fais un tour sur les différents forum - tuto etc.. j'ai fini par élaborer moi même un code VBA, mais je n'ai que 2 jours de pratique et la j'aurais besoin d'une aide...
Je pense que je n'ai pas bien définit les valeurs car cela ne m'affiche pas de messages d'erreurs, mais cela ne provoque rien, ou rien de visible en tout cas.

Je vous donne le code que j'ai insérer dans VB, à noter que pour visualiser le bon graphique, on doit appuyer sur un bouton (forme insérer onglet développeur : contrôles de formulaire). Et ayant 3 graphiques différents, je les ai cachés derrière un rectangle blanc qui devient transparent au clic du bouton (première programmation présente) ou alors je n'ai pas affecté le code au bon endroit (le mettre sur le bouton ? le graph directement ? :

Sub Bouton10_Cliquer()
'
' Bouton10_Cliquer Macro
'

'
Range("H12").Select
Sheets("Mesures").Select
ActiveSheet.Shapes.Range(Array("Rectangle 308")).Select
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorBackground1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 1
.Solid
Sheets("Page de garde").Select

End With

'Affichage graphique

Sheets("Mesures").Select
If Range("O59") < 11 Then
ActiveSheet.ChartObjects("Graphique 188").Visible = True
ActiveSheet.ChartObjects("Graphique 184").Visible = False
ActiveSheet.ChartObjects("Graphique 186").Visible = False

End If

Sheets("Mesures").Select
If 11 < Range("O59") < 20 Then
ActiveSheet.ChartObjects("Graphique 188").Visible = False
ActiveSheet.ChartObjects("Graphique 184").Visible = True
ActiveSheet.ChartObjects("Graphique 186").Visible = False

End If

Sheets("Mesures").Select
If Range("O59") > 20 Then
ActiveSheet.ChartObjects("Graphique 188").Visible = False
ActiveSheet.ChartObjects("Graphique 184").Visible = False
ActiveSheet.ChartObjects("Graphique 186").Visible = True

End If

Sur ma programmation, j'ai réussi a rendre transparent mon rectangle (Bouton10_Cliquer Macro), manque plus qu'à laisser visible le bon graphique des 3...

J'espère avoir été clair dans ma demande, je reste dispo pour toutes demandes d'infos supplémentaires. Vous souhaitant une bonne journée et vous remerciant d'avance

Alexandre
 

alcoupe

XLDnaute Nouveau
UP le topic pour donner la solution ; j'ai finis par trouver comment afficher mon graphique selon mes résultats je vous mets le code.
Il est bien sur optimisable/factorisable ou avec d'autres fonctions je laisse la place à ceux qui aiment s'amuser avec de belles formules..

A noter qu'avec ce code je dois re cliquer sur mon bouton pour afficher mes graphiques lorsque les valeurs ont changés
J'ai également fais une macro RESET pour remettre les symboles/graph en position initiale si jamais..

VB :
Sub ProduitsAIR()

Sheets("Mesures").Select
ActiveSheet.Shapes.Range(Array("Rectangle 307")).Select

With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorBackground1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 1
.Solid

End With

If Range("O59") < 11 Then 'Graphique VERT
ActiveSheet.ChartObjects("Graphique 189").Visible = True
ActiveSheet.ChartObjects("Graphique 185").Visible = False
ActiveSheet.ChartObjects("Graphique 187").Visible = False

Else
ActiveSheet.ChartObjects("Graphique 189").Visible = False
ActiveSheet.ChartObjects("Graphique 185").Visible = False
ActiveSheet.ChartObjects("Graphique 187").Visible = False

Sheets("Mesures").Select

If Range("O59") > 20 Then 'Graphique ROUGE
ActiveSheet.ChartObjects("Graphique 187").Visible = True
ActiveSheet.ChartObjects("Graphique 189").Visible = False
ActiveSheet.ChartObjects("Graphique 185").Visible = False

Else

ActiveSheet.ChartObjects("Graphique 189").Visible = False
ActiveSheet.ChartObjects("Graphique 185").Visible = False
ActiveSheet.ChartObjects("Graphique 187").Visible = False

Sheets("Mesures").Select
If (ActiveSheet.ChartObjects("Graphique 187").Visible = False And ActiveSheet.ChartObjects("Graphique 189").Visible = False) Then
ActiveSheet.ChartObjects("Graphique 185").Visible = True 'Graphique ORANGE

End If

End If

End If

Sheets("Page de garde").Select

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 185
Messages
2 086 010
Membres
103 090
dernier inscrit
Createlier