OVH Cloud OVH Cloud

Redéfinition dynamique de l'échelle d'un graphique

4 réponses
Avatar
Patrick BASTARD
Bonsoir, vous.

Hormis le add-in de Tushar Mehta trouvé sur le site de misange * , qui
nécessite son installation sur toutes les machines- à ce que j'ai compris
sur son site en grand-breton-
l'un de vous connait-il une astuce pour redéfinir l'échelle d'un graphique
en barre à partir de cellules (du genre =max(plage)*1.1 et =min(plage)*0.9)
?

Merci à toutes et à tous.


--
Bien cordialement,
P. Bastard

* incontournable :
http://www.excelabo.net/index.php

4 réponses

Avatar
twinley
Bonsoir

Ma B.A avant d'aller au lit... Je présente mes excuses, je n'ai pas noté
le nom du généreux contributeur...et je le regrette vivement !

un truc comme cela ?

Graphique echelle adaptée en 10 pts

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)
.MajorUnit = 5
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.

La partie "+ (Right(Int(Min), 1) = "0")" permet de traiter les cas
particuliers pour lesquels le min est un multiple de 10. Lorsque c'est
le cas,
le caractère de droite du min est un 0, et la condition
(Right(Int(Min), 1) = "0") renvoit -1 (-1 pour VRAI, 0 pour FAUX).
Lorque min est multiple de 10, le minimum choisi n'est alors pas ce
multiple, mais celui le précédent.
Pour le max, cette condition est inutile (on rajoute toujours +10 à
Un point ne pourra donc jamais toucher le bas du graphique. l'arrondi
inférieur).

ou bien

Avec des zones définies Yhigh et Ylow

Sub MaJEchelle()

Dim Mini As Integer
Dim Maxi As Integer
Maxi = Int([MAX(Yhigh)])
Mini = Int([MIN(Ylow)])
With
Workbooks("flux.xls").Worksheets("Graph1").ChartObjects("Graphique1").Chart.Axes(xlValue)
.MinimumScale = 10 * (Int(Mini / 10) + (Right(Int(Mini), 1) = "0"))
.MaximumScale = 10 * (Int(Maxi / 10) + 1)
.MajorUnit = 5
End With

End Sub

Ou bien

x1 = Application.Max(Sheets("Feuil1").Range("B:B"))
x2 = Application.Max(Range("Feuil1!B:B"))
x3 = Application.Max([Feuil1!B:B])
x4 = Evaluate("Max(Feuil1!B:B)")
x5 = [Max(Feuil1!B:B)]



à+twinley

Bonsoir, vous.

Hormis le add-in de Tushar Mehta trouvé sur le site de misange * , qui
nécessite son installation sur toutes les machines- à ce que j'ai compris
sur son site en grand-breton-
l'un de vous connait-il une astuce pour redéfinir l'échelle d'un graphique
en barre à partir de cellules (du genre =max(plage)*1.1 et =min(plage)*0.9)
?

Merci à toutes et à tous.




Avatar
Misange
Bonjour, toi
Si c'est juste pour lier dans un classeur particulier le max d'un axe à
une valeur contenue dans une cellule, tu peux faire cela par macro.
un truc du genre
With ActiveChart.Axes(xlValue)
.MinimumScale = 0
.MaximumScale = Range("F4").Value
Lance l'enregistreur il te donne la syntaxe. Il te reste ensuite à
relier ta macro à un bouton ou à la faire déclencher quand tu changes la
valeur de ta cellule (ici F4). Celle ci peut bien entendu être liée par
une formule de ton choix au contenu des plages de données sources.

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 19/02/2005 22:12, :
Bonsoir, vous.

Hormis le add-in de Tushar Mehta trouvé sur le site de misange * , qui
nécessite son installation sur toutes les machines- à ce que j'ai compris
sur son site en grand-breton-
l'un de vous connait-il une astuce pour redéfinir l'échelle d'un graphique
en barre à partir de cellules (du genre =max(plage)*1.1 et =min(plage)*0.9)
?

