Excel 2003 : Adapter les même graph à plusieurs tableaux

* Ratax
Anonyme
Envoyé le 18/08/2011 à 12:17

Bonjour,

Ma question va peut etre paraitre assez simple mais je n'arrive cependant pas à y trouver la moindre réponse sur le forum.

Mon probl?me est le suivant:

Je poss?de un fichiers excel.
Il comprend des tableaux, et des graphs de ces tableaux (tous de forme identiques)
EX : Un onglet "Carru" comporte les graph, et un onglet "Carru1" comprend les
donn?es dans un tableau.


Mon objectif est de relier chacun des graphiques d'un onglet aux donn?es
correspondantes ? l'onglet du meme nom. (les graphs Carru avec les données Carru1)

Mes premiers graphiques ont été créés à partir des tableaux du onglet correspondant.

Je cherche donc comment modifier au sein des donn?es sources le nom de
l'onglet
Par exemple mon premier onglet est appelé Carru
Mon deuxieme Dhem
Je souhaiterais dans les donn?es des graphiques Dhem remplacer "Carru"
apr "Dhem", ce qui me permettrait de ne pas avoir ? réattribuer 50*9fois
les sources de mes graphiques? (il y a 9 graphs)

une manipulation est elle possible? Une macro applicable?
Je vous upload le fichier pour que vous puissiez tester un direct :
http://cjoint.com/?AHsjYBEbygO

D'avance merci pour votre aide

Ratax

Claude40 Claude40
1 534 contributions
Membre depuis le 24/03/2010
Envoyé le 19/08/2011 à 18:17 Modifié par Claude40


Bonjour,
Réponse tardive car le post était classé dans « Windows », au lieu de « Bureautique ».
Le problème est plus long que complexe à résoudre. J’ai fait une petite macro qui recalcule des formules des séries de données des deux premier graphiques (Facturation et pas/pca mensuel) . Il faut faire la même chose pour tous les graphiques.
Pour chaque graphique, il faut donc adapter la série de lignes de codes de l’exemple, en fonction du numéro du graphique (1,2,….) et du nombre de séries de données.Le principe est de copier les graphiques de la feuille « Carru » et d’appliquer la macro pour changer les noms de feuilles de « Carru » en « Nouvelle feuille »

Voici la macro plus longue que complexe.
J'ai supprimé la macro pour ne pas alourdir le post, une nouvelle version étant fournie dans un post du 22/08 NB : je modifie mon texte d'origine : En voulant simplifier la macro avec un jeu de "for" et "next" je me suis apperçu que la solution ne fonctionne pas pour les 4 graphiques "camembert". Mais je n'ai pas de retour à propos de cette solution. Donc je m'interroge si cela vaut la peine de poursuivre mes recherches.
NB2 : Il semble que mes difficultés proviennent du fait que je travaille sous Excel 2007 en mode de comptabilité 1997-2003. En effet, si je recrée des graphiques "camembert" identiques au modèle, je parviens à les mettre à jour comme les autres.
Un bon exposé du problème, c'est déjà un grand pas vers la solution. Dans la mesure du possible, mes solutions sont testées, sur mon système actuel (W10 Pro version 1909), mais peuvent ne pas fonctionner sur tous les Pc
* Ratax
Anonyme
Envoyé le 22/08/2011 à 10:19

Bonjour,

Merci bcp pour ton retour, en fait j'ai appliquer un solution plus simple pour moi qui maitrie mal le VBA.
Je sélectionne la feuille donnée et la feuille graphe en cliquant sur son onglet tout en maintenant la touche CTRL , pour copier les 2 feuilles et je fais glisser cela dans les onglets tout en maintenant CTRL ...

ensuite jemodifie le nom de tes 2 nouvelles feuilles et dans la feuille donnée je copie les nouvelles données...

je vais quand meme ce soir appliquer ta maccro pour comprendre un peu le fonctionnement, et je te remercie encore pour ton coup de pouce !!
Bonne continuation :)

Claude40 Claude40
1 534 contributions
Membre depuis le 24/03/2010
Envoyé le 22/08/2011 à 10:54 Modifié par Claude40


Bonjour,
Merci pour le retour.
A tout hasard, j'ai revu la macro pour traiter les 9 graphiques de la feuille. Elle fonctionne à condition, pour les camemberts (3, 4, 5, et 6) d'avoir accès à la formule de la série de données, c'est à dire qu'elle apparaisse bien dans la barre des formules lorsque l'on clique sur la série.
Au préalable, il faut simplement créer les deux nouvelles feuilles et faire un copier/coller des feuilles "modèles", Carru et Carru1 en l'occurence..

