Graphique par macro, je nage...

Le
Pierre F.
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #19588651
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.


Pierre F.
Le #19590291
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.
Daniel.C
Le #19591231
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.


LSteph
Le #19591831
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.


LSteph
Le #19591821
... 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.




LSteph
Le #19592331
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."
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.


Pierre F.
Le #19594091
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.
LSteph
Le #19594081
Re,

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

http://cjoint.com/?gslTrzBxGH

--
lSteph


On 18 juin, 16:23, "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 = 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 -


Pierre F.
Le #19594071
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.
Pierre F.
Le #19594061
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.
Publicité
Poster une réponse
Anonyme