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

[VBA] graphique tracer une parallèle avec Valeurs X & Valeurs Y

6 réponses
Avatar
twinley
Bonjour,

Quelqu'un aurait-il des connaissances ou un liens pour créer une parallèle à
une droite de régression (ou une droite ordinaire) ?

La création de la droite de reg est maîtrisée ainsi que la récupération des
cofficients de l'équation de la droite.
Pour le déplacement, je rentre les données source de la nouvelle série sous
la forme
Valeurs X = {10.0}
Valeurs Y = {3534,9.3533,08}
Mon soucis c'est de déplacer cette parallèle avec précision et à discrétion.
J'agis uniquement sur Valeurs X = {10.0}
qui devient Valeurs X = {12.2}. Curieusement à la main c'est ok mais quand
je met la même valeur par VBA, je perds le parallélisme... et je
m'embrouille. Je ne suis pas loin pourtant.
Bien sur je recompose la chaîne {12.2} dans une var TLa = "={" & TLa1 & ","
& TLb1 & "}"

Sheets("Graph1").Range("B12,P12,B22,P22").Copy
ActiveSheet.ChartObjects("Graphique 1m").Activate
ActiveChart.SeriesCollection.Paste NewSeries:=True
ActiveChart.SeriesCollection(5).XValues = TLa ' ex :
"={10.0}"
ActiveChart.SeriesCollection(5).Values = TLb ' ex :
"={3534,9.3533,08}"
ActiveChart.SeriesCollection(5).Trendlines.Add(Forward:=10).Select

Toute aide sera fortement appréciée.
--
à+twinley

6 réponses

Avatar
Michel B.
Bonjour,

Je ne suis pas sur que cela puisse vous aider, mais
enfin, voici un exemple de création de simple ligne
que j'utilise dans un formulaire :

Sub InsereLignes()

