OVH Cloud OVH Cloud

Faire coincider le quadrillage dans histogramme à deux axes ?

9 réponses
Avatar
raph
Salut à tou(te)s,

Existe-t-il un moyen simple pour que dans un histogramme à 2 axes, le
quadrillage (horizontal) "relie" les valeurs des axes ?
Ceci par simple souci esthétique.


--
Raph

9 réponses

Avatar
FxM
Bonsoir,

De lon et sans avoir testé, il faudrait le même nombre de divisions.

@+
FxM



Raph wrote:

Salut à tou(te)s,

Existe-t-il un moyen simple pour que dans un histogramme à 2 axes, le
quadrillage (horizontal) "relie" les valeurs des axes ?
Ceci par simple souci esthétique.




Avatar
raph
FxM écrit:

Bonsoir,

De lon et sans avoir testé, il faudrait le même nombre de divisions.


En effet, c'est une condition nécessaire, mais pas suffisante : parfois
ça tombe juste, d'autres fois non, et je ne vois pas pourquoi.
En plus de ça j'ai des durées (h:mm:ss) d'un côté et des grandes valeurs
de l'autre. Faut tâtonner...

--
Raph

Avatar
garnote
Salut Raph,

Ai-je bien compris ? Si ton histogramme contient un
axe secondaire et si pour l'échelle de l'axe principal :
Minimum = a
Maximum = b
Unité principale = c
Il faut alors que l'échelle de l'axe secondaire soit de
la forme :
Minimum = k*a + t
Maximum = k*b + t
Unité principale = k*c
où k et t sont des nombres quelconques.
Exemple :
Si a = 0, b = 90 et c = 10
Alors pour k = 1,7 et t = 4,5. Échelle secondaire :
Minimum = 4,5
Maximum = 157,5
Unité principale = 17

??? et ;-)))

Serge








"Raph" a écrit dans le message de news:
1g4ez96.1vh8ntx8xi2s1N%

Salut à tou(te)s,

Existe-t-il un moyen simple pour que dans un histogramme à 2 axes, le
quadrillage (horizontal) "relie" les valeurs des axes ?
Ceci par simple souci esthétique.


--
Raph


Avatar
raph
garnote écrit:

Salut Raph,


Salut Serge

Ai-je bien compris ? Si ton histogramme contient un
axe secondaire et si pour l'échelle de l'axe principal :
Minimum = a
Maximum = b
Unité principale = c
Il faut alors que l'échelle de l'axe secondaire soit de
la forme :
Minimum = k*a + t
Maximum = k*b + t
Unité principale = k*c
où k et t sont des nombres quelconques.
Exemple :
Si a = 0, b = 90 et c = 10
Alors pour k = 1,7 et t = 4,5. Échelle secondaire :
Minimum = 4,5
Maximum = 157,5
Unité principale = 17

??? et ;-)))


Euh oui ça m'a l'air logique, je vais tester à tête reposée :)
Il me faut, comme conditions de départ : a = b = 0
J'aimerais 6 ou 7 valeurs par axe.
Je prends un de mes exemples :
Les valeurs de l'axe 1 s'échelonnent de 0'23" à 43'25" (donc de
0,000266204 à 0,030381944 en format standard), tandis que celles de
l'axe 2 varient de 0 à... 4028.
Ça fait de très grands écarts.

Je vais essayer d'appliquer tes conseils, merci.


--
Raph

Avatar
garnote
Bonsoir Raph,

Un exemple qui, je l'espère, conviendra.

Histogramme
4 00:00:23
6 00:20:24
7 00:25:45
8 00:55:25

Courbe
4 0
6 456
7 2567
8 4028

J'ai superposé l'histogramme et la courbe.
J'ai nommé mon graphique «MonGraphique».

Essaie ça en prenant soin de mettre le forrmat nombre
de l'axe secondaire à 0 décimale.

Sub AxeSecondaire()
With ActiveSheet.ChartObjects("MonGraphique").Chart.axes(xlValue)
a = .MinimumScale
b = .MaximumScale
d = .MajorUnit
End With
With ActiveSheet.ChartObjects("MonGraphique").Chart.axes(xlValue,
xlSecondary)
.MinimumScale = 0
.MaximumScale = 4028
.MajorUnit = 4028 / (b / d)
.MinorUnit = 4028 / (b / d)
End With
End Sub

Serge

"Raph" a écrit dans le message de news:
1g4h3km.a3g1o718555axN%
garnote écrit:

Salut Raph,


Salut Serge

