Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/12/2006, 22h57   #1
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812
Par défaut Script avec GetAbsolutePathName : un coup oui (bof), un coup non !

Bonsoir à toutes et à tous,

Ch'suis un p'tit nouveau ici, même si ça fait un bout de temps que je code, et je viens vous soumettre le problème qui me fait tomber par terre :
Pourquoi le code ci-dessous (très fortement inspiré d'Activexperts.com), inséré dans la procédure Auto_Open d'un classeur Excel vide, me retourne-t-elle "Fichier introuvable", quand le même code (au nom de fichier près) dans un autre classeur fonctionne ?

Enfin, "fonctionne", manière de dire, car dans ce cas le fichier est dans un dossier posé sur le "Bureau" et le path renvoyé concerne "Mes Documents" !
C'est très très très moyen, tout ça...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Auto_Open()
    Dim sPath As String
    Dim objFSO As FileSystemObject
    Dim objFile As File
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.GetFile("test.xls")
    ' tout faux : renvoie Mes Documents ! ! !
    sPath = objFSO.GetAbsolutePathName(objFile)
    MsgBox sPath
    sPath = objFSO.GetParentFolderName(objFile)
    MsgBox sPath
    Set objFSO = Nothing
End Sub
Merci de vos idées et lumières,
--
Jean-Pierre
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2006, 23h16   #2
Rédacteur
 
Avatar de omen999
 
Inscription : février 2006
Messages : 789
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 789
Points : 1 984
Points : 1 984
bonsoir,
Citation:
quand le même code (au nom de fichier près) dans un autre classeur fonctionne
le classeur est-il dans le même répertoire ?
ton code ne contient pas de chemin absolu donc test.xls doit se trouver dans le répertoire actif par défaut qui peut varier en fonction
du contexte de lancement du classeur vide
omen999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2006, 07h04   #3
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812
Yop !
test.xls sur trouve sur le Bureau,
autre.xls se trouve dans Bureau\UnDossier.
Dans les 2 cas, double click sur le .xls et c'est tout.
Je me suis inspiré de (from activexperts.com) :
Citation:
Demonstration script that uses the FileSystemObject to return pathname information for a while, including file name, file extension, complete file path, etc. Script must be run on the local computer.

Code :
1
2
3
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("ScriptLog.txt")
Wscript.Echo "Absolute path: " & objFSO.GetAbsolutePathName(objFile)
--
Jean-Pierre
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2006, 09h21   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
juste une question tu n'aurai pas un autre fichier test.xls sous ton répertoire 'mes documents' ?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2006, 18h44   #5
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812
'Soir !
Citation:
juste une question tu n'aurai pas un autre fichier test.xls sous ton répertoire 'mes documents' ?
Bien vu, bbil !

En fait, c'est l'autre fichier, dont j'avais fait une sauvegarde dans "Mes Documents", qui est trouvé par le script.
Et effectivement, si je copie "test.xls" dans Mes docs, ça fonctionne aussi pour lui !

Mais alors, quelle m3rd3 !
La source d'inspiration est ici.

Et je persiste et signe, ça concerne plus VBS que VBA, imho.
Faudrait qu'un modo le remette (ou le copie) là-bas.
Merci pour la piste, et si quelqu'un pouvait confirmer (ou me trouver une fonction qui fonctionne), car pour le moment je ne peux pas trop cliquer sur "Résolu".

En tout cas, merci et bravo d'avoir pensé à ça.
--
Jean-Pierre
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2006, 21h30   #6
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 654
Points : 7 654
Il vaut mieux le laisser ici car le sous-forum dépend de l'environnement de développement.

Or, tu travailles dans Excel, donc dans l'environnement VBA.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2006, 21h43   #7
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
j'ai toujours pas compris ton probléme... avec l'instruction
Code :
Set objFile = objFSO.GetFile("ScriptLog.txt")
il est normal vu que tu ne précise pas de répertoire que le fichier choisi soit celui du répertoire courant..! si tu veux traiter un autre fichier il faut soit préciser le répertoire soit changer de répertoire courant...
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2006, 14h44   #8
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812
Citation:
j'ai toujours pas compris ton probléme
Je vois...
  • J'ai un fichier test.xls qui contient le code posté ;
  • Ce fichier est sur le "Bureau" ;
  • Ce fichier est copié dans "Mes Documents" ;
  • Double-clic sur le fichier du Bureau me renvoie le path du fichier dans "Mes Documents" ;
  • Suppression du fichier test.xls dans "Mes Documents" ;
  • Double-clic sur le fichier du Bureau --> "fichier introuvable".
Citation:
vu que tu ne précise pas de répertoire que le fichier choisi soit celui du répertoire courant
Oui, puisque j'utilise cette fonction (GetAbsolutePathName) justement pour trouver le répertoire courant, et j'en conclus qu'elle est buggée quand elle est utilisée dans Excel (il avait raison, celui qui a déplacé mon post, ), parce que si je crée test.vbs avec
Code :
1
2
3
4
5
6
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("test.xls")
sPath = objFSO.GetAbsolutePathName(objFile)
Wscript.Echo sPath
sPath = objFSO.GetParentFolderName(objFile)
Wscript.Echo sPath
, là ça fonctionne bien !
--
jp
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2006, 15h56   #9
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
mais non rien n'est buggé... comment lance tu ta macro ..! le répertoire courant (par défaut) d'excel c'est "..mes documents" c'est normal que si tu n'en précise pas le fichier utilisé soit celui du répertoire courant !!

puis si ton fichier test.xls .. est le fichier contenant ton code... tu n'as pas besoin d'utilser getAbso... utilise ThisWorkbook.path ..!
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2006, 21h43   #10
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812
'Soir !
Ben pour moi, le répertoire par défaut et le répertoire courant, c'est pas la même chose.
Et je ne comprends pas cette "interférence" d'Excel sur la fonction VBS...
Bref...
Merci pour la discute,
--
Jean-Pierre
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2006, 23h21   #11
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par Jipété
'Soir !
Ben pour moi, le répertoire par défaut et le répertoire courant, c'est pas la même chose.
Et je ne comprends pas cette "interférence" d'Excel sur la fonction VBS...
Bref...
Merci pour la discute,
--
Jean-Pierre
.. oui je vais redire cela autrement... par défaut sous excel le répertoire courant c'est le répertoire "Mes documents.." il n'y as aucune interférence ... c'est juste que la fonction est mal utilisée .....en lui donnant en paramétre le fichier présent sous "mes documents" il est normal qu'elle retourne comme répertoire le fameux "mes documents..."
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 12h23   #12
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812
Citation:
en lui donnant en paramétre le fichier présent sous "mes documents" il est normal qu'elle retourne comme répertoire le fameux "mes documents..."
Oui, mais en lui donnant en paramètre un fichier sur le Bureau, il ne le trouve pas !
Surtout que, "un fichier sur le Bureau", c'est lui-même !
Et, encore une fois, le même code dans un .VBS fonctionne correctement...
--
Jean-Pierre
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 21h11   #13
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par Jipété
Oui, mais en lui donnant en paramètre un fichier sur le Bureau, il ne le trouve pas !
Surtout que, "un fichier sur le Bureau", c'est lui-même !
Et, encore une fois, le même code dans un .VBS fonctionne correctement...
--
Jean-Pierre
bonsoir Jean-Pierre... je crois que tu ne dois pas lire mes réponses... mais si tu ne donne pas de non de répertoire tu prends le fichier du répertoire courant que cela soit en VBS ou VBA ... place ton code VBS sous le répertoire mes documents .. (de façon à ce que son répertoire courant soit "mes documents.." ) et execute le tu obtiendra le même résultat qu'en VBA...!

sinon il me semble que je t'ai déjà dis hier qu'en VBA le répertoire du fichier exécutant la macro été facilement accessible par . ... ThisWorkbook.path
..!
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 23h40   #14
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812
Bonsoir bbil,
Citation:
je crois que tu ne dois pas lire mes réponses...
Je crois qu'on ne se comprend pas, car je les lis attentivement...
Citation:
mais si tu ne donne pas de non de répertoire tu prends le fichier du répertoire courant
On est bien d'accord !

Indépendament du fait qu'en VBA pur je pourrais utiliser ThisWorkbook.Path (comme tu le suggères), je ne comprends pas, puisque je peux aussi utiliser du VBS, pourquoi une fonction VBS ne me retourne pas la bonne valeur.
C'est tout.
Et si tu te demandes si je lis tes réponses, je me demande, moi, si tu as essayé de copier/coller ma fonction puis de tester avec le protocole posté le 9 à 14h44,
Bonne nuit,
--
Jean-Pierre
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 09h19   #15
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
bon on se comprends pas... je crois qu'il va falloir qu'on s'arrête...

..sinon ta fonction
Citation:
" avec le protocole posté le 9 à 14h44"
fonctionne bien et vu qu'aucun nom de répertoire n'est précisé ... elle renvoi les informations concernant le fichier (donné en paramétre ) test.xls présent sous le répertoire courant par défaut : "mes documents" ... il est toujours possible d'afficher le répertoire courant par la commande CurDir... où d'en changer grâce au commandes chDir et ChDrive...

A+
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 17h47   #16
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812


Le fond bleu c'est mon "Bureau".
Ah, j'ai oublié, et ça a p'têt son importance : w2k sp4, Office 2k.
--
Jean-Pierre
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 18h14   #17
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 854
Points : 16 854
Envoyer un message via Skype™ à bbil
oui .. si tu n'as pas de fichier test.xls présent sous le répertoire "mes documents" tu n'aura pas d'autre réponse que fichier introuvable..! encore une fois c'est normal car le réperoire courant de ton .Xls n'est pas "ton bureau" mais "mes documents..."
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 19h19   #18
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812
Citation:
encore une fois c'est normal car le répertoire courant de ton .Xls n'est pas "ton bureau" mais "mes documents..."
Ben c'est pas normal, moi j'dis, et c'est la 1re fois que je vois ça...
En fait, je viens de regarder dans les options de mon Excel, et il serait plutôt question du "répertoire par défaut" plutôt que du "répertoire courant".

Maintenant, la bonne question est : pourquoi "GetAbsolutePathName" veut travailler dans ce répertoire par défaut ? C'est pas ce qu'on lui demande !
Bref...
Laissons tomber, j'espère juste que ceux qui ont suivi cette discute auront bien noté le truc !
--
Jean-Pierre
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 19h57   #19
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 654
Points : 7 654
Pourquoi tiens-tu absolument à utiliser le FSO alors qu'Excel connait le chemin du fichier qu'il a ouvert???
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2006, 21h02   #20
Membre Expert
 
Inscription : juillet 2006
Messages : 1 677
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : juillet 2006
Messages : 1 677
Points : 1 812
Points : 1 812
Parce que j'ai cherché ici et là pour trouver le chemin, et qu'une des premières réponses remontées a été avec VBS et FSO...
Et comme c'est sensé fonctionner, j'ai insisté.
Pas plus.
--
Jean-Pierre
Jipété est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h51.


 
 
 
 
Partenaires

Hébergement Web