VB: adresse de feuille
fred
-
Armojax Messages postés 1860 Date d'inscription Statut Membre Dernière intervention -
Armojax Messages postés 1860 Date d'inscription Statut Membre Dernière intervention -
salut à tous !!
g écrit le code suivant qui fixe la valeur des 3 séries traitées par un graphique sur une page "Retour"
Mais je desire mettre mon graph sur ma page "tableau", et je n'arrive pas à modifier mon code pour lui dire de ne plus prendre les valeurs dans la page active mais dans "Retour"
Voilà le code original:
Sub GRAPH_suivi_eco()
'
' GRAPH_suivi_eco Macro
' Macro enregistrée le 14/06/2005 par rieusset
'
ActiveSheet.ChartObjects("Graphique 5").Activate
ActiveChart.Axes(xlValue).Select
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(1).Values = Range("I4", Range("I1000").End(xlUp))
ActiveChart.SeriesCollection(2).Values = Range("J4", Range("J1000").End(xlUp))
ActiveChart.SeriesCollection(3).Values = Range("K4", Range("K1000").End(xlUp))
End Sub
g éssayé en mettant Sheets("Retour").Range(...) pour chaque série mais ça ne marche pas...
je sais que c pas bien compliqué mais je suis bloqué.
Si vous avez la réponse n'hésitez pas !!!
g écrit le code suivant qui fixe la valeur des 3 séries traitées par un graphique sur une page "Retour"
Mais je desire mettre mon graph sur ma page "tableau", et je n'arrive pas à modifier mon code pour lui dire de ne plus prendre les valeurs dans la page active mais dans "Retour"
Voilà le code original:
Sub GRAPH_suivi_eco()
'
' GRAPH_suivi_eco Macro
' Macro enregistrée le 14/06/2005 par rieusset
'
ActiveSheet.ChartObjects("Graphique 5").Activate
ActiveChart.Axes(xlValue).Select
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(1).Values = Range("I4", Range("I1000").End(xlUp))
ActiveChart.SeriesCollection(2).Values = Range("J4", Range("J1000").End(xlUp))
ActiveChart.SeriesCollection(3).Values = Range("K4", Range("K1000").End(xlUp))
End Sub
g éssayé en mettant Sheets("Retour").Range(...) pour chaque série mais ça ne marche pas...
je sais que c pas bien compliqué mais je suis bloqué.
Si vous avez la réponse n'hésitez pas !!!
A voir également:
- VB: adresse de feuille
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Vb editor - Télécharger - Langages
- Vb runtime - Télécharger - Divers Utilitaires
- Vb express - Télécharger - Langages
6 réponses
Hello fred,
Dur, dur...
Je modifie couramment les SeriesCollection(n).Values, mais jamais en changeant de feuille. Et là, comme toi, je tombe sur un os, et j'aime pas ça.
D'où l'hypothèse suivante, qui ne me satisfait pas pour le moment.
A la création d'un graphique, Excel ne propose que deux solutions :
- soit loger le graphique dans la même feuille de calcul que celle où se trouvent les données,
- soit le loger dans une feuille graphique (Chart, pas WorkSheet).
Ce qui pourrait vouloir dire, dans ton cas, qu'Excel considère que les données sont à prendre forcément dans la feuille où se trouve le graphique.
Je vais continuer à creuser ce truc qui m'agace.
Si quelqu'un a des tuyaux sur la question, il est le bienvenu.
Dur, dur...
Je modifie couramment les SeriesCollection(n).Values, mais jamais en changeant de feuille. Et là, comme toi, je tombe sur un os, et j'aime pas ça.
D'où l'hypothèse suivante, qui ne me satisfait pas pour le moment.
A la création d'un graphique, Excel ne propose que deux solutions :
- soit loger le graphique dans la même feuille de calcul que celle où se trouvent les données,
- soit le loger dans une feuille graphique (Chart, pas WorkSheet).
Ce qui pourrait vouloir dire, dans ton cas, qu'Excel considère que les données sont à prendre forcément dans la feuille où se trouve le graphique.
Je vais continuer à creuser ce truc qui m'agace.
Si quelqu'un a des tuyaux sur la question, il est le bienvenu.
Y'a un truc quelque part... A la main on y arrive, donc y'a forcément un moyen de le dire.
Je verrai ça demain.
Je verrai ça demain.
salut Fred,
j'ai simplement créé ce code avec l'enregistreur de macro, et ça fonctionne chez moi...
ActiveChart.SeriesCollection(1).Values = "=Feuil1!R2C1:R2C4"
j'ai simplement créé ce code avec l'enregistreur de macro, et ça fonctionne chez moi...
ActiveChart.SeriesCollection(1).Values = "=Feuil1!R2C1:R2C4"
Bonjour fred,
Voilà une proposition :
Dans la mesure où structure de la plage de données, en passant de la feuille "Retour" à "Tableau", est conservée, il n'y a pas besoin de redéfinir les SeriesCollection.
J'ai mis Range("H4:K" & Ligne), (H4 et non pas I4) pour mon test, car j'avais des étiquettes d'abscisses en colonne H, et les données en colonnes I, J, K, donc la plage source partait bien de H4. Tu adaptes...
Regarde si ça fait ce que tu veux. Pour moi ça a l'air OK.
Voilà une proposition :
Sub GRAPH_suivi_eco() Dim Ligne As Long Ligne = Sheets("Tableau").Range("I1000").End(xlUp).Row ActiveSheet.ChartObjects("Graphique 5").Activate ActiveChart.SetSourceData Source:=Sheets("Tableau").Range("H4:K" & Ligne), PlotBy:=xlColumns End SubEn utilisant SetSourceData, je pense que ça marche. En tout cas, le test que je viens de faire fonctionne.
Dans la mesure où structure de la plage de données, en passant de la feuille "Retour" à "Tableau", est conservée, il n'y a pas besoin de redéfinir les SeriesCollection.
J'ai mis Range("H4:K" & Ligne), (H4 et non pas I4) pour mon test, car j'avais des étiquettes d'abscisses en colonne H, et les données en colonnes I, J, K, donc la plage source partait bien de H4. Tu adaptes...
Regarde si ça fait ce que tu veux. Pour moi ça a l'air OK.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
salut armojax!
g essayé ta proc c bon ça prend bien les données dans la bonne feuille. Par contre mes étiquettes sont dans la colonne A et mes ordonnées sont respectivement dans les colonnes I J et K j'arrive pas à écrire ma ligne source.
g essayé ta proc c bon ça prend bien les données dans la bonne feuille. Par contre mes étiquettes sont dans la colonne A et mes ordonnées sont respectivement dans les colonnes I J et K j'arrive pas à écrire ma ligne source.
carrément ça marche nickel !!!
merci beaucoup armojax! g bossé sur un projet de tableau de bord pour la gestion de projet en batiment ces 4 derniers mois. Mon stage touche à sa fin et je voulais te remercier car sans ton aide précieuse et celle des autres programmeurs je serais jamais venu à bout des macros que je n'avais jamais manipulé avant.
Merci et bonne continuation. ;-)
merci beaucoup armojax! g bossé sur un projet de tableau de bord pour la gestion de projet en batiment ces 4 derniers mois. Mon stage touche à sa fin et je voulais te remercier car sans ton aide précieuse et celle des autres programmeurs je serais jamais venu à bout des macros que je n'avais jamais manipulé avant.
Merci et bonne continuation. ;-)