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

VBA Excel 2003 - Boîte de dialogue permettant de sélectionner un dossier ou un fichier

20 réponses
Avatar
thomas
Bonjour,

Le code ci-dessous marche parfaitement bien si je mets en 4ème paramètre de
objShell.BrowseForFolder "C:\toto" mais plus du tout si je remplace
"C:\toto" par une variable, "Chemin" par exemple ( Chemin = "C:\toto")

Au lieu d'avoir comme dossier de départ de la recherche "C:\toto" j'ai "Mes
documents". Où ai-je fait une erreur?

Merci

Dim objShell, objFolder, SecuriteSlash

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisissez un dossier",
&H1&, Chemin)

................................

10 réponses

1 2
Avatar
Jacques93
Bonjour thomas,

La variable n'est probablement pas initialisée correctement, ou pointe
sur un chemin inexistant. Met un point d'arrêt sur la dernière ligne et
vérifie le contenu de Chemin.

thomas a écrit :
Bonjour,

Le code ci-dessous marche parfaitement bien si je mets en 4ème paramètre de
objShell.BrowseForFolder "C:toto" mais plus du tout si je remplace
"C:toto" par une variable, "Chemin" par exemple ( Chemin = "C:toto")

Au lieu d'avoir comme dossier de départ de la recherche "C:toto" j'ai "Mes
documents". Où ai-je fait une erreur?

Merci

Dim objShell, objFolder, SecuriteSlash

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisissez un dossier",
&H1&, Chemin)

................................





--

Cordialement,

Jacques.
Avatar
Daniel.C
Bonsoir.
Je n'ai pas le problème, à condition de définir Chemin, ce qui n'est pas
dans ton code :
Chemin = "c:toto"
--
Cordialement.
Daniel
"thomas" <nomail> a écrit dans le message de news:
%
Bonjour,

Le code ci-dessous marche parfaitement bien si je mets en 4ème paramètre
de
objShell.BrowseForFolder "C:toto" mais plus du tout si je remplace
"C:toto" par une variable, "Chemin" par exemple ( Chemin = "C:toto")

Au lieu d'avoir comme dossier de départ de la recherche "C:toto" j'ai
"Mes
documents". Où ai-je fait une erreur?

Merci

Dim objShell, objFolder, SecuriteSlash

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisissez un dossier",
&H1&, Chemin)

................................



Avatar
thomas
J'avais fait un point d'arrêt et debug.print chemin donne bien "C:toto"

"Jacques93" a écrit dans le message de groupe de discussion
: eZh#
Bonjour thomas,

La variable n'est probablement pas initialisée correctement, ou pointe
sur un chemin inexistant. Met un point d'arrêt sur la dernière ligne et
vérifie le contenu de Chemin.

thomas a écrit :
Bonjour,

Le code ci-dessous marche parfaitement bien si je mets en 4ème paramètre
de
objShell.BrowseForFolder "C:toto" mais plus du tout si je remplace
"C:toto" par une variable, "Chemin" par exemple ( Chemin = "C:toto")

Au lieu d'avoir comme dossier de départ de la recherche "C:toto" j'ai
"Mes
documents". Où ai-je fait une erreur?

Merci

Dim objShell, objFolder, SecuriteSlash

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisissez un
dossier",
&H1&, Chemin)

................................





--

Cordialement,

Jacques.
Avatar
Jacques93
Si le répertoire existe et que tu as les droits pour y accéder, cela
doit fonctionner.

thomas a écrit :
J'avais fait un point d'arrêt et debug.print chemin donne bien "C:toto"






--

Cordialement,

Jacques.
Avatar
thomas
C'est pour cela que je ne comprends pas

Set objFolder = objShell.BrowseForFolder(&H0&, "Choisissez un dossier",
&H1&, Chemin)
ne marche pas