Merci à toutes et à tous.




Avatar
Patrick BASTARD
Bonjour, *twinley*
J'ai lu ton post
avec le plus grand intéret :

Merci pour le coup de pouce.

Je teste et si, par hasard, cela ne convenait pas, je reviens.

Bien cordialement,
--
Bien cordialement,
P. Bastard

Bonsoir

Ma B.A avant d'aller au lit... Je présente mes excuses, je n'ai pas
noté le nom du généreux contributeur...et je le regrette vivement !

un truc comme cela ?

Graphique echelle adaptée en 10 pts

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) .MajorUnit = 5
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.

La partie "+ (Right(Int(Min), 1) = "0")" permet de traiter les cas
particuliers pour lesquels le min est un multiple de 10. Lorsque c'est
le cas,
le caractère de droite du min est un 0, et la condition
(Right(Int(Min), 1) = "0") renvoit -1 (-1 pour VRAI, 0 pour FAUX).
Lorque min est multiple de 10, le minimum choisi n'est alors pas ce
multiple, mais celui le précédent.
Pour le max, cette condition est inutile (on rajoute toujours +10 à
Un point ne pourra donc jamais toucher le bas du graphique. l'arrondi
inférieur).

ou bien

Avec des zones définies Yhigh et Ylow

Sub MaJEchelle()

Dim Mini As Integer
Dim Maxi As Integer
Maxi = Int([MAX(Yhigh)])
Mini = Int([MIN(Ylow)])
With
Workbooks("flux.xls").Worksheets("Graph1").ChartObjects("Graphique1").Chart.Axes(xlValue)
.MinimumScale = 10 * (Int(Mini / 10) + (Right(Int(Mini), 1) > "0")) .MaximumScale = 10 * (Int(Maxi / 10) + 1)
.MajorUnit = 5
End With

End Sub

Ou bien

x1 = Application.Max(Sheets("Feuil1").Range("B:B"))
x2 = Application.Max(Range("Feuil1!B:B"))
x3 = Application.Max([Feuil1!B:B])
x4 = Evaluate("Max(Feuil1!B:B)")
x5 = [Max(Feuil1!B:B)]



à+twinley

Bonsoir, vous.

Hormis le add-in de Tushar Mehta trouvé sur le site de misange * ,
qui nécessite son installation sur toutes les machines- à ce que
j'ai compris sur son site en grand-breton-
l'un de vous connait-il une astuce pour redéfinir l'échelle d'un
graphique en barre à partir de cellules (du genre =max(plage)*1.1 et
=min(plage)*0.9) ?

Merci à toutes et à tous.




Avatar
Patrick BASTARD
Bonjour, *Misange*
J'ai lu ton post %
avec le plus grand intéret :

Merci pour cette piste.

Je teste, et en cas de problème, comme d'hab', je reviens.


--
Bien cordialement,
P. Bastard

Bonjour, toi
Si c'est juste pour lier dans un classeur particulier le max d'un axe
à une valeur contenue dans une cellule, tu peux faire cela par macro.
un truc du genre
With ActiveChart.Axes(xlValue)
.MinimumScale = 0
.MaximumScale = Range("F4").Value
Lance l'enregistreur il te donne la syntaxe. Il te reste ensuite à
relier ta macro à un bouton ou à la faire déclencher quand tu changes
la valeur de ta cellule (ici F4). Celle ci peut bien entendu être
liée par une formule de ton choix au contenu des plages de données
sources.
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 19/02/2005 22:12, :
Bonsoir, vous.

Hormis le add-in de Tushar Mehta trouvé sur le site de misange * ,
qui nécessite son installation sur toutes les machines- à ce que
j'ai compris sur son site en grand-breton-
l'un de vous connait-il une astuce pour redéfinir l'échelle d'un
graphique en barre à partir de cellules (du genre =max(plage)*1.1 et
=min(plage)*0.9) ?

Merci à toutes et à tous.