[EXCEL] Automatisation création graphisme

Fermé
Orvieto Messages postés 2 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 5 février 2008 - 5 févr. 2008 à 14:34
 Ivanhoe - 14 févr. 2008 à 01:02
Voici le problème, je désire automatiser la création graphique.
J'ai un tableau composée de lignes, chaque ligne comprend :
Le nom de la série ; valeur 1 ; valeur 2 ; valeur 3 ; valeur 4 ; le dit graphique (un radar reprenant les 4 valeurs et avec le nom d ela série comme titre).

Facile, mais vu qu'il y a 200 lignes, je souhaiterais bien automatiser la création de ligne.

J'ai essayé de créer une macro, mais il me fait x fois des graph avec les valeurs de la ligne ayant servi de modèle.

Si vous avez des idées...

Voici le code de la macro qui NE fonctionne PAS :

Sub Graph_auto()
'
' Graph_auto Macro
' Macro enregistrée le 05/02/2008 par Ph.
'
' Touche de raccourci du clavier: Ctrl+ù
'
ActiveCell.Offset(0, -5).Range("A1:E1").Select
Range("A3:E3").Select
Charts.Add
ActiveChart.ChartType = xlRadarFilled
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("A3:E3"), PlotBy:= _
xlRows
ActiveChart.SeriesCollection(1).XValues = "=Feuil1!R1C2:R1C5"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "B"
End With
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
ActiveChart.HasLegend = False
ActiveSheet.Shapes("Graphique 2").ScaleWidth 0.72, msoFalse, _
msoScaleFromBottomRight
ActiveSheet.Shapes("Graphique 2").ScaleHeight 0.4, msoFalse, _
msoScaleFromBottomRight
ActiveSheet.Shapes("Graphique 2").ScaleWidth 1.19, msoFalse, _
msoScaleFromBottomRight
ActiveSheet.Shapes("Graphique 2").ScaleHeight 1.93, msoFalse, _
msoScaleFromBottomRight
ActiveSheet.Shapes("Graphique 2").ScaleWidth 0.89, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Graphique 2").ScaleHeight 0.89, msoFalse, _
msoScaleFromTopLeft
End Sub


D'avance merci.1 message(s) posté(s) depuis le mardi 5 février 2008
--------------------------------------------------------------------------------
Il n'y a pas de question bête, seul les réponses le sont parfois
A voir également:

1 réponse

Bonjour Orvieto,
je vais m'efforcer de faire une réponse la moins bête possible !

C'est normal que ta macro te génére toujours le même graphique, puisque l'adresse de la plage de cellule à traiter est écrite "en dur" dans ton code :
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("A3:E3"), PlotBy:= xlRows
A chaque fois, c'est la plage A3:E3 qui est traitée. Je suppose que tu souhaites sélectionner une ligne de données, taper Ctrl + ù et que le graphique généré corresponde à la ligne sélectionnée ?

Suggestion :
Supprime ces deux lignes qui ne servent à rien d'autre qu'à sélectionner des plages inutiles :
ActiveCell.Offset(0, -5).Range("A1:E1").Select
Range("A3:E3").Select

Modifie comme suit l'instruction sus-sus-mentionnée :
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range(activecell, activecell.offset(0,4)), PlotBy:= xlRows
Ainsi l'adresse de la source de données dépend de la cellule sélectionnée (il faut sélectionner la cellule A de la ligne souhaitée)

Je ne garantis pas que ça marche tel quel, mais c'est dans ce sens qu'il faut chercher.
Note que quand ça marchera, tu pourras ajouter une boucle pour générer d'un seul clic tes 200 graphiques (y en a-t-il vraiment 200 ?!??)

A suivre...
0