Gestion des échelles d'un graphique

Bonjour à toutes et à tous,

Est-il possible, sans passer par un code VBA, de dire à l'axe X d'un graphe que son minimum ne commence pas à 0 mais à la valeur la plus basse de la série moins 100 ?

Je ne sais pas si je me suis bien exprimé mais je reste à votre disposition pour plus d'infos.

Merci d'avance.

Garmin.

Bonjour Garmin,

Valeur à ajouter en A1 et insérer la macro suivante dans un module

Sub AXE_VERTICALE()
    ActiveSheet.ChartObjects("Graphique 1").Activate 'Référence graphique
    ActiveChart.Axes(xlValue).Select
    With ActiveChart.Axes(xlValue)
                .MaximumScale = Range("a1").Value 'valeur en A1
    End With
End Sub

Bonjour Et,

Merci pour ta réponse, c'est presque parfait.

Est-il possible de que le graphe s'actualise tout seul dès qu'on change les données en A1 sans avoir besoin d'éxécuter la macro à la main ?

Merci encore =D


Rectification j'ai trouvé.

Suffit d'appeler la macro dans la feuil1.

Merci encore.

Sujet clos.

Bonjour Garmin,

Mets le code suivant dans Feuil1(Feuil1) du VBAProject

Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$A$1" Then
   ActiveSheet.ChartObjects("Graphique 1").Activate 'Référence graphique
    ActiveChart.Axes(xlValue).Select
    With ActiveChart.Axes(xlValue)
                .MaximumScale = Range("a1").Value 'valeur en A1
    End With
    End If
End Sub

Bonjour ET,

Donc j'ai fais les changements et ça marche très bien. Néanmoins quand je veux appliquer cela sur mon fichier j'ai le problème suivant: Erreur de compilation, Nom amlbigu détecté: ~

C'est certainement parce que il y a une autre macro sur la feuille mais je ne sais pas résoudre le souci (deux worksheet_change sur une même feuille ?)

Dans le module:

Sub AXE_VERTICALE()

ActiveSheet.ChartObjects("Graphique 20").Activate 'Référence graphique

ActiveChart.Axes(xlValue).Select

With ActiveChart.Axes(xlValue)

.MinimumScale = Range("e30").Value 'valeur en Ae30

End With

End Sub

Et sur la feuille du graphe:

Private Sub Worksheet_Change(ByVal Target As Range)

Call Masque_lig

End Sub

Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" Then

ActiveSheet.ChartObjects("Graphique 20").Activate 'Référence graphique

ActiveChart.Axes(xlValue).Select

With ActiveChart.Axes(xlValue)

.MinimumScale = Range("e30").Value 'valeur en A1

End With

End If

End Sub

Merci pour tes réponses, et merci d'avance pour celles qui vont suivre

Garmin.

Supprime ton module.

Colle le code dans ta Feuil1(Feuil1)

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$A$1" Then
   ActiveSheet.ChartObjects("Graphique 1").Activate 'Référence graphique
   ActiveChart.Axes(xlValue).Select
    With ActiveChart.Axes(xlValue)
                .MaximumScale = Range("a1").Value 'valeur en A1
   End With
    End If

    Call Masque_lig
End Sub

Donc si je comprend bien dès lors que tu changeras :

1) l'information dans la cellule A1, le graphe de modifiera et la macro Masque_lig se lancera.

2) une information sur ta feuille, la macro Masque_lig se lancera uniquement.

1) l'information en A1 se change toute seule en fonction d'un recherche.

Si la valeur de cette cellule change c'est que les valeurs du graphe ont changées (en gros j'ai changé de vue, donc le graphe change). Si je change de vue alors la macro Masquer_Ligne s'active. Elle me permet de masquer les lignes inutiles du tableau source du graphe (1 ligne par vendeurs, selon les vues il peut y avoir 5, 4, 3 vendeurs).

Ainsi selon la vue que je veux prendre, le volume de vente est plus ou moins grand et il y a plus ou moins de vendeurs.

Masquer les lignes me permet d'obtenir un graphe propre avec 3 vendeurs, ou 5 vendeurs selon les vues.

Changer le minimum de l'échelle selon le minimum de la série me permet d'affiner le graphe.

Tu veux que je tente de faire un fichier simplifié ? Qui reprenne un peu les grandes lignes de mon fichier de base ?

Bonjour,

Je cherche aussi à gérer l'echelle d'un graphique celon 4 cellules de ma feuille excel. J'ai reguardé plusieurs forums mais mes connaissances étant limitées (très) je n'arrive pas à trouver comment bien adapter la macro.

Travaillant de plus sur un excel en italien je galère pas mal. J'ai utilisé un code copié dans un autre forum :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub

If Not Application.Intersect(Target, Range("P33;P29;S33;S29")) Is Nothing Then

ActiveSheet.ChartObjects(1).Activate

With ActiveChart

.Axes(xlValue).MinimumScale = Range("P33").Value

.Axes(xlValue).MaximumScale = Range("P29").Value

.Axes(xlCategory).MinimumScale = Range("S33").Value

.Axes(xlCategory).MaximumScale = Range("S29").Value

.Axes(xlCategory).MajorUnit = 1

End With

End If

End Sub

Je n'arrive pas à joidre le fichier.

Merci beaucoup à ceux qui prendront le temps de m'aider.

Teow

Rechercher des sujets similaires à "gestion echelles graphique"