Données source faisant référence à une cellule pour le chemin

nat54

XLDnaute Barbatruc
Bonjour,

Pas simple de trouver un titre explicite ..

Mon problème :
- 1 fichier TdB_chiffres, des onglets extractions puis 1 onglet par pôle soit 31 onglets pour les pôles
- 1 fichier TdB_graphes où je veux obtenir un onglet par pôle
Chaque pôle est présenté par 16 graphes !
J'ai fait le travail une fois pour un pôle
Résultat satisfaisant

or si l'on compte il me reste 16*30 soit 480 graphes :eek::eek:

J'ai pensé à une chose : peut-on dans données source du graphique faire référence à une cellule de l'onglet en question

exemple
je suis dans le fichier TdB_graphique sur l'onglet concernant le pôle A
données source va dans fichier TdB_chiffres onglet pôle A comme suit
='I:\....\[TdB_chiffres]Pôle_A'!a1:a2

mon idée serait de mettre dans une cellule du fichier tdb_graphes
(une cellule par onglet) le chemin présenté ci-dessus

ainsi j'aurais seulement une cellule par onglet à modifier !!

est-ce faisable ?

Merci !

Nat
 

pierrejean

XLDnaute Barbatruc
Re : Données source faisant référence à une cellule pour le chemin

Re
Je crois que c'est Pascal (pas notre moderateur préféré mais un plus ancien) qui a dit
"Ce qui se conçoit bien s'enonce clairement et les mots pour le dire viennent aisement"

On va donc tenter d'enoncer clairement:
pole est non seulement une variable mais aussi un parametre
C'est le parametre de la macro copie
Sub copie (pole as string) signifie que l'on a créé la macro avec le contenu d'une variable nommée pole dans le corps de la macro
Call copie(Range("A" & n)) signifie que pole vaudra Range("A" & n) lors de l'execution
On dit alors que Range("A" & n) est passé en parametre a la macro copie
 

nat54

XLDnaute Barbatruc
Re : Données source faisant référence à une cellule pour le chemin

j'ai fait une tite modif du code

Code:
Sub copie(pole As String)
Application.ScreenUpdating = False
Sheets.Add.Name = "Graphs_" & pole 'ajoute un onglet qui est nommé graphes_pole + nomde la variable pole
Sheets("onglet_modèle").Cells.Copy Destination:=ActiveSheet.Range("A1") 'copier l'onglet-modèle graphs_pole_A
ActiveWindow.Zoom = 60
ActiveWindow.DisplayGridlines = False
For m = 1 To Sheets("Graphs_" & pole).Shapes.Count ' compter le nombre de formes-graphiques
 Workbooks("TdB_graphes.xls").Activate 'aller sur le fichier TdB Graphes
 Sheets("Graphs_" & pole).Shapes(m).Select 'sélectionner les graphiques de l'onglet que l'on souhaite créer
 Set ch = ActiveChart
   For n = 1 To ch.SeriesCollection.Count 'compter le nombre de série
   Workbooks("TdB_chiffres.xls").Activate
   Sheets("pole_" & pole).Select
  ch.SeriesCollection(n).Formula = Replace(ch.SeriesCollection(n).Formula, [COLOR=red]"pole_4000",[/COLOR] "pole_" & pole) 'remplacer dans les formules de série des graphs pole_A par le pole en question
   Next n 'on boucle sur le nombre de série
Next m 'on boucle sur le nombre de graphiques
Workbooks("TdB_graphes.xls").Activate 'on se replace sur le fichier TdB graphes
Application.ScreenUpdating = True
End Sub

ce serait à cause de ça ??
 

pierrejean

XLDnaute Barbatruc
Re : Données source faisant référence à une cellule pour le chemin

Re

Je ne pense pas que la modif soit a l'origine du bug annoncé
Par contre la manipulation de 31x20 tableaux differents peut effectivement entrainer un exces du nombre de polices
Je suggere d'effectuer la macro sur 2 fichiers (pour 16 feuilles d'une part et 15 d'autre part) puis de tenter la reunion des 2 fichiers
Autre possibilité: Unifier les polices des feuilles de TdB_chiffres.xls
 

pierrejean

XLDnaute Barbatruc
Re : Données source faisant référence à une cellule pour le chemin

Re

Arf !!!

Dans ce cas ,je suis perplexe
J' ai vaguement entendu parler de l'erreur que tu decris mais je ne l'ai jamais experimentée
Je fais des recherches mais ne t'attend pas a des resultats rapides: fais des tests de ton côté
 

nat54

XLDnaute Barbatruc
Re : Données source faisant référence à une cellule pour le chemin

bonjour,

ca m'énerve LOL

est ce que le fait que mes poles soient des chiffres peut poser problème ?

au lieu de pole_A, pole_4000
que je dois remplacer par pole_3098
 

nat54

XLDnaute Barbatruc
Re : Données source faisant référence à une cellule pour le chemin

bonjour

l'image peut être agrandie en cliquant dessus

la ligne qui bug c'est

Code:
Sub copie(pole As String)
Application.ScreenUpdating = False
Sheets.Add.Name = "Graphs_" & pole 'ajoute un onglet qui est nommé graphes_pole + nomde la variable pole
Sheets("onglet_modèle").Cells.Copy Destination:=ActiveSheet.Range("A1") 'copier l'onglet-modèle graphs_pole_A
ActiveWindow.Zoom = 60
ActiveWindow.DisplayGridlines = False
For m = 1 To Sheets("Graphs_" & pole).Shapes.Count ' compter le nombre de formes-graphiques
 Workbooks("TdB_graphes.xls").Activate 'aller sur le fichier TdB Graphes
 Sheets("Graphs_" & pole).Shapes(m).Select 'sélectionner les graphiques de l'onglet que l'on souhaite créer
 Set ch = ActiveChart
   For n = 1 To ch.SeriesCollection.Count 'compter le nombre de série
   Workbooks("TdB_chiffres.xls").Activate
   Sheets("pole_" & pole).Select
   [COLOR=red]ch.SeriesCollection(n).Formula = Replace(ch.SeriesCollection(n).Formula, "pole_4000", "pole_" & pole)[/COLOR] 'remplacer dans les formules de série des graphs pole_A par le pole en question
   Next n 'on boucle sur le nombre de série
Next m 'on boucle sur le nombre de graphiques
Workbooks("TdB_graphes.xls").Activate 'on se replace sur le fichier TdB graphes
Application.ScreenUpdating = True
End Sub
 

nat54

XLDnaute Barbatruc
Re : Données source faisant référence à une cellule pour le chemin

de tête (car je ne suis pas au boulot le samedi)

oui onglet_modèle c'était celui que tu avais nommé pole_A
(j'ai renommé car il faut que ça soit explicite pour d'autres utilisateurs)

oui là ça fait référence au pole_4000
et mes autres poles sont pole_3980, pole_3580, pole_4200 ...
 

pierrejean

XLDnaute Barbatruc
Re : Données source faisant référence à une cellule pour le chemin

Re

En fonction de ta version d'Excel il n'est pas impossible que le problème vienne du fait que tu utilises des chiffres plutot que des lettres (chez moi cela fonctionne aussi bien avec un chiffre q'un string)
Essaies de les mettre en parametre sous la forme "3980"
Par ailleurs teste la modification manuelle des series dans l'onglet modele (je rappelle que le fichier contenant la feuille Pole_3980 doit etre ouvert)
 

Discussions similaires

Statistiques des forums

Discussions
312 201
Messages
2 086 171
Membres
103 152
dernier inscrit
Karibu