OVH Cloud OVH Cloud

Visulisation des échellles d'un graphique

2 réponses
Avatar
fanou53
Bonjour,

Je vous explique mon interrogation... Je souhaiterais voir afficher,
sur mon graphique, lorsque j'ai une droite à 45° ( pente=1), une
droite à 45° et non une droite +/- inclinée en fonction du
dimensionnement automatique de la zone de traçage d'Excel. En clair,
je voudrais pouvoir observé un carré quand mes echelles sur les axes
verticaux et horizontaux sont égales. Cette manipulation est
réalisable manuellement avec la ch'tite souris mais je souhaiterais
une procédure qui permettent de dimensionner le graphique en
automatique.

J'ai déjà un p'tit peu regarder le sujet et j'ai "pondu" la macro
suivante :

// Les données MiniAbs, MaxiAbs, EchelleAbs, MiniOrd, MaxiOrd,
EchelleOrd, NomGr & Cancel sont renseignée par une userform.

Sub DimGraphe()

Infos.Show

If Infos.Cancel = False Then
With ActiveChart.Axes(xlCategory)
.MinimumScale = Infos.MiniAbs
.MaximumScale = Infos.MaxiAbs
.MajorUnit = Infos.EchelleAbs
End With
With ActiveChart.Axes(xlValue)
.MinimumScale = Infos.MiniOrd
.MaximumScale = Infos.MaxiOrd
.MajorUnit = Infos.EchelleOrd
End With

LongueurGrapheTheo = Infos.MaxiAbs - Infos.MiniAbs
HauteurGrapheTheo = Infos.MaxiOrd - Infos.MiniOrd
RapportLH = LongueurGrapheTheo / HauteurGrapheTheo

Sheets(Infos.NomGr).Select
ActiveChart.PlotArea.Select
Selection.Top = 14
Selection.Width = 500
Selection.Height = 430

If LongueurGrapheTheo = HauteurGrapheTheo Then
Sheets(Infos.NomGr).Select
ActiveChart.PlotArea.Select
Hauteur = Selection.Height
Longueur = Hauteur
End If
If LongueurGrapheTheo < HauteurGrapheTheo Then
Hauteur = Selection.Height
Sheets(Infos.NomGr).Select
ActiveChart.PlotArea.Select
CalculLongueur = (Selection.Height * RapportLH)
If CalculLongueur > 500 Then
Cpt = 1.1
Longueur = CalculLongueur
While FoundLongueur = False
Longueur = Longueur / Cpt
If Longueur > 500 Then Longueur = CalculLongueur
If Longueur < 500 Then
Diviseur = Cpt
FoundLongueur = True
End If
Cpt = Cpt + 0.1
Wend
Hauteur = Hauteur / Diviseur
Else:
Longueur = CalculLongueur
End If
End If
If LongueurGrapheTheo > HauteurGrapheTheo Then
Longueur = Selection.Width
Sheets(Infos.NomGr).Select
ActiveChart.PlotArea.Select
CalculHauteur = (Selection.Width * 1 / RapportLH)
If CalculHauteur > 430 Then
Cpt = 1.1
Hauteur = CalculHauteur
While FoundHauteur = False
Hauteur = Hauteur / Cpt
If Hauteur > 430 Then Hauteur = CalculHauteur
If Hauteur < 430 Then
Diviseur = Cpt
FoundHauteur = True
End If
Cpt = Cpt + 0.1
Wend
Longueur = Longueur / Diviseur
Else:
Hauteur = CalculHauteur
End If
End If
Selection.Width = Longueur
Selection.Height = Hauteur
End If

End Sub