'Haut de page
ActiveSheet.Shapes.AddLine(50#, 65#, 168#, 65#).Select
ActiveSheet.Shapes.AddLine(52#, 87#, 168#, 87#).Select
ActiveSheet.Shapes.AddLine(220#, 65#, 337#, 65#).Select
ActiveSheet.Shapes.AddLine(220#, 87#, 397#, 87#).Select

ActiveSheet.Shapes.AddLine(648#, 65#, 704#, 65#).Select

'Bas de page
ActiveSheet.Shapes.AddLine(50#, 473#, 206#, 473#).Select
ActiveSheet.Shapes.AddLine(218#, 473#, 296#, 473#).Select
ActiveSheet.Shapes.AddLine(352#, 473#, 565#, 473#).Select
ActiveSheet.Shapes.AddLine(580#, 473#, 665#, 473#).Select

End Sub

@+
Michel B.

-----Message d'origine-----
Bonjour,

Quelqu'un aurait-il des connaissances ou un liens pour
créer une parallèle à

une droite de régression (ou une droite ordinaire) ?

La création de la droite de reg est maîtrisée ainsi que
la récupération des

cofficients de l'équation de la droite.
Pour le déplacement, je rentre les données source de la
nouvelle série sous

la forme
Valeurs X = {10.0}
Valeurs Y = {3534,9.3533,08}
Mon soucis c'est de déplacer cette parallèle avec
précision et à discrétion.

J'agis uniquement sur Valeurs X = {10.0}
qui devient Valeurs X = {12.2}. Curieusement à la main
c'est ok mais quand

je met la même valeur par VBA, je perds le
parallélisme... et je

m'embrouille. Je ne suis pas loin pourtant.
Bien sur je recompose la chaîne {12.2} dans une var TLa
= "={" & TLa1 & ","

& TLb1 & "}"

Sheets("Graph1").Range("B12,P12,B22,P22").Copy
ActiveSheet.ChartObjects("Graphique 1m").Activate
ActiveChart.SeriesCollection.Paste NewSeries:=True
ActiveChart.SeriesCollection(5).XValues =
TLa ' ex :

"={10.0}"
ActiveChart.SeriesCollection(5).Values =
TLb ' ex :

"={3534,9.3533,08}"
ActiveChart.SeriesCollection(5).Trendlines.Add
(Forward:).Select


Toute aide sera fortement appréciée.
--
à+twinley


.



Avatar
twinley
Bonjour Michel,

Oups, surprenant ! ça trace au beau milieu de la feuille. Merci pour cette
avancée remarquable.
Dès que je peux l'adapter à un graphique, ce code va faire merveille.
L'objet s'appelle Trait 34 et ainsi de suite. Étonnant.

# c'est bien pour la déclaration var as double ?

--
à+twinley
"Michel B." a écrit dans le message de
news:589e01c491c3$08f0b720$
Bonjour,

Je ne suis pas sur que cela puisse vous aider, mais
enfin, voici un exemple de création de simple ligne
que j'utilise dans un formulaire :

Sub InsereLignes()

'Haut de page
ActiveSheet.Shapes.AddLine(50#, 65#, 168#, 65#).Select
ActiveSheet.Shapes.AddLine(52#, 87#, 168#, 87#).Select
ActiveSheet.Shapes.AddLine(220#, 65#, 337#, 65#).Select
ActiveSheet.Shapes.AddLine(220#, 87#, 397#, 87#).Select

ActiveSheet.Shapes.AddLine(648#, 65#, 704#, 65#).Select

'Bas de page
ActiveSheet.Shapes.AddLine(50#, 473#, 206#, 473#).Select
ActiveSheet.Shapes.AddLine(218#, 473#, 296#, 473#).Select
ActiveSheet.Shapes.AddLine(352#, 473#, 565#, 473#).Select
ActiveSheet.Shapes.AddLine(580#, 473#, 665#, 473#).Select

End Sub

@+
Michel B.

-----Message d'origine-----
Bonjour,

Quelqu'un aurait-il des connaissances ou un liens pour
créer une parallèle à

une droite de régression (ou une droite ordinaire) ?

La création de la droite de reg est maîtrisée ainsi que
la récupération des

cofficients de l'équation de la droite.
Pour le déplacement, je rentre les données source de la
nouvelle série sous

la forme
Valeurs X = {10.0}
Valeurs Y = {3534,9.3533,08}
Mon soucis c'est de déplacer cette parallèle avec
précision et à discrétion.

J'agis uniquement sur Valeurs X = {10.0}
qui devient Valeurs X = {12.2}. Curieusement à la main
c'est ok mais quand

je met la même valeur par VBA, je perds le
parallélisme... et je

m'embrouille. Je ne suis pas loin pourtant.
Bien sur je recompose la chaîne {12.2} dans une var TLa
= "={" & TLa1 & ","

& TLb1 & "}"

Sheets("Graph1").Range("B12,P12,B22,P22").Copy
ActiveSheet.ChartObjects("Graphique 1m").Activate
ActiveChart.SeriesCollection.Paste NewSeries:=True
ActiveChart.SeriesCollection(5).XValues TLa ' ex :
"={10.0}"
ActiveChart.SeriesCollection(5).Values TLb ' ex :
"={3534,9.3533,08}"
ActiveChart.SeriesCollection(5).Trendlines.Add
(Forward:).Select


Toute aide sera fortement appréciée.
--
à+twinley


.



Avatar
Michel B.
Bonjour,

.. en fait, je ne suis encore que très peu familier
avec ce type d'objet. Pour ce qui est du #, je vais
devoir référer à mon bouquin, car selon l'aide, les
variable des paramètres devrait être du type "Single".

Je ne me souviens plus, si ce n'est un mode absolue,
versus un mode relatif de positionnement. Je vais
jeter un coup d'oeil ce soir et je t'en informe.

@+
Michel

-----Message d'origine-----
Bonjour Michel,

Oups, surprenant ! ça trace au beau milieu de la feuille.
Merci pour cette

avancée remarquable.
Dès que je peux l'adapter à un graphique, ce code va
faire merveille.

L'objet s'appelle Trait 34 et ainsi de suite. Étonnant.

# c'est bien pour la déclaration var as double ?

--
à+twinley
"Michel B." a écrit
dans le message de

news:589e01c491c3$08f0b720$
Bonjour,

Je ne suis pas sur que cela puisse vous aider, mais
enfin, voici un exemple de création de simple ligne
que j'utilise dans un formulaire :

Sub InsereLignes()

'Haut de page
ActiveSheet.Shapes.AddLine(50#, 65#, 168#, 65#).Select
ActiveSheet.Shapes.AddLine(52#, 87#, 168#, 87#).Select
ActiveSheet.Shapes.AddLine(220#, 65#, 337#, 65#).Select
ActiveSheet.Shapes.AddLine(220#, 87#, 397#, 87#).Select

ActiveSheet.Shapes.AddLine(648#, 65#, 704#, 65#).Select

'Bas de page
ActiveSheet.Shapes.AddLine(50#, 473#, 206#, 473#).Select
ActiveSheet.Shapes.AddLine(218#, 473#, 296#, 473#).Select
ActiveSheet.Shapes.AddLine(352#, 473#, 565#, 473#).Select
ActiveSheet.Shapes.AddLine(580#, 473#, 665#, 473#).Select

End Sub

@+
Michel B.

-----Message d'origine-----
Bonjour,

Quelqu'un aurait-il des connaissances ou un liens pour
créer une parallèle à

une droite de régression (ou une droite ordinaire) ?

La création de la droite de reg est maîtrisée ainsi que
la récupération des

cofficients de l'équation de la droite.
Pour le déplacement, je rentre les données source de la
nouvelle série sous

la forme
Valeurs X = {10.0}
Valeurs Y = {3534,9.3533,08}
Mon soucis c'est de déplacer cette parallèle avec
précision et à discrétion.

J'agis uniquement sur Valeurs X = {10.0}
qui devient Valeurs X = {12.2}. Curieusement à la main
c'est ok mais quand

je met la même valeur par VBA, je perds le
parallélisme... et je

m'embrouille. Je ne suis pas loin pourtant.
Bien sur je recompose la chaîne {12.2} dans une var TLa
= "={" & TLa1 & ","

& TLb1 & "}"

Sheets("Graph1").Range("B12,P12,B22,P22").Copy
ActiveSheet.ChartObjects("Graphique 1m").Activate
ActiveChart.SeriesCollection.Paste NewSeries:=True
ActiveChart.SeriesCollection(5).XValues =
TLa ' ex :

"={10.0}"
ActiveChart.SeriesCollection(5).Values =
TLb ' ex :

"={3534,9.3533,08}"
ActiveChart.SeriesCollection(5).Trendlines.Add
(Forward:).Select


Toute aide sera fortement appréciée.
--
à+twinley


.




.




Avatar
twinley
Je te remercie, je me suis servi de l'enregistreur et j'ai trouvé les
syntaxes, et la signification des champs.
Je n'avais pas pensé au dessin et cela offre des possibilités que je vais
exploiter pour des repères visuels rapides.
Toutefois pour ma parallèle je dois la traiter en valeur "vraie" dans ses
repères X et Y référencés pour garder les fonctions de zoom et autres
gadgets...
Tu m'as donné une bonne idée. Bonne soirée.
--
à+twinley
"Michel B." a écrit dans le message de
news:5c1201c491db$de587160$
Bonjour,

.. en fait, je ne suis encore que très peu familier
avec ce type d'objet. Pour ce qui est du #, je vais
devoir référer à mon bouquin, car selon l'aide, les
variable des paramètres devrait être du type "Single".

Je ne me souviens plus, si ce n'est un mode absolue,
versus un mode relatif de positionnement. Je vais
jeter un coup d'oeil ce soir et je t'en informe.

@+
Michel

-----Message d'origine-----
Bonjour Michel,

Oups, surprenant ! ça trace au beau milieu de la feuille.
Merci pour cette

avancée remarquable.
Dès que je peux l'adapter à un graphique, ce code va
faire merveille.

L'objet s'appelle Trait 34 et ainsi de suite. Étonnant.

# c'est bien pour la déclaration var as double ?

--
à+twinley
"Michel B." a écrit
dans le message de

news:589e01c491c3$08f0b720$
Bonjour,

Je ne suis pas sur que cela puisse vous aider, mais
enfin, voici un exemple de création de simple ligne
que j'utilise dans un formulaire :

Sub InsereLignes()

'Haut de page
ActiveSheet.Shapes.AddLine(50#, 65#, 168#, 65#).Select
ActiveSheet.Shapes.AddLine(52#, 87#, 168#, 87#).Select
ActiveSheet.Shapes.AddLine(220#, 65#, 337#, 65#).Select
ActiveSheet.Shapes.AddLine(220#, 87#, 397#, 87#).Select

ActiveSheet.Shapes.AddLine(648#, 65#, 704#, 65#).Select

'Bas de page
ActiveSheet.Shapes.AddLine(50#, 473#, 206#, 473#).Select
ActiveSheet.Shapes.AddLine(218#, 473#, 296#, 473#).Select
ActiveSheet.Shapes.AddLine(352#, 473#, 565#, 473#).Select
ActiveSheet.Shapes.AddLine(580#, 473#, 665#, 473#).Select

End Sub

@+
Michel B.

-----Message d'origine-----
Bonjour,

Quelqu'un aurait-il des connaissances ou un liens pour
créer une parallèle à

une droite de régression (ou une droite ordinaire) ?

La création de la droite de reg est maîtrisée ainsi que
la récupération des

cofficients de l'équation de la droite.
Pour le déplacement, je rentre les données source de la
nouvelle série sous

la forme
Valeurs X = {10.0}
Valeurs Y = {3534,9.3533,08}
Mon soucis c'est de déplacer cette parallèle avec
précision et à discrétion.

J'agis uniquement sur Valeurs X = {10.0}
qui devient Valeurs X = {12.2}. Curieusement à la main
c'est ok mais quand

je met la même valeur par VBA, je perds le
parallélisme... et je

m'embrouille. Je ne suis pas loin pourtant.
Bien sur je recompose la chaîne {12.2} dans une var TLa
= "={" & TLa1 & ","

& TLb1 & "}"

Sheets("Graph1").Range("B12,P12,B22,P22").Copy
ActiveSheet.ChartObjects("Graphique 1m").Activate
ActiveChart.SeriesCollection.Paste NewSeries:=True
ActiveChart.SeriesCollection(5).XValues >TLa ' ex :
"={10.0}"
ActiveChart.SeriesCollection(5).Values >TLb ' ex :
"={3534,9.3533,08}"
ActiveChart.SeriesCollection(5).Trendlines.Add
(Forward:).Select


Toute aide sera fortement appréciée.
--
à+twinley


.




.




Avatar
Jean-Jacques \(JJP\)
Bonjour,

Je ne sais pas si j'ai bien compris la question.

Une droit répond à y : ax +b

Regarde que donne la droite de régression, en demandant la formule, et du
applique le décalage que tu veux pour la //.

@+
JJP

twinley urd%
a écrit dans le message de news :

Je te remercie, je me suis servi de l'enregistreur et j'ai trouvé les
syntaxes, et la signification des champs.
Je n'avais pas pensé au dessin et cela offre des possibilités que je
vais exploiter pour des repères visuels rapides.
Toutefois pour ma parallèle je dois la traiter en valeur "vraie" dans
ses repères X et Y référencés pour garder les fonctions de zoom et
autres gadgets...
Tu m'as donné une bonne idée. Bonne soirée.

-----Message d'origine-----
Bonjour Michel,

Oups, surprenant ! ça trace au beau milieu de la feuille.
Merci pour cette

avancée remarquable.
Dès que je peux l'adapter à un graphique, ce code va
faire merveille.

L'objet s'appelle Trait 34 et ainsi de suite. Étonnant.

# c'est bien pour la déclaration var as double ?

--
à+twinley
"Michel B." a écrit
dans le message de

news:589e01c491c3$08f0b720$
Bonjour,

Je ne suis pas sur que cela puisse vous aider, mais
enfin, voici un exemple de création de simple ligne
que j'utilise dans un formulaire :

Sub InsereLignes()

'Haut de page
ActiveSheet.Shapes.AddLine(50#, 65#, 168#, 65#).Select
ActiveSheet.Shapes.AddLine(52#, 87#, 168#, 87#).Select
ActiveSheet.Shapes.AddLine(220#, 65#, 337#, 65#).Select
ActiveSheet.Shapes.AddLine(220#, 87#, 397#, 87#).Select

ActiveSheet.Shapes.AddLine(648#, 65#, 704#, 65#).Select

'Bas de page
ActiveSheet.Shapes.AddLine(50#, 473#, 206#, 473#).Select
ActiveSheet.Shapes.AddLine(218#, 473#, 296#, 473#).Select
ActiveSheet.Shapes.AddLine(352#, 473#, 565#, 473#).Select
ActiveSheet.Shapes.AddLine(580#, 473#, 665#, 473#).Select

End Sub

@+
Michel B.

-----Message d'origine-----
Bonjour,

Quelqu'un aurait-il des connaissances ou un liens pour
créer une parallèle à

une droite de régression (ou une droite ordinaire) ?

La création de la droite de reg est maîtrisée ainsi que
la récupération des

cofficients de l'équation de la droite.
Pour le déplacement, je rentre les données source de la
nouvelle série sous

la forme
Valeurs X = {10.0}
Valeurs Y = {3534,9.3533,08}
Mon soucis c'est de déplacer cette parallèle avec
précision et à discrétion.

J'agis uniquement sur Valeurs X = {10.0}
qui devient Valeurs X = {12.2}. Curieusement à la main
c'est ok mais quand

je met la même valeur par VBA, je perds le
parallélisme... et je

m'embrouille. Je ne suis pas loin pourtant.
Bien sur je recompose la chaîne {12.2} dans une var TLa
= "={" & TLa1 & ","

& TLb1 & "}"

Sheets("Graph1").Range("B12,P12,B22,P22").Copy
ActiveSheet.ChartObjects("Graphique 1m").Activate
ActiveChart.SeriesCollection.Paste NewSeries:=True
ActiveChart.SeriesCollection(5).XValues >> TLa ' ex :
"={10.0}"
ActiveChart.SeriesCollection(5).Values >> TLb ' ex :
"={3534,9.3533,08}"
ActiveChart.SeriesCollection(5).Trendlines.Add
(Forward:).Select

Toute aide sera fortement appréciée.
--
à+twinley


.




.





Avatar
twinley
Bonjour JJ

Merci pour ta réponse.
Effectivement je récupère l'équation y=ax+b de la droite de régression et je
recalcule la valeur des points de départ et d'arrivée en Y. Après je trace
avec les quatre points X(1,2) et Y(1,2).
Et je modifie manuellement les points en X. Le décalage de la nouvelle
droite garde bien le parallélisme.
Quand je le fais avec le code VBA, j'ai moins de réussite et je perd le
parallélisme. Et la parallèle se pose là ou elle veut. Après je tâtonne et
j'arrive à la placer mais je dois encore bosser pour trouver l'automatisme
complet.
D'ou ma question, si un exemple traîne quelque part ?
Michel B. m'a montré une autre façon visuelle de faire les droites mais
elles sont hors repère.
Cela va me servir, j'ai malgré tout besoin de maîtriser un tracé dans le
repère XY.
D'ailleurs quand je serai au point, je soumettrai mon code aux grands
maîtres. Cela fera peut être une macro didacticiel, car je n'ai rien trouvé
sur le sujet.
--
à+twinley
"Jean-Jacques (JJP)" a écrit dans le message de
news:%
Bonjour,

Je ne sais pas si j'ai bien compris la question.

Une droit répond à y : ax +b

Regarde que donne la droite de régression, en demandant la formule, et du
applique le décalage que tu veux pour la //.

@+
JJP

twinley urd%
a écrit dans le message de news :

Je te remercie, je me suis servi de l'enregistreur et j'ai trouvé les
syntaxes, et la signification des champs.
Je n'avais pas pensé au dessin et cela offre des possibilités que je
vais exploiter pour des repères visuels rapides.
Toutefois pour ma parallèle je dois la traiter en valeur "vraie" dans
ses repères X et Y référencés pour garder les fonctions de zoom et
autres gadgets...
Tu m'as donné une bonne idée. Bonne soirée.

-----Message d'origine-----
Bonjour Michel,

Oups, surprenant ! ça trace au beau milieu de la feuille.
Merci pour cette

avancée remarquable.
Dès que je peux l'adapter à un graphique, ce code va
faire merveille.

L'objet s'appelle Trait 34 et ainsi de suite. Étonnant.

# c'est bien pour la déclaration var as double ?

--
à+twinley
"Michel B." a écrit
dans le message de

news:589e01c491c3$08f0b720$
Bonjour,

Je ne suis pas sur que cela puisse vous aider, mais
enfin, voici un exemple de création de simple ligne
que j'utilise dans un formulaire :

Sub InsereLignes()

'Haut de page
ActiveSheet.Shapes.AddLine(50#, 65#, 168#, 65#).Select
ActiveSheet.Shapes.AddLine(52#, 87#, 168#, 87#).Select
ActiveSheet.Shapes.AddLine(220#, 65#, 337#, 65#).Select
ActiveSheet.Shapes.AddLine(220#, 87#, 397#, 87#).Select

ActiveSheet.Shapes.AddLine(648#, 65#, 704#, 65#).Select

'Bas de page
ActiveSheet.Shapes.AddLine(50#, 473#, 206#, 473#).Select
ActiveSheet.Shapes.AddLine(218#, 473#, 296#, 473#).Select
ActiveSheet.Shapes.AddLine(352#, 473#, 565#, 473#).Select
ActiveSheet.Shapes.AddLine(580#, 473#, 665#, 473#).Select

End Sub

@+
Michel B.

-----Message d'origine-----
Bonjour,

Quelqu'un aurait-il des connaissances ou un liens pour
créer une parallèle à

une droite de régression (ou une droite ordinaire) ?

La création de la droite de reg est maîtrisée ainsi que
la récupération des

cofficients de l'équation de la droite.
Pour le déplacement, je rentre les données source de la
nouvelle série sous

la forme
Valeurs X = {10.0}
Valeurs Y = {3534,9.3533,08}
Mon soucis c'est de déplacer cette parallèle avec
précision et à discrétion.

J'agis uniquement sur Valeurs X = {10.0}
qui devient Valeurs X = {12.2}. Curieusement à la main
c'est ok mais quand

je met la même valeur par VBA, je perds le
parallélisme... et je

m'embrouille. Je ne suis pas loin pourtant.
Bien sur je recompose la chaîne {12.2} dans une var TLa
= "={" & TLa1 & ","

& TLb1 & "}"

Sheets("Graph1").Range("B12,P12,B22,P22").Copy
ActiveSheet.ChartObjects("Graphique 1m").Activate
ActiveChart.SeriesCollection.Paste NewSeries:=True
ActiveChart.SeriesCollection(5).XValues > >> TLa ' ex :
"={10.0}"
ActiveChart.SeriesCollection(5).Values > >> TLb ' ex :
"={3534,9.3533,08}"
ActiveChart.SeriesCollection(5).Trendlines.Add
(Forward:).Select

Toute aide sera fortement appréciée.
--
à+twinley


.




.