Nom de chemin inaccessible

cs_dps Messages postés 7 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 28 février 2008 - 27 févr. 2008 à 18:52
cs_dps Messages postés 7 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 28 février 2008 - 28 févr. 2008 à 16:34
Bonjour
J'ai besoin de récupérer le chemin d'accès complet d'un fichier excel
que j'ai ouvert.
peut importe pour l'instant de vous dire ce que fait cette macro.
Elle peut être appelée à partir de n'importe quel fichier excel ouvert
qu'elle va examiner
Il faut qu'elle produise un fichier  résultat *dans le même répertoire*
que le fichier initial :

Chemin = Application.ActiveWorkbook.Path
ActiveWorkbook.SaveAs Filename:=Chemin & "\resultat.xlsx", _

au moment de la sauvegarde,
il me dit que le fichier C:\5403F100 n'existe pas.
J'utilise VBA pour excel 2007

Quelle est la fonction qui permet de donner le nom d'accès complet ?
D'avance merci

dps
A voir également:

12 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 févr. 2008 à 19:41
Salut
Si c'est du VB de Excel, c'est du VBA --> Modif catégorie de la question.

Je n'ai pas essayé sous Excel 2007, mais ta fonction .Path renvoie bien le chemin uniquement, sans le \ final.
Ta syntaxe est donc correcte.
Ce qui me semble bizarre, c'est que l'erreur te dise que le fichier (sans extension) n'existe pas alors que tu veux sauvegarder sous. S'il y a problème, ce serait si le fichier choisi existe déjà !

Vérifie que le bouton sur lequel tu cliques pour lancer cette macro va bien dans les lignes que tu as copié ici.
Sous Excel 2003 (voir si reconduit sous 2007) :
Mets le curseur de la souris sur ta ligne et appuis sur F9 : elle va changer de couleur et s'arrêtera là au passage.
Si le pogramme s'arrête bien là, c'est qu'il y passe, c'est déjà ça.
Ensuite, appuis sur F8 pour n'avancer que d'une ligne et découvre ainsi quelle ligne provoque cette erreur.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
27 févr. 2008 à 20:47
Bonsoir,

réflexe numéro 1 (avant même de poser une question) :

Msgbox Chemin & "\resultat.xlsx"

Maintenant que tu connais ce réflexe : fais-nous connaître ce qui s'affiche
0
cs_dps Messages postés 7 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 28 février 2008
28 févr. 2008 à 09:18
Bonjour,
et merci de vos réponses.
je vais essayer d'exécuter cette macro sur un poste fonctionnant sous XP
avec un Excel 2003
mais pour l'instant, je fais avec ce que j'ai, un Vista avec Excel 2007et voici ce que j'obtiens:
Chemin = Application.ActiveWorkbook.Path
MsgBox Chemin & "\resultat.xlsx"
et à l'execution de la sauvegarde:
ActiveWorkbook.SaveAs Filename:=Chemin & "\resultat.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Erreur d'execution '1004';
Microsoft Office Excel ne peut accéder au fichier "C:\87451000".
Plusieurs raisons possibles :
<li>Le nom du fichier ou le chemin n'existe pas.</li><li>Ce fichier est utilisé par un autre programme.</li><li>Le classeur que vous essayez d'enregistrer porte le même nom qu'un classeur actuellement ouvert.</li>-
dans quelle catégorie fallait-il classer ce message ?
Ne suis-je pas en VBA/Excel ?
-
D'avance merci

dps
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
28 févr. 2008 à 09:22
en VBA pour excel 2000 à 2003  il suffit de faire
toto = ActiveWorkbook.FullName
pour avoir le chemin complet avec le nom du fichier sur lequel tu es en train de bosser.
apres juste en modifiant l'extension tu peux te créer facilement au bon emplacement le fichier de ton choix

