Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Graphique xy avec axe variable

9 réponses
Avatar
jduval
Bonjour à tous,
Bon, je reformule ma question parce j'ai un peu avancé sur le sujet.
j'expose mon problème
Je dispose d'un graphique xy avec l'axe des x contenant des dates (un très
grand nombre sous la forme jj:mm:aa hh:mm:ss). Je souhaite avoir un accès
direct sur la valeur min et max de l'axe des x.
J'utilise :
ChartObjects(1).Chart.Axes(xlCategory).MinimumScale = Cells(30, 6).Value
et /ou
ChartObjects(1).Chart.Axes(xlCategory).MaximumScale = [F31]

Pour l'instant grâce à ce code, je parviens à modifier l'échelle de l'axe en
changeant moi même la valeur de deux cellules, mais pour faire plus sioux je
voudrai que ces cellules soit pilotées par une barre de défilement or cela
ne marche pas. Je pense qu'il faudrait que la cellule cible de ma barre de
défilement soit validée à chaque changement mais je ne voit pas comment
faire.

Bon j'espère que c'est assez clair

Merci d'avance

9 réponses

Avatar
twinley
Bonjour,

Sub Graph()Dim Mini, MaxiMini = Sheets("synthèse").Range("F5")Maxi Sheets("synthèse").Range("F6") With ActiveChart.Axes(xlValue)
.MinimumScale = Mini .MaximumScale = Maxi End WithEnd Sub
--
à+twinley
"jduval" a écrit dans le message de
news:
Bonjour à tous,
Bon, je reformule ma question parce j'ai un peu avancé sur le sujet.
j'expose mon problème
Je dispose d'un graphique xy avec l'axe des x contenant des dates (un très
grand nombre sous la forme jj:mm:aa hh:mm:ss). Je souhaite avoir un accès
direct sur la valeur min et max de l'axe des x.
J'utilise :
ChartObjects(1).Chart.Axes(xlCategory).MinimumScale = Cells(30, 6).Value
et /ou
ChartObjects(1).Chart.Axes(xlCategory).MaximumScale = [F31]

Pour l'instant grâce à ce code, je parviens à modifier l'échelle de l'axe
en

changeant moi même la valeur de deux cellules, mais pour faire plus sioux
je

voudrai que ces cellules soit pilotées par une barre de défilement or cela
ne marche pas. Je pense qu'il faudrait que la cellule cible de ma barre de
défilement soit validée à chaque changement mais je ne voit pas comment
faire.

Bon j'espère que c'est assez clair

Merci d'avance




Avatar
twinley
ou bien
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. Un point ne pourra donc jamais toucher le bas du
graphique.