A la suite de cette procédure, pour un graphe dont les echelles sont
identiques
(ex : MiniAbs = 0, MaxiAbs=10, EchelleAbs=5, MiniOrd=0, MaxiOrd=10,
EchelleOrd=5), ca roule! De même pour un graphe, dont la hauteur est
supérieur à la longueur (ex :(ex : MiniAbs = 0, MaxiAbs=10,
EchelleAbs=5, MiniOrd=0, MaxiOrd=20, EchelleOrd=5) mais quand la
longueur est supérieur à la hauteur, ca bugge, le graphique se
retrouve en milieu de feuille et les echelles pour former un carré ne
sont pas respectées...

Je voudrais savoir si quelqu'un a déjà rencontré ce problème, s'il en
a trouvé la solution... Sachant que je pense qu'il y a plus simple
comme façon de procéder...

Merci d'avance pour vos réponses.

Stéphane

2 réponses

Avatar
Laurent Longre
Bonsoir,

Je ne sais pas si ça peut t'aider, mais tu peux jeter un oeil à
http://groups.google.fr/groups?selmB100656.CDB3AA07%40free.fr&output=gplain
(transformer un repère en un repère orthonormé)

Cordialement,

Laurent
____________________

Site sur Excel VBA relooké : http://xcell05.free.fr

Bonjour,

Je vous explique mon interrogation... Je souhaiterais voir afficher,
sur mon graphique, lorsque j'ai une droite à 45° ( pente=1), une
droite à 45° et non une droite +/- inclinée en fonction du
dimensionnement automatique de la zone de traçage d'Excel. En clair,
je voudrais pouvoir observé un carré quand mes echelles sur les axes
verticaux et horizontaux sont égales. Cette manipulation est
réalisable manuellement avec la ch'tite souris mais je souhaiterais
une procédure qui permettent de dimensionner le graphique en
automatique.

J'ai déjà un p'tit peu regarder le sujet et j'ai "pondu" la macro
suivante :

// Les données MiniAbs, MaxiAbs, EchelleAbs, MiniOrd, MaxiOrd,
EchelleOrd, NomGr & Cancel sont renseignée par une userform.

Sub DimGraphe()

Infos.Show

If Infos.Cancel = False Then
With ActiveChart.Axes(xlCategory)
.MinimumScale = Infos.MiniAbs
.MaximumScale = Infos.MaxiAbs
.MajorUnit = Infos.EchelleAbs
End With
With ActiveChart.Axes(xlValue)
.MinimumScale = Infos.MiniOrd
.MaximumScale = Infos.MaxiOrd
.MajorUnit = Infos.EchelleOrd
End With

LongueurGrapheTheo = Infos.MaxiAbs - Infos.MiniAbs
HauteurGrapheTheo = Infos.MaxiOrd - Infos.MiniOrd
RapportLH = LongueurGrapheTheo / HauteurGrapheTheo

Sheets(Infos.NomGr).Select
ActiveChart.PlotArea.Select
Selection.Top = 14
Selection.Width = 500
Selection.Height = 430

If LongueurGrapheTheo = HauteurGrapheTheo Then
Sheets(Infos.NomGr).Select
ActiveChart.PlotArea.Select
Hauteur = Selection.Height
Longueur = Hauteur
End If
If LongueurGrapheTheo < HauteurGrapheTheo Then
Hauteur = Selection.Height
Sheets(Infos.NomGr).Select
ActiveChart.PlotArea.Select
CalculLongueur = (Selection.Height * RapportLH)
If CalculLongueur > 500 Then
Cpt = 1.1
Longueur = CalculLongueur
While FoundLongueur = False
Longueur = Longueur / Cpt
If Longueur > 500 Then Longueur = CalculLongueur
If Longueur < 500 Then
Diviseur = Cpt
FoundLongueur = True
End If
Cpt = Cpt + 0.1
Wend
Hauteur = Hauteur / Diviseur
Else:
Longueur = CalculLongueur
End If
End If
If LongueurGrapheTheo > HauteurGrapheTheo Then
Longueur = Selection.Width
Sheets(Infos.NomGr).Select
ActiveChart.PlotArea.Select
CalculHauteur = (Selection.Width * 1 / RapportLH)
If CalculHauteur > 430 Then
Cpt = 1.1
Hauteur = CalculHauteur
While FoundHauteur = False
Hauteur = Hauteur / Cpt
If Hauteur > 430 Then Hauteur = CalculHauteur
If Hauteur < 430 Then
Diviseur = Cpt
FoundHauteur = True
End If
Cpt = Cpt + 0.1
Wend
Longueur = Longueur / Diviseur
Else:
Hauteur = CalculHauteur
End If
End If
Selection.Width = Longueur
Selection.Height = Hauteur
End If

End Sub


A la suite de cette procédure, pour un graphe dont les echelles sont
identiques
(ex : MiniAbs = 0, MaxiAbs, EchelleAbs=5, MiniOrd=0, MaxiOrd,
EchelleOrd=5), ca roule! De même pour un graphe, dont la hauteur est
supérieur à la longueur (ex :(ex : MiniAbs = 0, MaxiAbs,
EchelleAbs=5, MiniOrd=0, MaxiOrd , EchelleOrd=5) mais quand la
longueur est supérieur à la hauteur, ca bugge, le graphique se
retrouve en milieu de feuille et les echelles pour former un carré ne
sont pas respectées...

Je voudrais savoir si quelqu'un a déjà rencontré ce problème, s'il en
a trouvé la solution... Sachant que je pense qu'il y a plus simple
comme façon de procéder...

Merci d'avance pour vos réponses.

Stéphane


Avatar
fanou53
Merci beaucoup pour ta réponse...
Ca marche nickel!

Stéphane


Laurent Longre wrote in message news:...
Bonsoir,

Je ne sais pas si ça peut t'aider, mais tu peux jeter un oeil à
http://groups.google.fr/groups?selmB100656.CDB3AA07%40free.fr&output=gplain
(transformer un repère en un repère orthonormé)

Cordialement,

Laurent
____________________

Site sur Excel VBA relooké : http://xcell05.free.fr

Bonjour,

Je vous explique mon interrogation... Je souhaiterais voir afficher,
sur mon graphique, lorsque j'ai une droite à 45° ( pente=1), une
droite à 45° et non une droite +/- inclinée en fonction du
dimensionnement automatique de la zone de traçage d'Excel. En clair,
je voudrais pouvoir observé un carré quand mes echelles sur les axes
verticaux et horizontaux sont égales. Cette manipulation est
réalisable manuellement avec la ch'tite souris mais je souhaiterais
une procédure qui permettent de dimensionner le graphique en
automatique.

J'ai déjà un p'tit peu regarder le sujet et j'ai "pondu" la macro
suivante :

// Les données MiniAbs, MaxiAbs, EchelleAbs, MiniOrd, MaxiOrd,
EchelleOrd, NomGr & Cancel sont renseignée par une userform.

Sub DimGraphe()

Infos.Show

If Infos.Cancel = False Then
With ActiveChart.Axes(xlCategory)
.MinimumScale = Infos.MiniAbs
.MaximumScale = Infos.MaxiAbs
.MajorUnit = Infos.EchelleAbs
End With
With ActiveChart.Axes(xlValue)
.MinimumScale = Infos.MiniOrd
.MaximumScale = Infos.MaxiOrd
.MajorUnit = Infos.EchelleOrd
End With

LongueurGrapheTheo = Infos.MaxiAbs - Infos.MiniAbs
HauteurGrapheTheo = Infos.MaxiOrd - Infos.MiniOrd
RapportLH = LongueurGrapheTheo / HauteurGrapheTheo

Sheets(Infos.NomGr).Select
ActiveChart.PlotArea.Select
Selection.Top = 14
Selection.Width = 500
Selection.Height = 430

If LongueurGrapheTheo = HauteurGrapheTheo Then
Sheets(Infos.NomGr).Select
ActiveChart.PlotArea.Select
Hauteur = Selection.Height
Longueur = Hauteur
End If
If LongueurGrapheTheo < HauteurGrapheTheo Then
Hauteur = Selection.Height
Sheets(Infos.NomGr).Select
ActiveChart.PlotArea.Select
CalculLongueur = (Selection.Height * RapportLH)
If CalculLongueur > 500 Then
Cpt = 1.1
Longueur = CalculLongueur
While FoundLongueur = False
Longueur = Longueur / Cpt
If Longueur > 500 Then Longueur = CalculLongueur
If Longueur < 500 Then
Diviseur = Cpt
FoundLongueur = True
End If
Cpt = Cpt + 0.1
Wend
Hauteur = Hauteur / Diviseur
Else:
Longueur = CalculLongueur
End If
End If
If LongueurGrapheTheo > HauteurGrapheTheo Then
Longueur = Selection.Width
Sheets(Infos.NomGr).Select
ActiveChart.PlotArea.Select
CalculHauteur = (Selection.Width * 1 / RapportLH)
If CalculHauteur > 430 Then
Cpt = 1.1
Hauteur = CalculHauteur
While FoundHauteur = False
Hauteur = Hauteur / Cpt
If Hauteur > 430 Then Hauteur = CalculHauteur
If Hauteur < 430 Then
Diviseur = Cpt
FoundHauteur = True
End If
Cpt = Cpt + 0.1
Wend
Longueur = Longueur / Diviseur
Else:
Hauteur = CalculHauteur
End If
End If
Selection.Width = Longueur
Selection.Height = Hauteur
End If

End Sub


A la suite de cette procédure, pour un graphe dont les echelles sont
identiques
(ex : MiniAbs = 0, MaxiAbs, EchelleAbs=5, MiniOrd=0, MaxiOrd,
EchelleOrd=5), ca roule! De même pour un graphe, dont la hauteur est
supérieur à la longueur (ex :(ex : MiniAbs = 0, MaxiAbs,
EchelleAbs=5, MiniOrd=0, MaxiOrd , EchelleOrd=5) mais quand la
longueur est supérieur à la hauteur, ca bugge, le graphique se
retrouve en milieu de feuille et les echelles pour former un carré ne
sont pas respectées...

Je voudrais savoir si quelqu'un a déjà rencontré ce problème, s'il en
a trouvé la solution... Sachant que je pense qu'il y a plus simple
comme façon de procéder...

Merci d'avance pour vos réponses.

Stéphane