Concernant le VBA, je trouve que c'est un outil très puissant, un peu rebutant au début, mais assez facile à utiliser dans les cas les plus courants et surtout beaucoup plus performant que les FONCTIONS.

Voici donc la nouvelle macro . Il faut être sur la nouvelle feuille graphiques pour la lancer :

Sub modif()
'Nom de la nouvelle feuille
Feuille = ActiveSheet.Name

'Pour le premier graphique "facturation"
Worksheets(Feuille).ChartObjects(1).Activate

For serie = 1 To 4

MyString = Mid(ActiveChart.SeriesCollection(serie).FormulaLocal, 2) ' suppression du signe "=" qui sera rétabli après changement du nom de feuille

Worksheets(Feuille).Cells(1, 1) = MyString ' transfert dans une cellule provisoire de travail

Worksheets(Feuille).Cells(1, 1).Replace What:="Carru", Replacement:=Feuille 'remplacement du nom de feuille

ActiveChart.SeriesCollection(serie).FormulaLocal = "=" & Worksheets(Feuille).Cells(1, 1) 'remise en place de la formule de la série de données
Next serie

' pour le second graphique "par/pca mensuel"

Worksheets(Feuille).ChartObjects(2).Activate

For serie = 1 To 2

MyString = Mid(ActiveChart.SeriesCollection(serie).FormulaLocal, 2) ' suppression du signe "=" qui sera rétabli après changement du nom de feuille

Worksheets(Feuille).Cells(1, 1) = MyString ' transfert dans une cellule provisoire de travail

Worksheets(Feuille).Cells(1, 1).Replace What:="Carru", Replacement:=Feuille 'remplacement du nom de feuille

ActiveChart.SeriesCollection(serie).FormulaLocal = "=" & Worksheets(Feuille).Cells(1, 1) 'remise en place de la formule de la série de données
Next serie

'pour les graphiques 3, 4 , 5 et 6 "camemberts" sous réserve que l'on puisse accéder aux données des séries

For graph = 3 To 6
Worksheets(Feuille).ChartObjects(graph).Activate
MyString = Mid(ActiveChart.SeriesCollection(1).FormulaLocal, 2) ' suppression du signe "=" qui sera rétabli après changement du nom de feuille
MsgBox MyString
Worksheets(Feuille).Cells(1, 1) = MyString ' transfert dans une cellule provisoire de travail
MsgBox "vérif" & Worksheets(Feuille).Cells(1, 1)
Worksheets(Feuille).Cells(1, 1).Replace What:="Carru", Replacement:=Feuille 'remplacement du nom de feuille

ActiveChart.SeriesCollection(1).FormulaLocal = "=" & Worksheets(Feuille).Cells(1, 1) 'remise en place de la formule de la série de données
Next graph

' pour les trois derniers graphiques à 10 séries de données
For graph = 7 To 9

Worksheets(Feuille).ChartObjects(graph).Activate
'MsgBox ActiveChart.Name
For serie = 1 To 10
MyString = Mid(ActiveChart.SeriesCollection(serie).FormulaLocal, 2) ' suppression du signe "=" qui sera rétabli après changement du nom de feuille
'MsgBox MyString
Worksheets(Feuille).Cells(1, 1) = MyString ' transfert dans une cellule provisoire de travail
'MsgBox "vérif" & Worksheets(Feuille).Cells(1, 1)
Worksheets(Feuille).Cells(1, 1).Replace What:="Carru", Replacement:=Feuille 'remplacement du nom de feuille

ActiveChart.SeriesCollection(serie).FormulaLocal = "=" & Worksheets(Feuille).Cells(1, 1) 'remise en place de la formule de la série de données
Next serie

Next graph


Worksheets(Feuille).Cells(1, 1).Clear 'remise à blanc de la cellule de travail


End Sub

Bon courage.
Un bon exposé du problème, c'est déjà un grand pas vers la solution. Dans la mesure du possible, mes solutions sont testées, sur mon système actuel (W10 Pro version 1909), mais peuvent ne pas fonctionner sur tous les Pc

Discussion trop ancienne

Cette discussion a été automatiquement fermée car elle n'a plus reçue de nouveau message depuis trop longtemps.

Nous vous suggérons de créer un nouveau message

« Retour sur la liste des messages de ce forum