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.
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.
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
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.
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
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 :
creer le nom meslignes dans la feuille qui réf à celles de ton tableau
LSteph a écrit :
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."
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.
je remets au cas où tu ne le voies pas:
http://cjoint.com/?gslTrzBxGH
--
lSteph
On 18 juin, 16:23, "Pierre F."
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.
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.