Pour le max, cette condition est inutile (on rajoute toujours +10 à
l'arrondi inférieur).
--
à+twinley
"jduval" a écrit dans le message de
news:
Bonjour à tous,
Bon, je reformule ma question parce j'ai un peu avancé sur le sujet.
j'expose mon problème
Je dispose d'un graphique xy avec l'axe des x contenant des dates (un très
grand nombre sous la forme jj:mm:aa hh:mm:ss). Je souhaite avoir un accès
direct sur la valeur min et max de l'axe des x.
J'utilise :
ChartObjects(1).Chart.Axes(xlCategory).MinimumScale = Cells(30, 6).Value
et /ou
ChartObjects(1).Chart.Axes(xlCategory).MaximumScale = [F31]

Pour l'instant grâce à ce code, je parviens à modifier l'échelle de l'axe
en

changeant moi même la valeur de deux cellules, mais pour faire plus sioux
je

voudrai que ces cellules soit pilotées par une barre de défilement or cela
ne marche pas. Je pense qu'il faudrait que la cellule cible de ma barre de
défilement soit validée à chaque changement mais je ne voit pas comment
faire.

Bon j'espère que c'est assez clair

Merci d'avance




Avatar
twinley
Je recommence, tout est cassé, désolé

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

--
à+twinley
"jduval" a écrit dans le message de
news:
Bonjour à tous,
Bon, je reformule ma question parce j'ai un peu avancé sur le sujet.
j'expose mon problème
Je dispose d'un graphique xy avec l'axe des x contenant des dates (un très
grand nombre sous la forme jj:mm:aa hh:mm:ss). Je souhaite avoir un accès
direct sur la valeur min et max de l'axe des x.
J'utilise :
ChartObjects(1).Chart.Axes(xlCategory).MinimumScale = Cells(30, 6).Value
et /ou
ChartObjects(1).Chart.Axes(xlCategory).MaximumScale = [F31]

Pour l'instant grâce à ce code, je parviens à modifier l'échelle de l'axe
en

changeant moi même la valeur de deux cellules, mais pour faire plus sioux
je

voudrai que ces cellules soit pilotées par une barre de défilement or cela
ne marche pas. Je pense qu'il faudrait que la cellule cible de ma barre de
défilement soit validée à chaque changement mais je ne voit pas comment
faire.

Bon j'espère que c'est assez clair

Merci d'avance




Avatar
twinley
mieux disposé

Sub Graph()
Dim Mini, Maxi
Mini = Sheets("synthèse").Range("F5")
Maxi =Sheets("synthèse").Range("F6")
With ActiveChart
.Axes(xlValue)
.MinimumScale = Mini
.MaximumScale = Maxi
End With
End Sub

--
à+twinley
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de
news:
Bonjour,

--
à+twinley


"jduval" a écrit dans le message de
news:
Bonjour à tous,
Bon, je reformule ma question parce j'ai un peu avancé sur le sujet.
j'expose mon problème
Je dispose d'un graphique xy avec l'axe des x contenant des dates (un
très


grand nombre sous la forme jj:mm:aa hh:mm:ss). Je souhaite avoir un
accès


direct sur la valeur min et max de l'axe des x.
J'utilise :
ChartObjects(1).Chart.Axes(xlCategory).MinimumScale = Cells(30, 6).Value
et /ou
ChartObjects(1).Chart.Axes(xlCategory).MaximumScale = [F31]

Pour l'instant grâce à ce code, je parviens à modifier l'échelle de
l'axe


en
changeant moi même la valeur de deux cellules, mais pour faire plus
sioux


je
voudrai que ces cellules soit pilotées par une barre de défilement or
cela


ne marche pas. Je pense qu'il faudrait que la cellule cible de ma barre
de


défilement soit validée à chaque changement mais je ne voit pas comment
faire.

Bon j'espère que c'est assez clair

Merci d'avance









Avatar
jduval
Merci twinley
Cela marche bien mais comment puis je faire pour que l'échelle change sans
être obliger de lancer la macro à chaque fois
Merci


"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:

Bonjour,

Sub Graph()Dim Mini, MaxiMini = Sheets("synthèse").Range("F5")Maxi > Sheets("synthèse").Range("F6") With ActiveChart.Axes(xlValue)
.MinimumScale = Mini .MaximumScale = Maxi End WithEnd Sub
--
à+twinley
"jduval" a écrit dans le message de
news:
Bonjour à tous,
Bon, je reformule ma question parce j'ai un peu avancé sur le sujet.
j'expose mon problème
Je dispose d'un graphique xy avec l'axe des x contenant des dates (un
très
grand nombre sous la forme jj:mm:aa hh:mm:ss). Je souhaite avoir un accès
direct sur la valeur min et max de l'axe des x.
J'utilise :
ChartObjects(1).Chart.Axes(xlCategory).MinimumScale = Cells(30, 6).Value
et /ou
ChartObjects(1).Chart.Axes(xlCategory).MaximumScale = [F31]

Pour l'instant grâce à ce code, je parviens à modifier l'échelle de l'axe
en

changeant moi même la valeur de deux cellules, mais pour faire plus sioux
je

voudrai que ces cellules soit pilotées par une barre de défilement or
cela
ne marche pas. Je pense qu'il faudrait que la cellule cible de ma barre
de
défilement soit validée à chaque changement mais je ne voit pas comment
faire.

Bon j'espère que c'est assez clair

Merci d'avance








Avatar
jduval
Merci twinley
Cela marche bien mais comment puis je faire pour que l'échelle change sans
être obliger de lancer la macro à chaque fois
Merci
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:

mieux disposé

Sub Graph()
Dim Mini, Maxi
Mini = Sheets("synthèse").Range("F5")
Maxi =Sheets("synthèse").Range("F6")
With ActiveChart
.Axes(xlValue)
.MinimumScale = Mini
.MaximumScale = Maxi
End With
End Sub

--
à+twinley
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de
news:
Bonjour,

--
à+twinley


"jduval" a écrit dans le message de
news:
Bonjour à tous,
Bon, je reformule ma question parce j'ai un peu avancé sur le sujet.
j'expose mon problème
Je dispose d'un graphique xy avec l'axe des x contenant des dates (un
très


grand nombre sous la forme jj:mm:aa hh:mm:ss). Je souhaite avoir un
accès


direct sur la valeur min et max de l'axe des x.
J'utilise :
ChartObjects(1).Chart.Axes(xlCategory).MinimumScale = Cells(30,
6).Value
et /ou
ChartObjects(1).Chart.Axes(xlCategory).MaximumScale = [F31]

Pour l'instant grâce à ce code, je parviens à modifier l'échelle de
l'axe


en
changeant moi même la valeur de deux cellules, mais pour faire plus
sioux


je
voudrai que ces cellules soit pilotées par une barre de défilement or
cela


ne marche pas. Je pense qu'il faudrait que la cellule cible de ma barre
de


défilement soit validée à chaque changement mais je ne voit pas comment
faire.

Bon j'espère que c'est assez clair

Merci d'avance













Avatar
twinley
Bonsoir,

Excuse moi pour les posts cassés.
Tu peux lancer la sub graph à chaque fois que tu exécutes ton programme, ou
bien sur un test
if ta_valeur > maximumscale then
graph
end if
et l'inverse si ta valeur < minimumscale
par exemple...

--
à+twinley
"jduval" a écrit dans le message de
news:
Merci twinley
Cela marche bien mais comment puis je faire pour que l'échelle change sans
être obliger de lancer la macro à chaque fois
Merci
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:

mieux disposé

Sub Graph()
Dim Mini, Maxi
Mini = Sheets("synthèse").Range("F5")
Maxi =Sheets("synthèse").Range("F6")
With ActiveChart
.Axes(xlValue)
.MinimumScale = Mini
.MaximumScale = Maxi
End With
End Sub

--
à+twinley
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de
news:
Bonjour,

--
à+twinley


"jduval" a écrit dans le message de
news:
Bonjour à tous,
Bon, je reformule ma question parce j'ai un peu avancé sur le sujet.
j'expose mon problème
Je dispose d'un graphique xy avec l'axe des x contenant des dates (un
très


grand nombre sous la forme jj:mm:aa hh:mm:ss). Je souhaite avoir un
accès


direct sur la valeur min et max de l'axe des x.
J'utilise :
ChartObjects(1).Chart.Axes(xlCategory).MinimumScale = Cells(30,
6).Value
et /ou
ChartObjects(1).Chart.Axes(xlCategory).MaximumScale = [F31]

Pour l'instant grâce à ce code, je parviens à modifier l'échelle de
l'axe


en
changeant moi même la valeur de deux cellules, mais pour faire plus
sioux


je
voudrai que ces cellules soit pilotées par une barre de défilement or
cela


ne marche pas. Je pense qu'il faudrait que la cellule cible de ma
barre




de
défilement soit validée à chaque changement mais je ne voit pas
comment




faire.

Bon j'espère que c'est assez clair

Merci d'avance

















Avatar
jduval
Ca marche
Merci pour tout

JD

"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:

Bonsoir,

Excuse moi pour les posts cassés.
Tu peux lancer la sub graph à chaque fois que tu exécutes ton programme,
ou
bien sur un test
if ta_valeur > maximumscale then
graph
end if
et l'inverse si ta valeur < minimumscale
par exemple...

--
à+twinley
"jduval" a écrit dans le message de
news:
Merci twinley
Cela marche bien mais comment puis je faire pour que l'échelle change
sans
être obliger de lancer la macro à chaque fois
Merci
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:

mieux disposé

Sub Graph()
Dim Mini, Maxi
Mini = Sheets("synthèse").Range("F5")
Maxi =Sheets("synthèse").Range("F6")
With ActiveChart
.Axes(xlValue)
.MinimumScale = Mini
.MaximumScale = Maxi
End With
End Sub

--
à+twinley
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de
news:
Bonjour,

--
à+twinley


"jduval" a écrit dans le message de
news:
Bonjour à tous,
Bon, je reformule ma question parce j'ai un peu avancé sur le
sujet.
j'expose mon problème
Je dispose d'un graphique xy avec l'axe des x contenant des dates
(un
très


grand nombre sous la forme jj:mm:aa hh:mm:ss). Je souhaite avoir un
accès


direct sur la valeur min et max de l'axe des x.
J'utilise :
ChartObjects(1).Chart.Axes(xlCategory).MinimumScale = Cells(30,
6).Value
et /ou
ChartObjects(1).Chart.Axes(xlCategory).MaximumScale = [F31]

Pour l'instant grâce à ce code, je parviens à modifier l'échelle de
l'axe


en
changeant moi même la valeur de deux cellules, mais pour faire plus
sioux


je
voudrai que ces cellules soit pilotées par une barre de défilement
or
cela


ne marche pas. Je pense qu'il faudrait que la cellule cible de ma
barre




de
défilement soit validée à chaque changement mais je ne voit pas
comment




faire.

Bon j'espère que c'est assez clair

Merci d'avance





















Avatar
twinley
de rien

--
à+twinley
"jduval" a écrit dans le message de
news:%23$
Ca marche
Merci pour tout

JD

"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:

Bonsoir,

Excuse moi pour les posts cassés.
Tu peux lancer la sub graph à chaque fois que tu exécutes ton programme,
ou
bien sur un test
if ta_valeur > maximumscale then
graph
end if
et l'inverse si ta valeur < minimumscale
par exemple...

--
à+twinley
"jduval" a écrit dans le message de
news:
Merci twinley
Cela marche bien mais comment puis je faire pour que l'échelle change
sans
être obliger de lancer la macro à chaque fois
Merci
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de news:

mieux disposé

Sub Graph()
Dim Mini, Maxi
Mini = Sheets("synthèse").Range("F5")
Maxi =Sheets("synthèse").Range("F6")
With ActiveChart
.Axes(xlValue)
.MinimumScale = Mini
.MaximumScale = Maxi
End With
End Sub

--
à+twinley
"twinley" <twinleym(at)hotmail.com> a écrit dans le message de
news:
Bonjour,

--
à+twinley


"jduval" a écrit dans le message de
news:
Bonjour à tous,
Bon, je reformule ma question parce j'ai un peu avancé sur le
sujet.
j'expose mon problème
Je dispose d'un graphique xy avec l'axe des x contenant des dates
(un
très


grand nombre sous la forme jj:mm:aa hh:mm:ss). Je souhaite avoir
un






accès
direct sur la valeur min et max de l'axe des x.
J'utilise :
ChartObjects(1).Chart.Axes(xlCategory).MinimumScale = Cells(30,
6).Value
et /ou
ChartObjects(1).Chart.Axes(xlCategory).MaximumScale = [F31]

Pour l'instant grâce à ce code, je parviens à modifier l'échelle
de






l'axe
en
changeant moi même la valeur de deux cellules, mais pour faire
plus






sioux
je
voudrai que ces cellules soit pilotées par une barre de défilement
or
cela


ne marche pas. Je pense qu'il faudrait que la cellule cible de ma
barre




de
défilement soit validée à chaque changement mais je ne voit pas
comment




faire.

Bon j'espère que c'est assez clair

Merci d'avance