Ai-je bien compris ? Si ton histogramme contient un
axe secondaire et si pour l'échelle de l'axe principal :
Minimum = a
Maximum = b
Unité principale = c
Il faut alors que l'échelle de l'axe secondaire soit de
la forme :
Minimum = k*a + t
Maximum = k*b + t
Unité principale = k*c
où k et t sont des nombres quelconques.
Exemple :
Si a = 0, b = 90 et c = 10
Alors pour k = 1,7 et t = 4,5. Échelle secondaire :
Minimum = 4,5
Maximum = 157,5
Unité principale = 17

??? et ;-)))


Euh oui ça m'a l'air logique, je vais tester à tête reposée :)
Il me faut, comme conditions de départ : a = b = 0
J'aimerais 6 ou 7 valeurs par axe.
Je prends un de mes exemples :
Les valeurs de l'axe 1 s'échelonnent de 0'23" à 43'25" (donc de
0,000266204 à 0,030381944 en format standard), tandis que celles de
l'axe 2 varient de 0 à... 4028.
Ça fait de très grands écarts.

Je vais essayer d'appliquer tes conseils, merci.


--
Raph



Avatar
garnote
Plus général. J'ai nommé «histo» la plage contenant du temps
et «courbe» la plage contenant des nombres.

4 00:12:23
6 00:30:24
7 00:35:45
8 00:55:25

4 12
6 456
7 2567
8 5000

Cette macro, il me semble, permet d'ajuster les axes :

Sub Axes()
minc = WorksheetFunction.Min(Range("courbe"))
maxc = WorksheetFunction.Max(Range("courbe"))
minh = WorksheetFunction.Min(Range("histo"))
maxh = WorksheetFunction.Max(Range("histo"))
un = (maxh - minh) / 4
deux = (maxc - minc) / 4
With ActiveSheet.ChartObjects("MonGraphique").Chart.Axes(xlValue)
.MinimumScale = minh
.MaximumScale = maxh
.MajorUnit = un
.MinorUnit = un
End With
With ActiveSheet.ChartObjects("MonGraphique").Chart.Axes(xlValue,
xlSecondary)
.MinimumScale = minc
.MaximumScale = maxc
.MajorUnit = deux
.MinorUnit = deux
End With
End Sub
Avatar
raph
garnote écrit:

Bonsoir Raph,

Un exemple qui, je l'espère, conviendra.

Histogramme
4 00:00:23
6 00:20:24
7 00:25:45
8 00:55:25

Courbe
4 0
6 456
7 2567
8 4028

J'ai superposé l'histogramme et la courbe.
J'ai nommé mon graphique «MonGraphique».

Essaie ça en prenant soin de mettre le forrmat nombre
de l'axe secondaire à 0 décimale.

Sub AxeSecondaire()
With ActiveSheet.ChartObjects("MonGraphique").Chart.axes(xlValue)
a = .MinimumScale
b = .MaximumScale
d = .MajorUnit
End With
With ActiveSheet.ChartObjects("MonGraphique").Chart.axes(xlValue,
xlSecondary)
.MinimumScale = 0
.MaximumScale = 4028
.MajorUnit = 4028 / (b / d)
.MinorUnit = 4028 / (b / d)
End With
End Sub



Aïe, merci de t'être attaqué au problème par la face macro, mais je suis
bien embêté, je n'ai jamais trop réussi à en faire fonctionner
correctement, et pire, je ne sais déjà même pas nommer mon graphique
(c'est le titre ?)...
J'ai fini par trouver grâce à ton message précédent.

--
Raph

Avatar
garnote
Salut Raph,

Pour nommer un graphique :
Maintiens la touche Ctrl enfonçée et clique sur ton
graphique. Tu vas alors alors dans la zone de noms
(à gauche de la barre de formules) et tu écris le nom
que tu veux donner à ton graphique.
Pour faire fonctionner ma macro :
Copie ma macro
Tape Alt+F11 à partir de ta feuille
Colle ce que tu as copié

Serge

Aïe, merci de t'être attaqué au problème par la face macro, mais je suis
bien embêté, je n'ai jamais trop réussi à en faire fonctionner
correctement, et pire, je ne sais déjà même pas nommer mon graphique
(c'est le titre ?)...
J'ai fini par trouver grâce à ton message précédent.
Raph


Avatar
raph
garnote écrit:

Salut Raph,


Re salut Serge !

Pour nommer un graphique :
Maintiens la touche Ctrl enfonçée et clique sur ton
graphique. Tu vas alors alors dans la zone de noms
(à gauche de la barre de formules) et tu écris le nom
que tu veux donner à ton graphique.
Pour faire fonctionner ma macro :
Copie ma macro
Tape Alt+F11 à partir de ta feuille
Colle ce que tu as copié


Je suis sur Mac, avec Excel 98. Pas trouvé le moyen d'écrire dans la
zone de nom mais je vais bien finir par trouver :)


--
Raph