Echelle dynamique selon le minimum et le maximum

Bonjour à tous,

J'ai à ce jour un petit problème. Par avance, je m'excuse de ne pas pouvoir vous joindre mon fichier de référence pour cause de confidentialité.

Voici le contexte :

j'ai une "base historique" par mois sous Excel par département.

Un mois possède donc toutes les déclinaisons départementales et un département possède un historique mensuel.

J'ai créer un tableau de données dynamique pour le graphique. Je m'explique :

Dans un onglet, j'ai l'ensemble des mois présents dans la base et la possibilité de sélectionner le département. Par un sommeprod, j'obtiens pour le département choisi, les données pour chacun des mois. De ce tableau, je créé un graphique, qui se change automatiquement selon la sélection du département.

Jusque là, rien d'alarmant, tout se passe bien. C'est l'échelle qui me pose problème. J'ai beau avoir toutes les options d'échelle en "automatique", l'origine des ordonnées reste à zéro. Quand j'ai des séries de données peu élevées, ça va.. Mais quand je rentre dans les 200 000/400 000, ça ratatine ma courbe et on ne voit que trop peu l'évolution.

Du coup, j'ai essayé une petite macro :

    Private Sub axes()
            ActiveSheet.ChartObjects("Graphique 4").Activate 'Référence graphique
      ActiveChart.axes(xlValue).Select
        With ActiveChart.axes(xlValue)
                    .MinimumScale = Range("Q12").Value
                    .MaximumScale = Range("R12").Value
      End With
    End Sub

En Q12, je calcule le minimum de la série. En R12, le maximum. Seulement, l'axe ne se met pas à jour.

Je fais quelque chose de mal ? Si oui, quoi donc ? J'ai conscience que ce n'est pas facile de proposer des solutions sans le fichier sous les yeux.

Merci par avance, bonne journée

Bonjour

Voilà ce que j'ai fait pour un graphique

Je n'y connais rien en graphique

Je me sers beaucoup de l'enregistreur et ensuite j'essaie d'arranger un peu le code

Sub Test()
Dim Gr As ChartObject
  With ActiveSheet
    Set Gr = .ChartObjects("Graphique 1")
    Gr.Chart.Axes(xlValue).MinimumScale = .Range("D1")
    Gr.Chart.Axes(xlValue).MaximumScale = .Range("D2")
    Gr.Chart.Axes(xlValue).MajorUnit = 5
  End With
End Sub

Si cela peut t'aider tant mieux, mais dans le cas contraire je pense que ton fichier (si besoin anonymisé) sera indispensable

Bonjour,

Merci de ton aide, l'enregistreur de macros m'a permis de bien recaler mon code !

Cependant, je coince sur la mise à jour automatique : Mes échelles se font correctement à la seule condition de dire à la macro de mettre à jour les données sur le graphique. N'existe t-il pas un moyen pour que, dès que mes données changent, la macro tourne sans que l'on ait à la lancer ?

Voici mon nouveau code, qui est pointé par un bouton de commande :

Private Sub CommandButton1_Click()
Dim graph1 As ChartObject
    ActiveSheet.ChartObjects("Graphique 4").Activate
    ActiveChart.axes(xlValue).Select
    ActiveChart.axes(xlValue).MinimumScale = Range("Q12")
    ActiveChart.axes(xlValue).MaximumScale = Range("R12")
    ActiveChart.axes(xlValue).MajorUnit = Range("Q13")

        ActiveSheet.ChartObjects("Graphique 7").Activate
    ActiveChart.axes(xlValue).Select
    ActiveChart.axes(xlValue).MinimumScale = Range("Q34")
    ActiveChart.axes(xlValue).MaximumScale = Range("R34")
    ActiveChart.axes(xlValue).MajorUnit = Range("Q35")
End Sub

Merci par avance, bonne journée !

Bonjour

Pixelle a écrit :

N'existe t-il pas un moyen pour que, dès que mes données changent, la macro tourne sans que l'on ait à la lancer ?

Il y a beaucoup de moyen qui dépendent de la façon de construction de ton graphique

Lorsque les données sont modifiées manuellement

Lors de la sélection d'une cellule

Lorsque la page du graphique est activée

et sans doute d'autres

Dans le module de la feuille de ton graphique (clic droit sur l'onglet de la feuille --> Visualiser le code)

Tu peux choisir 1 des 2

Private Sub Worksheet_Activate()
  ' Lors de la sélection de la feuille
  '
  ' Ton code
  '
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  ' Lors d'une sélection d'une cellule
  '
  ' Ton code
  '
End Sub

Ah super !

Je te remercie

Au plaisir de se recroiser,

bonne fin d'après midi

Rechercher des sujets similaires à "echelle dynamique minimum maximum"