alors que Set objFolder = objShell.BrowseForFolder(&H0&, "Choisissez un
dossier", &H1&, "C:toto") marche

et que Chemin = "C:toto"

"Jacques93" a écrit dans le message de groupe de discussion
:
Si le répertoire existe et que tu as les droits pour y accéder, cela
doit fonctionner.

thomas a écrit :
J'avais fait un point d'arrêt et debug.print chemin donne bien "C:toto"






--

Cordialement,

Jacques.
Avatar
Jacques93
Aurais tu déclaré :

Dim Chemin as String

?

thomas a écrit :
C'est pour cela que je ne comprends pas

Set objFolder = objShell.BrowseForFolder(&H0&, "Choisissez un dossier",
&H1&, Chemin)
ne marche pas

alors que Set objFolder = objShell.BrowseForFolder(&H0&, "Choisissez un
dossier", &H1&, "C:toto") marche

et que Chemin = "C:toto"

"Jacques93" a écrit dans le message de groupe de discussion
:
Si le répertoire existe et que tu as les droits pour y accéder, cela
doit fonctionner.

thomas a écrit :
J'avais fait un point d'arrêt et debug.print chemin donne bien "C:toto"










--

Cordialement,

Jacques.
Avatar
thomas
oui Dim Chemin as String


"Jacques93" a écrit dans le message de groupe de discussion
:
Aurais tu déclaré :

Dim Chemin as String

?

thomas a écrit :
C'est pour cela que je ne comprends pas

Set objFolder = objShell.BrowseForFolder(&H0&, "Choisissez un dossier",
&H1&, Chemin)
ne marche pas

alors que Set objFolder = objShell.BrowseForFolder(&H0&, "Choisissez un
dossier", &H1&, "C:toto") marche

et que Chemin = "C:toto"

"Jacques93" a écrit dans le message de groupe de
discussion
:
Si le répertoire existe et que tu as les droits pour y accéder, cela
doit fonctionner.

thomas a écrit :
J'avais fait un point d'arrêt et debug.print chemin donne bien
"C:toto"










--

Cordialement,

Jacques.
Avatar
Jacques93
Essaie avec :

Dim Chemin As Variant

Ce paramètre peut être soit une chaine de caractères, soit une constante
numérique :

<http://msdn.microsoft.com/en-us/library/bb774065(VS.85).aspx>

<http://msdn.microsoft.com/en-us/library/bb774096(VS.85).aspx>

thomas a écrit :
oui Dim Chemin as String


"Jacques93" a écrit dans le message de groupe de discussion
:
Aurais tu déclaré :

Dim Chemin as String

?




--

Cordialement,

Jacques.
Avatar
thomas
ben non cela ne marche pas mieux mais ce qui est bizarre c'est que si je
clique sur annuler dans la boîte de recherche , Chemin =
objFolder.ParentFolder.ParseName(objFolder.Title).Path restitue le chemin
que j'ai défini par défaut et pas celui que la boîte affiche



"Jacques93" a écrit dans le message de groupe de discussion
:
Essaie avec :

Dim Chemin As Variant

Ce paramètre peut être soit une chaine de caractères, soit une constante
numérique :

<http://msdn.microsoft.com/en-us/library/bb774065(VS.85).aspx>

<http://msdn.microsoft.com/en-us/library/bb774096(VS.85).aspx>

thomas a écrit :
oui Dim Chemin as String


"Jacques93" a écrit dans le message de groupe de
discussion
:
Aurais tu déclaré :

Dim Chemin as String

?




--

Cordialement,

Jacques.
Avatar
Daniel.C
Ca ne te donnera pas la solution, mais, si tu veux uniquement récupérer le
chemin du répertoire, utilise :
Dim Chemin As String, Dossier As String
Chemin = "c:toto"
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = Chemin
.Show
If .SelectedItems.Count > 0 Then Dossier = .SelectedItems(1)
End With
Daniel
"thomas" <nomail> a écrit dans le message de news:

ben non cela ne marche pas mieux mais ce qui est bizarre c'est que si je
clique sur annuler dans la boîte de recherche , Chemin > objFolder.ParentFolder.ParseName(objFolder.Title).Path restitue le chemin
que j'ai défini par défaut et pas celui que la boîte affiche



"Jacques93" a écrit dans le message de groupe de
discussion
:
Essaie avec :

Dim Chemin As Variant

Ce paramètre peut être soit une chaine de caractères, soit une constante
numérique :

<http://msdn.microsoft.com/en-us/library/bb774065(VS.85).aspx>

<http://msdn.microsoft.com/en-us/library/bb774096(VS.85).aspx>

thomas a écrit :
oui Dim Chemin as String


"Jacques93" a écrit dans le message de groupe de
discussion
:
Aurais tu déclaré :

Dim Chemin as String

?




--

Cordialement,

Jacques.



1 2