En suivant une réponse de Nicolas B. "MAJ auto d'échelle",
je pense avoir enterré ma question, je la reformule dans un nouveau fil.
J'ai essayé d'adapter ton code d'échelle calée sur 10pts mais ça bloque.
J'ai déjà cette possibilité de réglage qui fonctionne bien mais elle est
moins élégante que ta sub.
Sub MaJEchelle()
ActiveSheet.ChartObjects("TonGraphique").Chart _
.Axes(xlValue).MaximumScale = 10 ^ Len(CStr(Int( _
WorksheetFunction.Max(Range("B:B")))))
End Sub
Voici ma sub :
Max et Min sont des zones définies dynamiques avec =decaler....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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas B.
Salut,
Si tu veux appliquer une échelle 10 par 10, il ne faut pas essayer avec les puissances (le code de la question précédente ne marche donc pas).
Voici une solution :
Sub MaJEchelle() With ActiveSheet.ChartObjects("Graphique 1").Chart.Axes(xlValue) .MinimumScale = 10 * (Int(WorksheetFunction.Min(Range("B:B")) _ / 10) + (Right(Int(WorksheetFunction.Min(Range("B:B"))), 1) = "0")) .MaximumScale = 10 * (Int(WorksheetFunction.Max(Range("B:B")) _ / 10) + 1) End With End Sub
Pour les cas particuliers : si le minimum est un multiple de 10, l'échelle débute par le multiple inférieur au minimum. Si le maximum est un multiple de 10, alors l'échelle s'arrête au multiple suivant.
A+ -- Nicolas B.
twinley nous a écrit dans le message OD% :
Bonsoir à tous
En suivant une réponse de Nicolas B. "MAJ auto d'échelle", je pense avoir enterré ma question, je la reformule dans un nouveau fil.
J'ai essayé d'adapter ton code d'échelle calée sur 10pts mais ça bloque. J'ai déjà cette possibilité de réglage qui fonctionne bien mais elle est moins élégante que ta sub.
Sub MaJEchelle() ActiveSheet.ChartObjects("TonGraphique").Chart _ .Axes(xlValue).MaximumScale = 10 ^ Len(CStr(Int( _ WorksheetFunction.Max(Range("B:B"))))) End Sub
Voici ma sub : 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
Salut,
Si tu veux appliquer une échelle 10 par 10, il ne faut pas essayer avec les
puissances (le code de la question précédente ne marche donc pas).
Voici une solution :
Sub MaJEchelle()
With ActiveSheet.ChartObjects("Graphique 1").Chart.Axes(xlValue)
.MinimumScale = 10 * (Int(WorksheetFunction.Min(Range("B:B")) _
/ 10) + (Right(Int(WorksheetFunction.Min(Range("B:B"))), 1) = "0"))
.MaximumScale = 10 * (Int(WorksheetFunction.Max(Range("B:B")) _
/ 10) + 1)
End With
End Sub
Pour les cas particuliers : si le minimum est un multiple de 10, l'échelle
débute par le multiple inférieur au minimum. Si le maximum est un multiple
de 10, alors l'échelle s'arrête au multiple suivant.
A+
--
Nicolas B.
twinley nous a écrit
dans le message OD%232I2EZEHA.4092@TK2MSFTNGP11.phx.gbl :
Bonsoir à tous
En suivant une réponse de Nicolas B. "MAJ auto d'échelle",
je pense avoir enterré ma question, je la reformule dans un nouveau
fil.
J'ai essayé d'adapter ton code d'échelle calée sur 10pts mais ça
bloque. J'ai déjà cette possibilité de réglage qui fonctionne bien
mais elle est moins élégante que ta sub.
Sub MaJEchelle()
ActiveSheet.ChartObjects("TonGraphique").Chart _
.Axes(xlValue).MaximumScale = 10 ^ Len(CStr(Int( _
WorksheetFunction.Max(Range("B:B")))))
End Sub
Voici ma sub :
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 ?
Si tu veux appliquer une échelle 10 par 10, il ne faut pas essayer avec les puissances (le code de la question précédente ne marche donc pas).
Voici une solution :
Sub MaJEchelle() With ActiveSheet.ChartObjects("Graphique 1").Chart.Axes(xlValue) .MinimumScale = 10 * (Int(WorksheetFunction.Min(Range("B:B")) _ / 10) + (Right(Int(WorksheetFunction.Min(Range("B:B"))), 1) = "0")) .MaximumScale = 10 * (Int(WorksheetFunction.Max(Range("B:B")) _ / 10) + 1) End With End Sub
Pour les cas particuliers : si le minimum est un multiple de 10, l'échelle débute par le multiple inférieur au minimum. Si le maximum est un multiple de 10, alors l'échelle s'arrête au multiple suivant.
A+ -- Nicolas B.
twinley nous a écrit dans le message OD% :
Bonsoir à tous
En suivant une réponse de Nicolas B. "MAJ auto d'échelle", je pense avoir enterré ma question, je la reformule dans un nouveau fil.
J'ai essayé d'adapter ton code d'échelle calée sur 10pts mais ça bloque. J'ai déjà cette possibilité de réglage qui fonctionne bien mais elle est moins élégante que ta sub.
Sub MaJEchelle() ActiveSheet.ChartObjects("TonGraphique").Chart _ .Axes(xlValue).MaximumScale = 10 ^ Len(CStr(Int( _ WorksheetFunction.Max(Range("B:B"))))) End Sub
Voici ma sub : 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
twinley
J'ai essayé de changer aussi peu de chose que possible, c'est la raison, pour laquelle j'ai gardé la puissance en me disant qu'un échelle log n'était pas gênante pour le test. Merci pour ta réponse que je vais intégrer dès demain. Je te donnerai des nouvelles.
Bonsoir
à+ twinley
"Nicolas B." a écrit dans le message de news:%
Salut,
Si tu veux appliquer une échelle 10 par 10, il ne faut pas essayer avec les
puissances (le code de la question précédente ne marche donc pas).
Voici une solution :
Sub MaJEchelle() With ActiveSheet.ChartObjects("Graphique 1").Chart.Axes(xlValue) .MinimumScale = 10 * (Int(WorksheetFunction.Min(Range("B:B")) _ / 10) + (Right(Int(WorksheetFunction.Min(Range("B:B"))), 1) = "0")) .MaximumScale = 10 * (Int(WorksheetFunction.Max(Range("B:B")) _ / 10) + 1) End With End Sub
Pour les cas particuliers : si le minimum est un multiple de 10, l'échelle débute par le multiple inférieur au minimum. Si le maximum est un multiple de 10, alors l'échelle s'arrête au multiple suivant.
A+ -- Nicolas B.
twinley nous a écrit dans le message OD% :
Bonsoir à tous
En suivant une réponse de Nicolas B. "MAJ auto d'échelle", je pense avoir enterré ma question, je la reformule dans un nouveau fil.
J'ai essayé d'adapter ton code d'échelle calée sur 10pts mais ça bloque. J'ai déjà cette possibilité de réglage qui fonctionne bien mais elle est moins élégante que ta sub.
Sub MaJEchelle() ActiveSheet.ChartObjects("TonGraphique").Chart _ .Axes(xlValue).MaximumScale = 10 ^ Len(CStr(Int( _ WorksheetFunction.Max(Range("B:B"))))) End Sub
Voici ma sub : 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
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
J'ai essayé de changer aussi peu de chose que possible, c'est la raison,
pour laquelle j'ai gardé la puissance en me disant qu'un échelle log n'était
pas gênante pour le test.
Merci pour ta réponse que je vais intégrer dès demain.
Je te donnerai des nouvelles.
Bonsoir
à+
twinley
"Nicolas B." <nicolas.bruot@adresse.bidon.com> a écrit dans le message de
news:%23YybJhFZEHA.2576@TK2MSFTNGP10.phx.gbl...
Salut,
Si tu veux appliquer une échelle 10 par 10, il ne faut pas essayer avec
les
puissances (le code de la question précédente ne marche donc pas).
Voici une solution :
Sub MaJEchelle()
With ActiveSheet.ChartObjects("Graphique 1").Chart.Axes(xlValue)
.MinimumScale = 10 * (Int(WorksheetFunction.Min(Range("B:B")) _
/ 10) + (Right(Int(WorksheetFunction.Min(Range("B:B"))), 1) = "0"))
.MaximumScale = 10 * (Int(WorksheetFunction.Max(Range("B:B")) _
/ 10) + 1)
End With
End Sub
Pour les cas particuliers : si le minimum est un multiple de 10, l'échelle
débute par le multiple inférieur au minimum. Si le maximum est un multiple
de 10, alors l'échelle s'arrête au multiple suivant.
A+
--
Nicolas B.
twinley nous a écrit
dans le message OD%232I2EZEHA.4092@TK2MSFTNGP11.phx.gbl :
Bonsoir à tous
En suivant une réponse de Nicolas B. "MAJ auto d'échelle",
je pense avoir enterré ma question, je la reformule dans un nouveau
fil.
J'ai essayé d'adapter ton code d'échelle calée sur 10pts mais ça
bloque. J'ai déjà cette possibilité de réglage qui fonctionne bien
mais elle est moins élégante que ta sub.
Sub MaJEchelle()
ActiveSheet.ChartObjects("TonGraphique").Chart _
.Axes(xlValue).MaximumScale = 10 ^ Len(CStr(Int( _
WorksheetFunction.Max(Range("B:B")))))
End Sub
Voici ma sub :
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
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 ?
J'ai essayé de changer aussi peu de chose que possible, c'est la raison, pour laquelle j'ai gardé la puissance en me disant qu'un échelle log n'était pas gênante pour le test. Merci pour ta réponse que je vais intégrer dès demain. Je te donnerai des nouvelles.
Bonsoir
à+ twinley
"Nicolas B." a écrit dans le message de news:%
Salut,
Si tu veux appliquer une échelle 10 par 10, il ne faut pas essayer avec les
puissances (le code de la question précédente ne marche donc pas).
Voici une solution :
Sub MaJEchelle() With ActiveSheet.ChartObjects("Graphique 1").Chart.Axes(xlValue) .MinimumScale = 10 * (Int(WorksheetFunction.Min(Range("B:B")) _ / 10) + (Right(Int(WorksheetFunction.Min(Range("B:B"))), 1) = "0")) .MaximumScale = 10 * (Int(WorksheetFunction.Max(Range("B:B")) _ / 10) + 1) End With End Sub
Pour les cas particuliers : si le minimum est un multiple de 10, l'échelle débute par le multiple inférieur au minimum. Si le maximum est un multiple de 10, alors l'échelle s'arrête au multiple suivant.
A+ -- Nicolas B.
twinley nous a écrit dans le message OD% :
Bonsoir à tous
En suivant une réponse de Nicolas B. "MAJ auto d'échelle", je pense avoir enterré ma question, je la reformule dans un nouveau fil.
J'ai essayé d'adapter ton code d'échelle calée sur 10pts mais ça bloque. J'ai déjà cette possibilité de réglage qui fonctionne bien mais elle est moins élégante que ta sub.
Sub MaJEchelle() ActiveSheet.ChartObjects("TonGraphique").Chart _ .Axes(xlValue).MaximumScale = 10 ^ Len(CStr(Int( _ WorksheetFunction.Max(Range("B:B"))))) End Sub
Voici ma sub : 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
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 ?