madjb
Messages postés38Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention 7 février 2014
-
21 avril 2008 à 10:35
Acta_6
Messages postés29Date d'inscriptionmercredi 25 avril 2007StatutMembreDernière intervention22 avril 2008
-
21 avril 2008 à 18:18
Bonjour,
J'ai un petit soucis au niveau de génération de graphique. J'ai cherché sur le net mais encore rien trouvé la dessus.
Je me permet de vous demander. J'ai fait une boucle qui génére trois
graphique pour les afficher sur ma feuille acceuil dans excel. Cela
marche parfaitement sauf que les graphiques s'affichent les un sur les
autres... alors que je voudrais qu'ils soient alligné en colonnes.
Acta_6
Messages postés29Date d'inscriptionmercredi 25 avril 2007StatutMembreDernière intervention22 avril 2008 21 avril 2008 à 13:29
Ben, du coup, tu n'as qu'a insérer dans ta sub graph (après ton end with) les 3 lignes que j'ai mis dans le 1er post. Et tu l'alignes sur la ligne et la colonne que tu veux.
Ca donne quelque chose du style:
Sub graph(selection As Range, iNumGraph as Integer)
Dim oGraphic As Object
En admettant que tes graphiques prennent pas plus de 20 lignes de ton classeur. (Et ton iNumGraph valant successivement 0, 1, 2
Sinon, tu peux aussi essayer de récupérer le bas du précédent graphique et de laepasser en paramêtre de ta sub graph.
Du coup, ca ressemblerait plutot a:
Sub graph(selection As Range, byRef lPreviousBottom as Integer)
Dim oGraphic As Object
Acta_6
Messages postés29Date d'inscriptionmercredi 25 avril 2007StatutMembreDernière intervention22 avril 2008 21 avril 2008 à 18:18
Si ton abscisse est toujours la même.
Inutile de le passer en paramêtre de ta sub graph
Tu le définit en "dur" dans ta macro.
Essaie d'utiliser ceci:
ActiveChart.SeriesCollection(1).XValues = "=" & Sname & "!R1C1:R16384C1" J'ai mis 16384 pour rentrer une ligne mais faut voir ton cas a toi. C'est sensé être la dernière ligne de tes données. Peut-être même qu'il faut mettre dans ton cas la toute dernière ligne d'une feuille excel (65536 je crois).
Ou alors, tu peux essayer:
ActiveChart.SeriesCollection(1).XValues = "=" & Sname & "!C1:C1"
Bref, tu écris cette ligne juste après:
ActiveChart.SetSourceData Source:=selection, PlotBy:= _
xlColumns
Acta_6
Messages postés29Date d'inscriptionmercredi 25 avril 2007StatutMembreDernière intervention22 avril 2008 21 avril 2008 à 12:09
Tu n'as qu'a utiliser les propriétés Left et Top de ton graphic.
Ex qui devrait marcher: (que tu peux simplifier en fonction de ce que tu veux faire)
Const GRAPHIC_SHEET="Feuil1"
dim oGraphic as object
dim i1ereLigneDuGraphique1 as integer
dim i1ereColonneDuGraphique1 as integer
dim i1ereLigneDuGraphique2 as integer
dim i1ereColonneDuGraphique2 as integer
dim i1ereLigneDuGraphique3 as integer
dim i1ereColonneDuGraphique3 as integer
'Ajout de ton graphique
'Et après chaque ajout.....
Set oGraphic = ThisWorkbook.Sheets(GRAPHIC_SHEET).ChartObjects(ThisWorkbook.Sheets(GRAPHIC_SHEET).ChartObjects.Count)
oGraphic.Top = ThisWorkbook.Sheets(GRAPHIC_SHEET).Rows(i1ereLigneDuGraphique1 ).Top
oGraphic.Left = ThisWorkbook.Sheets(GRAPHIC_SHEET).Columns(i1ereColonneDuGraphique1).Left
oGraphic.Name="Graphique 1"
.
.
.