Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisation du path (vba) avec variable

3 réponses
Avatar
j-pascal
Bonsoir,

Si je récupère le path du bureau avec (Merci Isabelle) :

'------
Sub CheminRepertoiresBureau()
Dim Chemin_Bureau As String
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(&H10)
Set objFolderItem = objFolder.Self
Chemin_Bureau = objFolderItem.Path
End Sub
'------

Si dans mon code, j'utilise :

'------
(...)
Call CheminRepertoiresBureau
(...)
ChDir Chemin_Bureau
'------

Le chemin reste vide (je veux dire qu'en mode "pas à pas", à
l'instruction suivante, si je mets le curseur sur la variable, elle
indique "vide").

Peut-être faut-il passer par une variable statique ??

Merci pour votre aide,

JP

3 réponses

Avatar
j-pascal
Bonjour Daniel,

Merci, c'est noté.

PS : peut-on considérer que cette procédure (la recherche du chemin
pour "bureau") renverra toujours un bon résultat et qu'il n'est donc
pas nécessaire de gérer une erreur possible par un test ...

J'entends par "toujours", le fait que le répertoire "bureau" est un
répertoire system (sauf erreur de ma part).

JP

Bonsoir.
Tu peux faire comme ceci :

Sub CheminRepertoiresBureau(Chemin_Bureau)
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(&H10)
Set objFolderItem = objFolder.Self
Chemin_Bureau = objFolderItem.Path
End Sub

CheminRepertoiresBureau Chemin_Bureau
'(...)
ChDir Chemin_Bureau

Tu peux aussi déclarer "Chemin_Bureau" comme variable publique (en tête de
module :

Public Chemin_Bureau as String

Sub CheminRepertoiresBureau()
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(&H10)
Set objFolderItem = objFolder.Self
Chemin_Bureau = objFolderItem.Path
End Sub


Call CheminRepertoiresBureau
(...)
ChDir Chemin_Bureau

Cordialement.
Daniel



Bonsoir,

Si je récupère le path du bureau avec (Merci Isabelle) :

'------
Sub CheminRepertoiresBureau()
Dim Chemin_Bureau As String
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(&H10)
Set objFolderItem = objFolder.Self
Chemin_Bureau = objFolderItem.Path
End Sub
'------

Si dans mon code, j'utilise :

'------
(...)
Call CheminRepertoiresBureau
(...)
ChDir Chemin_Bureau
'------

Le chemin reste vide (je veux dire qu'en mode "pas à pas", à l'instruction
suivante, si je mets le curseur sur la variable, elle indique "vide").

Peut-être faut-il passer par une variable statique ??

Merci pour votre aide,

JP




Avatar
j-pascal
Bonjour,

J'aime bien l'idée d'une fonction. Merci pour cette proposition.

PS : comme je le demandais à Daniel, j'imagine que cette fonction
renvoit toujours un "bon" résultat (?).
Sinon, dois-je envisager un test pour orienter vers
"DocummentsAndSettings" ?

JP

Bonjour J-Pascal,

Fais comme ceci :

'------------------------------
Sub Test()

ChDir CheminRepertoiresBureau

End Sub
'------------------------------

Function CheminRepertoiresBureau()
Dim Chemin_Bureau As String
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(&H10)
Set objFolderItem = objFolder.Self
CheminRepertoiresBureau = objFolderItem.Path
End Function
'------------------------------






"j-pascal" a écrit dans le message de groupe de
discussion : Bonsoir,

Si je récupère le path du bureau avec (Merci Isabelle) :

'------
Sub CheminRepertoiresBureau()
Dim Chemin_Bureau As String
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(&H10)
Set objFolderItem = objFolder.Self
Chemin_Bureau = objFolderItem.Path
End Sub
'------

Si dans mon code, j'utilise :

'------
(...)
Call CheminRepertoiresBureau
(...)
ChDir Chemin_Bureau
'------

Le chemin reste vide (je veux dire qu'en mode "pas à pas", à
l'instruction suivante, si je mets le curseur sur la variable, elle
indique "vide").

Peut-être faut-il passer par une variable statique ??

Merci pour votre aide,

JP


Avatar
Daniel.C
Bonjour.
Je pense que oui, puisque le contenu du dossier est affiché à l'écran.
Windows devrait recréer le dossier, si par hasard il est supprimé (non
testé ;-)))
Cordialement.
Daniel

Bonjour Daniel,

Merci, c'est noté.

PS : peut-on considérer que cette procédure (la recherche du chemin pour
"bureau") renverra toujours un bon résultat et qu'il n'est donc pas
nécessaire de gérer une erreur possible par un test ...

J'entends par "toujours", le fait que le répertoire "bureau" est un
répertoire system (sauf erreur de ma part).

JP

Bonsoir.
Tu peux faire comme ceci :

Sub CheminRepertoiresBureau(Chemin_Bureau)
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(&H10)
Set objFolderItem = objFolder.Self
Chemin_Bureau = objFolderItem.Path
End Sub

CheminRepertoiresBureau Chemin_Bureau
'(...)
ChDir Chemin_Bureau

Tu peux aussi déclarer "Chemin_Bureau" comme variable publique (en tête de
module :

Public Chemin_Bureau as String

Sub CheminRepertoiresBureau()
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(&H10)
Set objFolderItem = objFolder.Self
Chemin_Bureau = objFolderItem.Path
End Sub


Call CheminRepertoiresBureau
(...)
ChDir Chemin_Bureau

Cordialement.
Daniel



Bonsoir,

Si je récupère le path du bureau avec (Merci Isabelle) :

'------
Sub CheminRepertoiresBureau()
Dim Chemin_Bureau As String
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(&H10)
Set objFolderItem = objFolder.Self
Chemin_Bureau = objFolderItem.Path
End Sub
'------

Si dans mon code, j'utilise :

'------
(...)
Call CheminRepertoiresBureau
(...)
ChDir Chemin_Bureau
'------

Le chemin reste vide (je veux dire qu'en mode "pas à pas", à l'instruction
suivante, si je mets le curseur sur la variable, elle indique "vide").

Peut-être faut-il passer par une variable statique ??

Merci pour votre aide,

JP