Nom de fichier variable sous VBA

Fermé
Hi Lite - 25 mai 2011 à 16:26
ed555 Messages postés 61 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 26 octobre 2018 - 26 mai 2011 à 10:40
Bonjour,

Je travaille actuellement sur VBA pour Excel 2003, mon problème actuelle concerne la génération d'un graphique dynamique dont la taille des plages définissant l'axe des abscisses (entre autres), est variable. Pour ce faire, j'utilise la fonction "décaler" qui me permet une adaptation de la taille de la plage en fonction du nombre de données à ma disposition. J'ai ensuite créer un "Nom" auquel j'ai attacher la fonction "décaler". Enfin j'écris la ligne de code suivante sous VBA :
(lignes insérées dans une boucle)
k = i + 1
MonGraphe.SeriesCollection(26).XValues = _
"=nomdufichier.xls!Echelle" & k

Ce qui marche parfaitement. Le problème est que l'utilisateur est susceptible de changer le nom du fichier, auquel cas mon programme plante (logique il ne peut retrouver la plage désignée).

Ma question est donc : Comment faire pour que le nom du fichier puisse changer automatiquement dans la ligne de code ci-dessus lors de son enregistrement sous un autre nom?

Merci d'avance à mon sauveteur!!

4 réponses

ed555 Messages postés 61 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 26 octobre 2018
25 mai 2011 à 17:18
salut,

tu peux simplement faire ceci :

'récupération du nom
nom = ActiveWorkbook.Name

'changement de la série en abscisses
Sheets(1).ChartObjects.Select
With ActiveChart
.SeriesCollection(1).XValues = nom & ".xls!Echelle" & k
End With


je suppose que dans ton fichier, "Echelle" & i est le nom d'une plage ?

bonne continuation
0
Merci de ta rapidité ed555, je ne pensais pas obtenir une réponse aussi vite. Je m'empresserai donc de tester ça demain (je n'ai pas le droit de disposer de ce fichier partout...).

Oui tu as bien compris "Echelle" & i est une plage défini par la fonction "decaler".

Encore une fois merci, tu m'enlèves une belle épine du pied!
Peut être à plus tard sur ce forum! ;)
0
Dsl pour ce commentaire maladroit, j'espère ne pas avoir était impoli, j'ai répondu dans l'empressement du moment comme un abruti.

Merci encore à toi
0
ed555 Messages postés 61 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 26 octobre 2018
25 mai 2011 à 20:53
pas de souci ! il n'y avait aucune impolitesse dans ton commentaire à mon sens :-)
bonne soirée et bon courage !
0
Bonjour,

Alors voilà après avoir effectué le test sur mon programme, il s'avère que les lignes de code que tu m'as conseillé non pas le fonctionnement voulue. Lorsque je les insère dans mon programme, excel ne va pas chercher la plage mais écrit en étiquette : nom.xls!Echelle2, par exemple.

J'ai l'impression que la syntaxe qui s'impose pour le faire est :
MonGraphe.SeriesCollection(26).XValues = _
"='nomdufichier.xls'!Echelle" & k

Mais le problème de cette syntaxe est que le programme ne vas pas chercher le nom derrière la variable mais "nomdufichier" (bêtement :)).
Donc si t'as une autre idée je suis preneur.

Merci d'avance
0
En fait c'est bon merci, tu étais bien évidemment dans le vrai ed555, j'ai juste modifié le code comme suit pour que cela fonctionne :
MaSerie5.XValues = _
"=" & NomClasseur & "!Echelle" & k

Bonne continuation,

P.S : ce n'était pas le texte en lui même qui me posait problème dans mon commentaire mais le fait de t'avoir répondu par commentaire :)
0
ed555 Messages postés 61 Date d'inscription vendredi 20 mai 2011 Statut Membre Dernière intervention 26 octobre 2018
26 mai 2011 à 10:40
je vois que tu as trouvé tout seul, parfait !
bonne continuation
0