nanardino64
Messages postés131Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention17 mars 2010
-
14 janv. 2008 à 17:08
nanardino64
Messages postés131Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention17 mars 2010
-
15 janv. 2008 à 13:38
Bonsoir,
Mon problème cette fois ci est le suivant :
Je souhaite créer un graphique avec du code mais il se passe des choses bizarres... Voilà le code :
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = ValeurX
ActiveChart.SeriesCollection(1).Values = ValeurY
ValeurX et ValeurY sont des rangepour définir les plages de cellules sources pour le graphique.
Cette méthode ne marche pas (en fait ça a marché une fois à force de bidouiller mais je n'arrive plus à le refaire) mais vu que mes plages de données bougent tout le temps j'ai besoin d'un moyen de définition de ce style : Set ValeurX = Sheets(Nom_Feuille).Range(Cells(2, Col), Cells(2, Col_Fin))
Col et Col_fin sont deux variables integer.
Quelqu'un connait la solution svp ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 14 janv. 2008 à 20:44
Salut
Je n'y connais pas grand chose en graphique Excel, mais voilà l'idée que j'en ai :
Je n'ai pas testé et certains termes ne sont peut-être pas juste - à vérifier
Première chose : bizarrerie :
ActiveChart.SeriesCollection(1).XValues = ValeurX
ActiveChart.SeriesCollection(1).Values = ValeurY
1ere ligne : XValues et 2ème ligne, Values tout court : Est-ce normal ????
Ton code correspond à la création du graphique.
Si tu ne veux que modifier l'étendue de ton graphique après création, il ne faut modifier que les 2 dernières lignes.
Tu peux donc mettre ces lignes dans une Sub et faire apparaitre ces valeurs dans les paramètres. Exemple :
Private Sub ModifEtendue(idCourbe As Chart, newValeurX As Long, newValeurY As Long) ' Pas sûr du 'Chart'
idCourbe.SeriesCollection(1).XValues = newValeurX
idCourbe.SeriesCollection(1).Values = newValeurY
End Sub
Et quand tu modifies la plage de cellule, il te suffit de :
- préparer les valeurs ValeurX et ValeurY (tel que tu l'as décrit à la fin de ta question)
- faire appel à cette Sub
Call ModifEtendue(ActiveChart, ValeurX, ValeurY)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
nanardino64
Messages postés131Date d'inscriptionvendredi 18 août 2006StatutMembreDernière intervention17 mars 2010 15 janv. 2008 à 13:38
Salut,
merci de répondre,
'Première chose : bizarrerie :
'ActiveChart.SeriesCollection(1).XValues = ValeurX
'ActiveChart.SeriesCollection(1).Values = ValeurY
'1ere ligne : XValues et 2ème ligne, Values tout court : Est-ce normal ????
Oui c'est tout à fait normal, XValues définit l'axe des x pour le graphique et Values les valeurs de chaque série (on superpose les courbes). Dans cet exemple je n'ai qu'une série donc c'est vrai que c'était pas parlant mais à terme j'en aurai plusieurs.
Mon seul problème c'est juste de définir ActiveChart.SeriesCollection(1).XValues car avec la variable ValeurX ça ne marche pas alors que ça devrait : Charts("Chart1").SeriesCollection(1). XValues = Worksheets("Sheet1").Range("B1:B5")
Donc ValeurX (idem pour ValeurY) dimensionné en range devrait marcher, mais non... il me met un message d'erreur comme quoi il n'arrive pas à définir la propriété XValues. Sinon le code fonctionne et prend en compte les modifs.