XL 2013 Application.GetOpenFilename et filtre sur nom fichier

Airone784

XLDnaute Occasionnel
Bonjour à tous,

J'utilise Application.GetOpenFilename pour ouvrir une fenêtre et récupérer le chemin complet d'un fichier que j'inscris dans une textbox d'un formulaire. Ce même formulaire me permet l'envoi d'un mail avec une pièce jointe directement depuis mon fichier excel.
J'aimerais quand j'utilise cette fonction pouvoir filtrer les fichiers dont le nom commence par F pour limiter les choix de sélection dans le dossier (voir capture en pièce jointe).
Je clique sur mon bouton, j'ai ma fenêtre qui s'ouvre avec tous les fichiers contenus dans le dossier. Dans la seconde capture, j'ai tapé f* pour n'avoir que la liste des fichiers qui commencent par f.
Sauf que j'ai été obligé de le taper, je me demandais s'il y avait une possibilité que s'affiche la fenêtre directement avec le filtre sur le nom des fichiers commençant par f actif.

Merci d'avance pour votre aide et bonnes fêtes de fin d'année.
 

Pièces jointes

  • 2022-12-23_09h40_47.png
    2022-12-23_09h40_47.png
    88.3 KB · Affichages: 18
  • 2022-12-23_09h40_57.png
    2022-12-23_09h40_57.png
    71.6 KB · Affichages: 19

Gégé-45550

XLDnaute Accro
Bonjour,
Essayez ceci :
VB:
Dim fd As FileDialog
    Dim FileName As String

    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .Filters.Clear
        .Filters.Add "Fichiers Excel", "*.xls*"
        .Title = "Sélectionnez le document"
        .InitialFileName = ActiveWorkbook.Path & "\f*.xls*"
    End With
    If fd.Show = True Then FileName = fd.SelectedItems(1)

    If Not fd Is Nothing Then Set fd = Nothing
Cordialement,
 

Airone784

XLDnaute Occasionnel
ou sinon,
VB:
fileToOpen = Application _
 .GetOpenFilename("Text Files (f*.xls*), f*.xls*")
If fileToOpen <> False Then
 MsgBox "Open " & fileToOpen
End If
Cordialement
Bonjour,

Merci pour le retour. La solution ne semble pas fonctionner. Je précise que les fichiers recherchés sont des pdf parmi plusieurs pdf, je veux isoler les pdf qui commencent par la lettre f du coup. j'ai donc adapté en conséquence votre code mais rien n'y fait. J'ai pas de filtre qui s'applique. Ai je mal fait :) ???
VB:
'Affiche la boîte de dialogue Ouvrir
FileToOpen = Application.GetOpenFilename("Text Files (f*.pdf), f*.pdf", Title:="Sélectionnez la facture")

If FileToOpen <> False Then
 'MsgBox "Open " & fileToOpen
 TextBox9.Value = FileToOpen
End If
 
Dernière édition:

Gégé-45550

XLDnaute Accro
Bonjour,

Merci pour le retour. La solution ne semble pas fonctionner. Je précise que les fichiers recherchés sont des pdf parmi plusieurs pdf, je veux isoler les pdf qui commencent par la lettre f du coup. j'ai donc adapté en conséquence votre code mais rien n'y fait. J'ai pas de filtre qui s'applique. Ai je mal fait :) ???
VB:
'Affiche la boîte de dialogue Ouvrir
FileToOpen = Application.GetOpenFilename("Text Files (f*.pdf), f*.pdf", Title:="Sélectionnez la facture")

If FileToOpen <> False Then
 'MsgBox "Open " & fileToOpen
 TextBox9.Value = FileToOpen
End If
re-bonjour,
la variante FileDialog marche très bien.
Avec GetOpenFileName, je n'avais pas testé, je viens de le faire et, effectivement, ça ne marche pas.
Mais vous disposez déjà d'une solution qui marche avec FileDialog.
Cordialement,
 

Airone784

XLDnaute Occasionnel
re-bonjour,
la variante FileDialog marche très bien.
Avec GetOpenFileName, je n'avais pas testé, je viens de le faire et, effectivement, ça ne marche pas.
Mais vous disposez déjà d'une solution qui marche avec FileDialog.
Cordialement,
D'accord, je viens d'essayer par contre avec Filedialog je n'arrive pas dans un répertoire que j'avais défini via une ligne de commande chdir avant ma ligne getopenfilename. Comment puis je faire pour arriver dans le répertoire souhaité qui n'est pas le même ???
 

Gégé-45550

XLDnaute Accro
D'accord, je viens d'essayer par contre avec Filedialog je n'arrive pas dans un répertoire que j'avais défini via une ligne de commande chdir avant ma ligne getopenfilename. Comment puis je faire pour arriver dans le répertoire souhaité qui n'est pas le même ???
Bonjour,
dans la ligne
VB:
.InitialFileName = ActiveWorkbook.Path & "\f*.xls*"
Remplacez ActiveWorkbook.Path par une variable de type chaîne de caractères ($) contenant le chemin qui vous intéresse ou par la chaîne elle-même.
Par exemple
VB:
Chemin = "A:\Documents\Documents PDF"
.InitialFileName = Chemin & "\f*.pdf*"

'ou sinon directement
.InitialFileName = "A:\Documents\Documents PDF" & "\f*.pdf*"
 

Airone784

XLDnaute Occasionnel
Bonjour,
dans la ligne
VB:
.InitialFileName = ActiveWorkbook.Path & "\f*.xls*"
Remplacez ActiveWorkbook.Path par une variable de type chaîne de caractères ($) contenant le chemin qui vous intéresse ou par la chaîne elle-même.
Par exemple
VB:
Chemin = "A:\Documents\Documents PDF"
.InitialFileName = Chemin & "\f*.pdf*"

'ou sinon directement
.InitialFileName = "A:\Documents\Documents PDF" & "\f*.pdf*"
ah ben oui bien sûr.
Merci beaucoup pour ton aide précieuse je vais donc basculer sur l'objet filedialog.

Merci encore et a bientot
 

Discussions similaires

Statistiques des forums

Discussions
311 741
Messages
2 082 058
Membres
101 883
dernier inscrit
Don esteban