[VBA] Excel : modifier des graphes
Fermé
ruzakruzak
Messages postés
459
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
31 mai 2007
-
14 mai 2007 à 15:22
JMPS - 27 août 2007 à 13:31
JMPS - 27 août 2007 à 13:31
Bonjour.
Je me galère pour achever une macro sur Excel.
J'ai un document, actualisé chaque mois, qui contient 8 graphiques comportant chacun 2 ou 3 séries de données.
Chaque mois, une nouvelle valeur est ajoutée à chaque série, et je cherche à faire décaler automatiquement la DataSource d'une case à chaque fois, pour ne faire apparaitre sur les graphes que les 12 dernières données (ex : présenter en avril 2007 les chiffres d'avril 06 à mars 07, en mai 2007 les chiffres de mai 06 à avril07, etc.). Et ce sur tous les graphes présents sur la feuille.
Qui pourrait me mettre sur la bonne piste ?? D'avance, merci.
Je me galère pour achever une macro sur Excel.
J'ai un document, actualisé chaque mois, qui contient 8 graphiques comportant chacun 2 ou 3 séries de données.
Chaque mois, une nouvelle valeur est ajoutée à chaque série, et je cherche à faire décaler automatiquement la DataSource d'une case à chaque fois, pour ne faire apparaitre sur les graphes que les 12 dernières données (ex : présenter en avril 2007 les chiffres d'avril 06 à mars 07, en mai 2007 les chiffres de mai 06 à avril07, etc.). Et ce sur tous les graphes présents sur la feuille.
Qui pourrait me mettre sur la bonne piste ?? D'avance, merci.
A voir également:
- [VBA] Excel : modifier des graphes
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
- Excel compter cellule couleur sans vba - Guide
5 réponses
A votre place, je prendrai une table de référence fixe, en L1C1, et un index correspondant à MOIS(MAINTENANT), à partir de ce moment la, chaque valeur de la plage fixe peut être déterminée du style =INDEX(L(-3);;L(-1)C) et le tour est joué !!!
En résumé, une zone fixe donnant la source du graphe, la zone étant elle même indexée sur des valeurs mouvantes.
Irem
En résumé, une zone fixe donnant la source du graphe, la zone étant elle même indexée sur des valeurs mouvantes.
Irem
ruzakruzak
Messages postés
459
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
31 mai 2007
247
14 mai 2007 à 16:47
14 mai 2007 à 16:47
Merci IREM pour la suggestion.
Effectivement ça marche bien mais (à moins d'avoir compris de travers, ce qui n'aurait rien de surprenant) ce n'est pas ce que je souhaite :
L'organisation de mon document est la suivante :
1 feuille de présentation avec les graphes, et 1 autre avec les données.
Pour la feuille de données, j'ai un tableau avec en colonne A la description des contenus, en colonnes B à M les données ajoutées chaque mois, et en colonne Z un ensemble de formules (des Recherchev() principalement) qui alimentent des tableaux sur la feuille de présentation.
Je souhaite garder la colonne Z telle quelle car ça marche très bien, je récupère bien à chaque fois les données du mois précédent, mais les graphiques doivent représenter les chiffres des 12 derniers mois, chaque mois.
Jusqu'ici ça faisait moins d'un an depuis la mise en place de ce tableau de bord, donc les zones vides du graphes étaient peuplées au fur et à mesure, mais maintenant que j'ai plus de 12 mois il faut que je n'affiche, pour chaque graphique, que les 12 derniers mois, et non l'intégralité des chiffres depuis le début...
J'ai essayé avezc l'index, l'idée est bonne mais je ne parviens pas à mon objectif. D'autres idées ??
Effectivement ça marche bien mais (à moins d'avoir compris de travers, ce qui n'aurait rien de surprenant) ce n'est pas ce que je souhaite :
L'organisation de mon document est la suivante :
1 feuille de présentation avec les graphes, et 1 autre avec les données.
Pour la feuille de données, j'ai un tableau avec en colonne A la description des contenus, en colonnes B à M les données ajoutées chaque mois, et en colonne Z un ensemble de formules (des Recherchev() principalement) qui alimentent des tableaux sur la feuille de présentation.
Je souhaite garder la colonne Z telle quelle car ça marche très bien, je récupère bien à chaque fois les données du mois précédent, mais les graphiques doivent représenter les chiffres des 12 derniers mois, chaque mois.
Jusqu'ici ça faisait moins d'un an depuis la mise en place de ce tableau de bord, donc les zones vides du graphes étaient peuplées au fur et à mesure, mais maintenant que j'ai plus de 12 mois il faut que je n'affiche, pour chaque graphique, que les 12 derniers mois, et non l'intégralité des chiffres depuis le début...
J'ai essayé avezc l'index, l'idée est bonne mais je ne parviens pas à mon objectif. D'autres idées ??
Je pense pourtant que cela doit etre la bonne voie, il suffit de rajouter une feuille, garder intacte les colonnes A (description) et Z (par pointeur sur la colonne correspondante dans la première feuille) et mettre les autres en index flottant comme décrit précédemment, j'ai déjà traité pour un autre sujet un problème similaire, c'est la meilleure solution que j'ai trouvé.
En résumé, une première feuille avec plein d'entrée
Une seconde feuille avec les entrée fixes (type intitulé et résultat) et des entrée récupérées par index pour avoir uniquement 12 valeurs.
Une troisième feuille avec le graphe pointant sur la seconde.
En résumé, une première feuille avec plein d'entrée
Une seconde feuille avec les entrée fixes (type intitulé et résultat) et des entrée récupérées par index pour avoir uniquement 12 valeurs.
Une troisième feuille avec le graphe pointant sur la seconde.
ruzakruzak
Messages postés
459
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
31 mai 2007
247
15 mai 2007 à 16:06
15 mai 2007 à 16:06
Bon vraiment, je ne trouve pas, et je ne sais plus quoi faire.
Mon problème me semble insoluble en utilisant seulement Excel sans VB.
Alors, si quelqu'un peut m'expliquer comment faire une boucle efficace avec une sutrcture en FOR EACH... NEXT, en utilisant les collections SeriesCollection et ChartObjects, je suis preneur .
Mon objectif est toujours de décaler la source de chaque graphique d'une colonne vers la droite, de manière automatisée...
IREM : je puis peut-être t'envoyer une copie de mon doc sui tu ne sais pas quoi faire ce soir, pour que tu jettes un oeil ?? Ce sera plus aisé de se comprendre avec un vrai doc, plus qu'en le décrivant en tout cas...
Merci !
Mon problème me semble insoluble en utilisant seulement Excel sans VB.
Alors, si quelqu'un peut m'expliquer comment faire une boucle efficace avec une sutrcture en FOR EACH... NEXT, en utilisant les collections SeriesCollection et ChartObjects, je suis preneur .
Mon objectif est toujours de décaler la source de chaque graphique d'une colonne vers la droite, de manière automatisée...
IREM : je puis peut-être t'envoyer une copie de mon doc sui tu ne sais pas quoi faire ce soir, pour que tu jettes un oeil ?? Ce sera plus aisé de se comprendre avec un vrai doc, plus qu'en le décrivant en tout cas...
Merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'ai un problème similaire
une série de donnée qui commence en ligne 1 et s'arrête en ligne X !
j'ai besoin de savoir comment faire pour que ma série s'arrête là où je l'ai décidé !
sur un autre graphique je contournais le problème de la source de données d'une série, en définissant les valeurs de l'échelle. Mes séries commençaient en 2 et s'arrêtaient en 65535. La valeur de l'échelle maximum de l'axe des X était définie automatiquement par Excel, quant à la valeur de l'échelle minimum, j'utilisais le code suivant :
With Charts(2).Axes(xlCategory)
.MinimumScale = CDate(CDate("01/" & Month(Now) + 1 & "/" & Year(Now)) - 547)
End With
c'était pratique, ça me permettais d'afficher les valeurs des 18 derniers mois (547 derniers jours), je savais où s'arrêtait ma série : elle s'arrêtait au mois en cours, je n'avais plus qu'à reculer de 18 mois.
le problème c'est que cette astuce ne fonctionne pas sur le type de graphique histogramme empilé 100%
( histogramme empilé, ça marche, mais histogramme empilé 100%, ça ne marche pas !)
d'où ma question comment modifier la source d'une série dans un graphique ?
Merci par avance à tous...
une série de donnée qui commence en ligne 1 et s'arrête en ligne X !
j'ai besoin de savoir comment faire pour que ma série s'arrête là où je l'ai décidé !
sur un autre graphique je contournais le problème de la source de données d'une série, en définissant les valeurs de l'échelle. Mes séries commençaient en 2 et s'arrêtaient en 65535. La valeur de l'échelle maximum de l'axe des X était définie automatiquement par Excel, quant à la valeur de l'échelle minimum, j'utilisais le code suivant :
With Charts(2).Axes(xlCategory)
.MinimumScale = CDate(CDate("01/" & Month(Now) + 1 & "/" & Year(Now)) - 547)
End With
c'était pratique, ça me permettais d'afficher les valeurs des 18 derniers mois (547 derniers jours), je savais où s'arrêtait ma série : elle s'arrêtait au mois en cours, je n'avais plus qu'à reculer de 18 mois.
le problème c'est que cette astuce ne fonctionne pas sur le type de graphique histogramme empilé 100%
( histogramme empilé, ça marche, mais histogramme empilé 100%, ça ne marche pas !)
d'où ma question comment modifier la source d'une série dans un graphique ?
Merci par avance à tous...