je suppose que sur excel2007 ça doit être pareil !
c'est déja assez "crétin" de rendre excel incompatible avec excel il n'ont probablement pas poussé la betise jusqu'a changer aussi les mots clé de VBA ... quoi que .... avec bilou faut s'attendre à tout
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_dps Messages postés 7 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 28 février 2008
28 févr. 2008 à 09:22
Re,
Oups!
j'ai oublié de dire ce que donnait le MsgBox:
eh bien     
\resultat.xlsx
tout simplement!
merci de vos réponses, bien sincèrement

dps
0
cs_dps Messages postés 7 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 28 février 2008
28 févr. 2008 à 09:39
Bonjour pile_poil

et merci de ta réponse:
il y a du progrès, MsgBox me renvoie:
       \Classeur2\resultat.xlsx
C'est juste l'opposé que je veux
c'est à dire que si mon fichier se trouve dans :
       C:\Users\\Documents
je voudrais pouvoir l'enregistrer dans :
       C:\Users\\Documents\resultat.xlsx
donc récupérer tout ce qui manque à mon nom de fichier...
d'avance merci ...

dps
0
cs_dps Messages postés 7 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 28 février 2008
28 févr. 2008 à 09:50
re bonjour
decidemment j'oublie tout!
Maintenant, au moment de la sauvegarde, il me trouve bien
un nom d'accès complet mais d'un drôle de façon:

        Microsoft Office Excel ne peut accéder au fichier
        "C:\Users\\Documents\Classeur2\D2604000".
...
je ne vois pas trop comment je peux supprimer ce qui vient en fin de nom,
et pourquoi il fait ça ...
hum...
merci de vos réponses
dps
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
28 févr. 2008 à 10:20
probable que VBA n'aime pas les extensions à 4 lettres de 2007 lol
ou alors dans ta config de windows tu as actif le non affichage des extensions connues
ce sont des suggestions de ma part rien de plus 
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
28 févr. 2008 à 11:23
toto = ActiveWorkbook.FullName
toto = replace(toto,
ActiveWorkbook.Name, "resultats.xls")

ActiveWorkbook.SaveAs toto
j'ai mis 'xls' car pour moi Excel2007 est une monstruosité que seul un esprit malade à pu engendrer
0
cs_dps Messages postés 7 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 28 février 2008
28 févr. 2008 à 15:24
re bonjour!
Eh bien, pile_poil, c'est presque exactement ce que je voulais!
et je t'en remercie vivement.
Voila au moins une procédure qui me libère des contraintes de chemin d'accès fixes.
J'ai dit "presque", parce qu'il me reste à savoir pourquoi le fichier résultat
s'obstine à aller dans :
C:\Users\\Documents
quelquesoit le fichier choisi et dans quelque lecteur que ce soit
Pas très facile de savoir au juste ce qu'il trouve comme chemin d'accès,
le MsgBox me renvoyant un:
resultat.xlsx\resultat.xlsx    très énigmatique
-
Je suis bien d'accord avec toi, ceux qui ont pondu Excel 2007 ont l'esprit faisandé,
on devrait les enfermer, je te dis pas les cheveux que je me suis arraché!
si nos postes n'ont pas pu fonctionner sous Vista (pour certains)
on leur a mis un Windows Xp 'Inspirat' -mal inspiré- qui imite Vista!
Néanmoins, ils se payent tous la suite Office 2007 !
Merci Bill !!
-
En tous cas, grand merci pour ta contribution

dps
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
28 févr. 2008 à 15:34
cela doit être je pense une histoire de config
cela ressemble bien au fichier par défaut que tu as dans la config de excel
ou alors c'est toi qui fait une copie du fichier d'origine en sauvegarde dans le répertoire par défaut avant cette manip
dans ce cas le fichier ouvert n'est plus celui d'origine mais celui copié
0
cs_dps Messages postés 7 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 28 février 2008
28 févr. 2008 à 16:34
Re,
exact !
Il utilise comme chemin le chemin de dossier par défaut

C:\Users\\Documents

et bingo!
il se fiche de la variable : ActiveWorkbook.FullName
à +
merci encore
dps
0
Rejoignez-nous