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

Graphique par macro, je nage...

14 réponses
Avatar
Pierre F.
Bonjour =E0 toutes et tous...

J'ai un tableau de donn=E9es dont je souhaiterais extraire une partie pou=
r=20
cr=E9er des graphiques (voir cijoint)

http://cjoint.com/?grszrCkQJZ

J'ai essay=E9 par avec l'enregistreur de macro... mais, si =E7a fonctionn=
e=20
pas trop mal pour le premier, =E7a plante d=E8s que j'essaie un 2e; bref,=
je=20
rame compl=E8tement :-(

Ent=EAtes des donn=E9es en ligne 5, colonnes D, F, H, J, L
Donn=E9es =E0 r=E9cup=E9rer dans les m=EAmes colonnes aux lignes suivante=
s (6 =E0 28)

Mais... Je souhaiterais que le graphique se cr=E9e d=E8s que l'utilisateu=
r=20
clique sur une cellule pr=E9cise, par exemple les donn=E9es de la ligne 7=
se=20
mettent en graphique si on clique sur la cellule O7 (ou sur un objet=20
plac=E9s sur O7); de plus, le titre du graphique doit =EAtre r=E9cup=E9r=E9=
dans=20
la colonne A de la m=EAme ligne.

en plus, je souhaiterais que le graphique se place sur l'espace Q6 - T28
et enfin (je sais j'suis lourd!) qu'en cliquant sur le graphique, il=20
disparaisse!!

je vous pas encore les param=E8tres du graphique: en courbes, sans l=E9ge=
nde=20
mais avec Titre li=E9, sans axe X, avec =E9tiquette "nom de cat=E9gorie" =

(taille 10), axe Y jusqu'=E0 100 (ce sont des %) et trait gras...
Pour =E7a, je devrais pouvoir m'en occuper apr=E8s; le gros du probl=E8me=
est=20
qu'Excel met des num=E9ros aux graphiques cr=E9=E9s et que ces num=E9ros =

changent au cours de la session...

Merci pour votre aide, m=EAme partielle.

Cordialement,
Pierre F.

10 réponses

1 2
Avatar
Daniel.C
Bonjour.
Essaie :
Sub test()
For Each c In Range([A6], [A65536].End(xlUp))
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
.SetSourceData Source:=Sheets("Feuil1").Range(c.Offset(, 3),
c.Offset(, 11))
.ChartType = xlLineMarkers
.HasTitle = True
.ChartTitle.Text = c.Value
.Legend.Delete
.Axes(xlCategory).MajorTickMark = xlNone
.Axes(xlCategory).TickLabelPosition = xlNone
.PlotArea.Interior.ColorIndex = 15
.SeriesCollection(1).XValues = "='Feuil1'!$D$5:$M$5"
.SeriesCollection(1).ApplyDataLabels
.SeriesCollection(1).DataLabels.ShowCategoryName = True
.SeriesCollection(1).DataLabels.ShowValue = False
End With
Next c
End Sub

Il faut y ajouter la taille et l'emplacement.
Cordialement.
Daniel

Bonjour à toutes et tous...

J'ai un tableau de données dont je souhaiterais extraire une partie pour
créer des graphiques (voir cijoint)

http://cjoint.com/?grszrCkQJZ

J'ai essayé par avec l'enregistreur de macro... mais, si ça fonctionne pas
trop mal pour le premier, ça plante dès que j'essaie un 2e; bref, je rame
complètement :-(

Entêtes des données en ligne 5, colonnes D, F, H, J, L
Données à récupérer dans les mêmes colonnes aux lignes suivantes (6 à 28)

Mais... Je souhaiterais que le graphique se crée dès que l'utilisateur clique
sur une cellule précise, par exemple les données de la ligne 7 se mettent en
graphique si on clique sur la cellule O7 (ou sur un objet placés sur O7); de
plus, le titre du graphique doit être récupéré dans la colonne A de la même
ligne.

en plus, je souhaiterais que le graphique se place sur l'espace Q6 - T28
et enfin (je sais j'suis lourd!) qu'en cliquant sur le graphique, il
disparaisse!!

je vous pas encore les paramètres du graphique: en courbes, sans légende mais
avec Titre lié, sans axe X, avec étiquette "nom de catégorie" (taille 10),
axe Y jusqu'à 100 (ce sont des %) et trait gras...
Pour ça, je devrais pouvoir m'en occuper après; le gros du problème est
qu'Excel met des numéros aux graphiques créés et que ces numéros changent au
cours de la session...

Merci pour votre aide, même partielle.

Cordialement,
Pierre F.


Avatar
Pierre F.
Daniel.C a écrit :
Bonjour.
Essaie :
Sub test()
For Each c In Range([A6], [A65536].End(xlUp))
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
.SetSourceData Source:=Sheets("Feuil1").Range(c.Offset(, 3),
c.Offset(, 11))
.ChartType = xlLineMarkers
.HasTitle = True
.ChartTitle.Text = c.Value
.Legend.Delete
.Axes(xlCategory).MajorTickMark = xlNone
.Axes(xlCategory).TickLabelPosition = xlNone
.PlotArea.Interior.ColorIndex = 15
.SeriesCollection(1).XValues = "='Feuil1'!$D$5:$M$5"
.SeriesCollection(1).ApplyDataLabels
.SeriesCollection(1).DataLabels.ShowCategoryName = True
.SeriesCollection(1).DataLabels.ShowValue = False
End With
Next c
End Sub



Merci Daniel pour cette réponse;

Le problème est un plantage de la macro à la seconde ligne

ActiveSheet.Shapes.AddChart.Select

Est-ce un problème de version d'Excel (j'ai office 2003)??

Merci.

Cordialement,
Pierre F.
Avatar
Daniel.C
Bonjour.
Essaie :

Sub test()
For Each c In Range([A6], [A65536].End(xlUp))
[A1].Select
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
.SetSourceData Source:=Sheets("Feuil1").Range(c.Offset(, 3),
c.Offset(, 11))
.ChartType = xlLineMarkers
.HasTitle = True
.ChartTitle.Text = c.Value
.Legend.Delete
.Axes(xlCategory).MajorTickMark = xlNone
.Axes(xlCategory).TickLabelPosition = xlNone
.PlotArea.Interior.ColorIndex = 15
.SeriesCollection(1).XValues = "='Feuil1'!$D$5:$M$5"
.SeriesCollection(1).ApplyDataLabels
.SeriesCollection(1).DataLabels.ShowCategoryName = True
.SeriesCollection(1).DataLabels.ShowValue = False
End With
Next c
End Sub

Daniel

Daniel.C a écrit :
Bonjour.
Essaie :
Sub test()
For Each c In Range([A6], [A65536].End(xlUp))
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
.SetSourceData Source:=Sheets("Feuil1").Range(c.Offset(, 3),
c.Offset(, 11))
.ChartType = xlLineMarkers
.HasTitle = True
.ChartTitle.Text = c.Value
.Legend.Delete
.Axes(xlCategory).MajorTickMark = xlNone
.Axes(xlCategory).TickLabelPosition = xlNone
.PlotArea.Interior.ColorIndex = 15
.SeriesCollection(1).XValues = "='Feuil1'!$D$5:$M$5"
.SeriesCollection(1).ApplyDataLabels
.SeriesCollection(1).DataLabels.ShowCategoryName = True
.SeriesCollection(1).DataLabels.ShowValue = False
End With
Next c
End Sub



Merci Daniel pour cette réponse;

Le problème est un plantage de la macro à la seconde ligne

ActiveSheet.Shapes.AddChart.Select

Est-ce un problème de version d'Excel (j'ai office 2003)??

Merci.

Cordialement,
Pierre F.


Avatar
LSteph
Bonjour,

plus simplement que des ellipses par double clic sur ligne voulue :



'dans code feuil1
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
Dim isect As Range
Set isect = Intersect(Target, [meslignes])
If isect Is Nothing Then Exit Sub
Cancel = True

Me.ChartObjects(1).Select
With ActiveChart
.SetSourceData Source:=Me.Range(Cells(isect.Row, 4),
Cells(isect.Row, 13))
.ChartTitle.Text = Cells(isect.Row, 1)
.SeriesCollection(1).XValues = "þuil1!R5C4:R5C13"
End With
End Sub

'lSteph


Pierre F. a écrit :
Bonjour à toutes et tous...

J'ai un tableau de données dont je souhaiterais extraire une partie pour
créer des graphiques (voir cijoint)

http://cjoint.com/?grszrCkQJZ

J'ai essayé par avec l'enregistreur de macro... mais, si ça fonctionne
pas trop mal pour le premier, ça plante dès que j'essaie un 2e; bref, je
rame complètement :-(

Entêtes des données en ligne 5, colonnes D, F, H, J, L
Données à récupérer dans les mêmes colonnes aux lignes suivantes (6 à 28)

Mais... Je souhaiterais que le graphique se crée dès que l'utilisateur
clique sur une cellule précise, par exemple les données de la ligne 7 se
mettent en graphique si on clique sur la cellule O7 (ou sur un objet
placés sur O7); de plus, le titre du graphique doit être récupéré dans
la colonne A de la même ligne.

en plus, je souhaiterais que le graphique se place sur l'espace Q6 - T28
et enfin (je sais j'suis lourd!) qu'en cliquant sur le graphique, il
disparaisse!!

je vous pas encore les paramètres du graphique: en courbes, sans légende
mais avec Titre lié, sans axe X, avec étiquette "nom de catégorie"
(taille 10), axe Y jusqu'à 100 (ce sont des %) et trait gras...
Pour ça, je devrais pouvoir m'en occuper après; le gros du problème est
qu'Excel met des numéros aux graphiques créés et que ces numéros
changent au cours de la session...

Merci pour votre aide, même partielle.

Cordialement,
Pierre F.


Avatar
LSteph
... precision:
creer le nom meslignes dans la feuille qui réf à celles de ton tableau

LSteph a écrit :
Bonjour,

plus simplement que des ellipses par double clic sur ligne voulue :



'dans code feuil1
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
Dim isect As Range
Set isect = Intersect(Target, [meslignes])
If isect Is Nothing Then Exit Sub
Cancel = True

Me.ChartObjects(1).Select
With ActiveChart
.SetSourceData Source:=Me.Range(Cells(isect.Row, 4),
Cells(isect.Row, 13))
.ChartTitle.Text = Cells(isect.Row, 1)
.SeriesCollection(1).XValues = "þuil1!R5C4:R5C13"
End With
End Sub

'lSteph


Pierre F. a écrit :
Bonjour à toutes et tous...

J'ai un tableau de données dont je souhaiterais extraire une partie
pour créer des graphiques (voir cijoint)

http://cjoint.com/?grszrCkQJZ

J'ai essayé par avec l'enregistreur de macro... mais, si ça fonctionne
pas trop mal pour le premier, ça plante dès que j'essaie un 2e; bref,
je rame complètement :-(

Entêtes des données en ligne 5, colonnes D, F, H, J, L
Données à récupérer dans les mêmes colonnes aux lignes suivantes (6 à 28)

Mais... Je souhaiterais que le graphique se crée dès que l'utilisateur
clique sur une cellule précise, par exemple les données de la ligne 7
se mettent en graphique si on clique sur la cellule O7 (ou sur un
objet placés sur O7); de plus, le titre du graphique doit être
récupéré dans la colonne A de la même ligne.

en plus, je souhaiterais que le graphique se place sur l'espace Q6 - T28
et enfin (je sais j'suis lourd!) qu'en cliquant sur le graphique, il
disparaisse!!

je vous pas encore les paramètres du graphique: en courbes, sans
légende mais avec Titre lié, sans axe X, avec étiquette "nom de
catégorie" (taille 10), axe Y jusqu'à 100 (ce sont des %) et trait
gras...
Pour ça, je devrais pouvoir m'en occuper après; le gros du problème
est qu'Excel met des numéros aux graphiques créés et que ces numéros
changent au cours de la session...

Merci pour votre aide, même partielle.

Cordialement,
Pierre F.




Avatar
LSteph
Re,Bonjour,

Finalement en regardant de plus pres la série je remarque qu'il faut
prendre une sur deux.
Je change donc un petit peu la méthode et la présentation ..et on gèr e
la disparition du graphique sur clic
ou sa réaaparition sur clic dans le tableau:

http://cjoint.com/?gslTrzBxGH


On aura défini dans le classeur le nom montableau correspondant au
tableau et le nom monindex on met 6 (par exemple)
voici le code:

'dans Feuil1
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim isect As Range, myI As Long
Set isect = Intersect(Target, [montableau])
If isect Is Nothing Then Exit Sub
Me.ChartObjects(1).Visible = True
myI = ActiveCell.Row
ActiveWorkbook.Names("monindex").RefersTo = myI - 5
ChartObjects(1).Select
With ActiveChart
.HasTitle = True
.ChartTitle.Text = Me.Cells(myI, 1)
End With
Application.EnableEvents = False
Target.Activate
Application.EnableEvents = True
End Sub

'dans module1
Option Explicit
Sub Graphique1_QuandClic()
ActiveSheet.ChartObjects(1).Visible = False
End Sub

'lSteph


On 17 juin, 18:26, "Pierre F." wrote:
Bonjour à toutes et tous...

J'ai un tableau de données dont je souhaiterais extraire une partie pou r
créer des graphiques (voir cijoint)

http://cjoint.com/?grszrCkQJZ

J'ai essayé par avec l'enregistreur de macro... mais, si ça fonctionn e
pas trop mal pour le premier, ça plante dès que j'essaie un 2e; bref, je
rame complètement :-(

Entêtes des données en ligne 5, colonnes D, F, H, J, L
Données à récupérer dans les mêmes colonnes aux lignes suivante s (6 à 28)

Mais... Je souhaiterais que le graphique se crée dès que l'utilisateu r
clique sur une cellule précise, par exemple les données de la ligne 7 se
mettent en graphique si on clique sur la cellule O7 (ou sur un objet
placés sur O7); de plus, le titre du graphique doit être récupér é dans
la colonne A de la même ligne.

en plus, je souhaiterais que le graphique se place sur l'espace Q6 - T28
et enfin (je sais j'suis lourd!) qu'en cliquant sur le graphique, il
disparaisse!!

je vous pas encore les paramètres du graphique: en courbes, sans lége nde
mais avec Titre lié, sans axe X, avec étiquette "nom de catégorie"
(taille 10), axe Y jusqu'à 100 (ce sont des %) et trait gras...
Pour ça, je devrais pouvoir m'en occuper après; le gros du problème est
qu'Excel met des numéros aux graphiques créés et que ces numéros
changent au cours de la session...

Merci pour votre aide, même partielle.

Cordialement,
Pierre F.


Avatar
Pierre F.
Daniel.C a écrit :
Bonjour.
Essaie :

Sub test()
For Each c In Range([A6], [A65536].End(xlUp))
[A1].Select
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
.SetSourceData Source:=Sheets("Feuil1").Range(c.Offset(, 3),
c.Offset(, 11))
.ChartType = xlLineMarkers
.HasTitle = True
.ChartTitle.Text = c.Value
.Legend.Delete
.Axes(xlCategory).MajorTickMark = xlNone
.Axes(xlCategory).TickLabelPosition = xlNone
.PlotArea.Interior.ColorIndex = 15
.SeriesCollection(1).XValues = "='Feuil1'!$D$5:$M$5"
.SeriesCollection(1).ApplyDataLabels
.SeriesCollection(1).DataLabels.ShowCategoryName = True
.SeriesCollection(1).DataLabels.ShowValue = False
End With
Next c
End Sub



Merci pour cette soluce.

Ça ne fonctionne hélas toujours pas; le message est "Erreur d'exécu tion
438": propriété ou méthodes non gérée par cet objet.

Cordialement,
Pierre F.
Avatar
LSteph
Re,

je remets au cas où tu ne le voies pas:

http://cjoint.com/?gslTrzBxGH

--
lSteph


On 18 juin, 16:23, "Pierre F." wrote:
Daniel.C a écrit :





> Bonjour.
> Essaie :

> Sub test()
> For Each c In Range([A6], [A65536].End(xlUp))
>    [A1].Select
>    ActiveSheet.Shapes.AddChart.Select
>    With ActiveChart
>        .SetSourceData Source:=Sheets("Feuil1").Range(c.Offset (, 3),
> c.Offset(, 11))
>        .ChartType = xlLineMarkers
>        .HasTitle = True
>        .ChartTitle.Text = c.Value
>        .Legend.Delete
>        .Axes(xlCategory).MajorTickMark = xlNone
>        .Axes(xlCategory).TickLabelPosition = xlNone
>        .PlotArea.Interior.ColorIndex = 15
>        .SeriesCollection(1).XValues = "='Feuil1'!$D$5:$M$5"
>        .SeriesCollection(1).ApplyDataLabels
>        .SeriesCollection(1).DataLabels.ShowCategoryName = Tru e
>        .SeriesCollection(1).DataLabels.ShowValue = False
>    End With
> Next c
> End Sub

Merci pour cette soluce.

Ça ne fonctionne hélas toujours pas; le message est "Erreur d'exécu tion
438": propriété ou méthodes non gérée par cet objet.

Cordialement,
Pierre F.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
Pierre F.
LSteph a écrit :
Re,Bonjour,

Finalement en regardant de plus pres la série je remarque qu'il faut
prendre une sur deux.
Je change donc un petit peu la méthode et la présentation ..et on g ère
la disparition du graphique sur clic
ou sa réaaparition sur clic dans le tableau:

http://cjoint.com/?gslTrzBxGH



Merci pour cette soluce qui me débloque d'une bonne tranche.

Quelques petites questions tout de même, sans vouloir abuser :-)

> monindex on met 6 (par exemple)

6 parce que ça commence à la ligne 6 ?

> ActiveWorkbook.Names("monindex").RefersTo = myI - 5

même question que ci-dessus: le -5 parce que sinon, il n'y a pas de
données ?

Dernière question:

Le tableau adapte son échelle aux nombres de chaque ligne; est-ul
possible de figer cette échelle, en particulier l'axe 2 que je
souhaiterais voir bloqué à 100 (comme les données sont des %, il ne
devrait pas y avoir de soucis.

Cordialement,
Pierre F.
Avatar
Pierre F.
LSteph a écrit :
Re,

je remets au cas où tu ne le voies pas:

http://cjoint.com/?gslTrzBxGH




Merci, je l'avais vu... et je viens de te répondre :-); c'est juste que
j'ai eu une journée de m... et que je viens d'allumer mon ordi :-) et
que j'ai pris mes messages dans l'ordre chronologique...

A+
Pierre F.
1 2