OVH Cloud OVH Cloud

MAJ auto d'échelle

3 réponses
Avatar
hsemaglig
Bonjour,

j'aimerais que l'echelle verticale de mes graphique s'ajuste
automatiquement (en ordre de grandeur, cad de puissance de 10 en
puissance de 10) qd je mets à jour les données du classeur.

Qq1 pourrait il me donner le bout de code qui ferait cela ?

ps : je suis une grosse bille en VBA...


Merci

a+

3 réponses

Avatar
Nicolas B.
Salut Gilgamesh,

Essaye ceci :

Sub MaJEchelle()
ActiveSheet.ChartObjects("TonGraphique").Chart _
.Axes(xlValue).MaximumScale = 10 ^ Len(CStr(Int( _
WorksheetFunction.Max(Range("B:B")))))
End Sub

Lorsque la plus grande valeur est un multiple de 10, l'échelle est ajustée
au multiple suivant.

Ne fonctionne pas pour de très grandes valeurs (supérieures à 10^15, à
priori).


A+
--
Nicolas B.


Gilgamesh nous a écrit
dans le message :
Bonjour,

j'aimerais que l'echelle verticale de mes graphique s'ajuste
automatiquement (en ordre de grandeur, cad de puissance de 10 en
puissance de 10) qd je mets à jour les données du classeur.

Qq1 pourrait il me donner le bout de code qui ferait cela ?

ps : je suis une grosse bille en VBA...


Merci

a+


Avatar
twinley
je suggère d'ajouter

Worksheets("Graph1").ChartObjects("nom du
graphique").Chart.Axes(xlValue).MajorUnit = 10

qui permet de se caler sur 10, 20 sinon tu risques d'avoir 12.5, 22.5 ou
autre

à+
twinley

"Gilgamesh" a écrit dans le message de
news:
Bonjour,

j'aimerais que l'echelle verticale de mes graphique s'ajuste
automatiquement (en ordre de grandeur, cad de puissance de 10 en
puissance de 10) qd je mets à jour les données du classeur.

Qq1 pourrait il me donner le bout de code qui ferait cela ?

ps : je suis une grosse bille en VBA...


Merci

a+


Avatar
twinley
Bonsoir Nicolas

J'ai essayé d'adapter ton code mais ça bloque. J'ai déja cette possibilité
de reglage mais elle est moins élégante.
Bien qu'elle fonctionne bien.
Max et Min sont des zones définies dynamiques avec Þcaler....etc.

Sub AutoScaleGraph ()
Dim Min, Max, over
' max & min des zones
Max = Int([MAX(Yhigh)])
Min = Int([MIN(Ylow)])
' pour regler l'espace entre le cours et la ligne sup du graph
over = Sheets("Graph1").Range("M1")
'pour avoir une echelle toujours calée de 5pts en 5pts
If Right(Min, 1) = 1 Or Right(Min, 1) = 6 Then Min = Min - 1
If Right(Min, 1) = 2 Or Right(Min, 1) = 7 Then Min = Min - 2
If Right(Min, 1) = 3 Or Right(Min, 1) = 8 Then Min = Min - 3
If Right(Min, 1) = 4 Or Right(Min, 1) = 9 Then Min = Min - 4
Workbooks("flux.xls").Sheets("Graph1").ChartObjects(1).Name = "Graphique
1"
With Workbooks("flux.xls").Worksheets("Graph1").ChartObjects("Graphique
1").Chart.Axes(xlValue)
.MinimumScale = Min
.MaximumScale = Max + over
.MajorUnit = 5
End With
End Sub

J'ai tenté entre autre :
ActiveSheet.ChartObjects("TonGraphique").Chart.Axes(xlValue).MaximumScale 10 ^ Int([MAX(Yhigh)])

mais XL veut pas. D'ailleurs je suis surpris que tu prennes la chose par le
plus haut. Moi je me cale sur le min.
As tu une idée de ce qui cloche pour remplacer mes 4 if par ta belle fml ?

à+
twinley

"Nicolas B." a écrit dans le message de
news:%
Salut Gilgamesh,

Essaye ceci :

Sub MaJEchelle()
ActiveSheet.ChartObjects("TonGraphique").Chart _
.Axes(xlValue).MaximumScale = 10 ^ Len(CStr(Int( _
WorksheetFunction.Max(Range("B:B")))))
End Sub

Lorsque la plus grande valeur est un multiple de 10, l'échelle est ajustée
au multiple suivant.

Ne fonctionne pas pour de très grandes valeurs (supérieures à 10^15, à
priori).


A+
--
Nicolas B.


Gilgamesh nous a écrit
dans le message :
Bonjour,

j'aimerais que l'echelle verticale de mes graphique s'ajuste
automatiquement (en ordre de grandeur, cad de puissance de 10 en
puissance de 10) qd je mets à jour les données du classeur.

Qq1 pourrait il me donner le bout de code qui ferait cela ?

ps : je suis une grosse bille en VBA...


Merci

a+