FileDialog : Problème validation du dossier par défaut

Bonjour à tous,

Je suis débutant en VBA et je vous sollicite pour un petit problème qui me paraît un peu obscur.

J'aimerais utiliser la boîte de dialogue 'FileDialog' pour retourner le nom du chemin sélectionné par l'utilisateur. Concrètement le code ressemble à ça :

'Fonction permettant le choix du fichier
Function GetFolder(strPath As String) As String
Dim fldr As FileDialog
Dim sItem As String
With fldr
    .title = "Select a Folder"
    .AllowMultiSelect = False
    .InitialFileName = strPath
    If .Show<> -1 Then GoTo NextCode
    sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function

'Macro d'exemple
Sub Test()
    MsgBox GetFolder("")
End Sub

Ce code fonctionne sauf quand l'utilisateur choisit le dossier par défaut en cliquant sur 'OK' immédiatement. En effet, au premier appel à cette fonction, l'utilisateur peut choisir le dossier par défaut sans problème ; cependant, lors d'un appel ultérieur, le bouton 'OK' est inutilisable sur le dossier par défaut.

J'ai essayé de mettre un espion sur l'objet fldr pour comprendre ce qu'il se passe et je me suis aperçu des comportements suivants :

  • Lors du premier appel, l'objet fldr possède les propriétés suivantes :
    .InitialFileName = ""
    .FilterIndex = 0
  • Lors des appels suivants, les propriétés désignées n'ont plus les mêmes valeurs :
    .InitialFileName = "Réseau\"
    .FilterIndex = 1

Quelqu'un a-t-il une idée sur ce sujet s'il vous plaît ?

Je vous remercie par avance pour toutes vos réponses apportées !

Bonjour,

Tu devrais peut-être l'initialiser :

    Set fldr = Application.FileDialog(msoFileDialogFolderPicker)

Cordialement.

C'est une erreur de copier-coller, cette ligne fait déjà bien partie de mon code.

Bonjour,

Bonjour MFerrand,

Ce ne serait pas plutôt ceci :

Public Function Getfolder(strPath As String) As String
Dim fldr As FileDialog
    Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
    If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    With fldr
        .Title = "Select a folder"
        .AllowMultiSelect = False
        .InitialFileName = strPath
        If .Show <> -1 Then GoTo nextCode
        Getfolder = .SelectedItems(1)
    End With
nextCode:
    Set fldr = Nothing
End Function
Rechercher des sujets similaires à "filedialog probleme validation dossier defaut"