Graphe avec longueur de série variable en VBA

kris12

XLDnaute Nouveau
Bonjour à tous,

J'ai effectué une recherche sur le forum, mais aucun des problèmes qui se rapprochaient du mien n'a pu réellement m'aider. Je vous explique donc mon problème : je veux tracer un graphe grâce à VBA, qui me le créera dans une nouvelle feuille (ça pas de problème je sais le faire), le problème vient de la longueur de mes séries. En effet le tableau dans lequel le graphe vient piocher les valeurs de X et Y, peut varier et comporte 10 valeurs comme 500. Donc le code utilisé pour mon graphe précédemment créé est celui là, donc très basique :


Code:
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=Condensation!$A$6:$A$12"
ActiveChart.SeriesCollection(1).Values = "=Condensation!$L$6:$L$12"
ActiveChart.SeriesCollection(1).Name = "=Condensation!$L$4"


Mais comment lui donner une longueur aléatoire? J'ai bien essayé de créer un cellule où j'indique le nombre de valeur à prendre en compte pour mes séries mais il n'accepte pas cet méthode :



Code:
'Dim z As Integer


'z = Sheets("Condensation").Cells(2, 7).Value

ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=Condensation!$A$6:$A$6+z"
ActiveChart.SeriesCollection(1).Values = "=Condensation!$L$6:$L$6+z"
ActiveChart.SeriesCollection(1).Name = "=Condensation!$L$4"

Est ce que quelqu'un pourrait m'aider? Je pense pas que ça soit très compliqué mais je ne sais pas comment l'écrire exactement

Merci d'avance
 

Efgé

XLDnaute Barbatruc
Re : Graphe avec longueur de série variable en VBA

Bonjour kris12, Pour récupérer la dernière ligne remplie en colonne A:
VB:
X = Sheets("Condensation").Cells(Rows.Count, 1).End(xlUp).Row
Ensuite les formules devraient être sous la forme R1C1:
VB:
ActiveChart.SeriesCollection(1).XValues = "=Condensation!R6C1:R" & X & "C1"
Cordialement
 

kris12

XLDnaute Nouveau
Re : Graphe avec longueur de série variable en VBA

Salut Efgé et merci de ta réponse,

J'avais déjà tenté cette méthode de boucle mais je n'avais pas réussi à la faire fonctionner. Et il me ressort une erreur "La méthode 'Rows' de l'objet '_Global' à échoué" au moment de déterminer le nombre de ligne à prendre en compte...
 

Misange

XLDnaute Barbatruc
Re : Graphe avec longueur de série variable en VBA

Bonjour Kris, le fil
Si tes données source sont sous forme d'un tableau excel (onglet accueil/Style/mettre sous forme de tableau), il te suffit d'indiquer que la source du graphique est "lenomdutableau" et c'est automatiquement dynamique. (ou définir des noms à partir des colonnes du tableau (le "vrai" toujours) et les utiliser là encore comme source.
Tu peux faire tout le reste par VBA si tu veux mais plus besoin de définir tes séries.
Dommage d'avoir acheté 2010 et de faire des graphiques comme si tu n'avais q'excel 97 :)
 

kris12

XLDnaute Nouveau
Re : Graphe avec longueur de série variable en VBA

Bonjour Kris, le fil
Si tes données source sont sous forme d'un tableau excel (onglet accueil/Style/mettre sous forme de tableau), il te suffit d'indiquer que la source du graphique est "lenomdutableau" et c'est automatiquement dynamique. (ou définir des noms à partir des colonnes du tableau (le "vrai" toujours) et les utiliser là encore comme source.
Tu peux faire tout le reste par VBA si tu veux mais plus besoin de définir tes séries.
Dommage d'avoir acheté 2010 et de faire des graphiques comme si tu n'avais q'excel 97 :)

Salut misange,

alors non mes données ne sont pas sous forme de tableau excel et j'ai excel 2010 parce que c'est le poste du bureau, je n'e l'ai pas choisi par choix ^^, c'est pourquoi je suis plus habitué au ancienne version et je me sens plus libre si je n'utilise pas un tableau prédéfini

Sinon je ne comprends tjrs pas pourquoi il ne reconnait pas la boucle Cells(Rows.Count, 1).End(xlUp).Row :confused:
 

Efgé

XLDnaute Barbatruc
Re : Graphe avec longueur de série variable en VBA

Re , X doit proter le numéro de la dernière ligne donc
VB:
Dim X As Long
puis, (et ce n'est pas une boucle...)
VB:
X = Sheets("Condensation").Cells(Rows.Count, 1).End(xlUp).Row
sans S à la fin du dernier Row. On part du nombre de lignes qu'il y a sur la feuille (Rows.Count). Là on utilise la collection des lignes donc un S. Après on récupère le numéro de la ligne (ce numéro est unique, donc pas de S). Cordialement
 

Discussions similaires

Réponses
0
Affichages
175

Statistiques des forums

Discussions
312 446
Messages
2 088 491
Membres
103 870
dernier inscrit
didiexcel