XL 2019 Se prépositionner sur un répertoire défini avant d'exécuter ShowFileOpenDialog FileList pour récupérer les noms des fichiers de ce répertoire

ESCOUGER2022

XLDnaute Nouveau
Bonjour,
Je souhaiterais afficher via la commande "ShowFileOpenDialog FileList" la liste des fichiers d'un répertoire dont le nom a été prédéterminé (par exemple "C:\CVS\GUIDES")

Malheureusement les fichiers affichés sont ceux du répertoire que j'avais sélectionné lors de la précédente utilisation de ce même programme.
ChDrive et CHDIR sont sans effet.
______________________________________________________________________________________
exemple: Je lance mon tableau et le répertoire qui m'est proposé pour la sélection des
fichiers est C:\REP1
Je sélectionne 2 fichiers et mon programme se déroule normalement.

Le lendemain je relance ce même tableau. Le répertoire proposé est toujours C:\REP1
Je parcoure l'arborescence et me place sur C:\REP2
Je sélectionne 3 fichiers sur ce répertoire C:\REP2 et mon programme se termine normalement

Le surlendemain je relance ce même tableau. Le répertoire proposé est encore C:\REP2
__________________________________________________________
Comment puis-je faire en sorte que, lorsque le lance mon tableau, le répertoire proposé pour la sélection des fichiers soit toujours "C:\CVS\GUIDES"

Merci d'avance de m'aider à trouver une solution. Rien de ce que j'ai trouvé sur votre site, ni ailleurs ne semble répondre à ce souci.
GE
 

ESCOUGER2022

XLDnaute Nouveau
Merci pour cette si rapide réponse. Vous avez parfaitement compris ma question.
Voyez ci-dessous la commande "Showfileopendialog" de mon VBA

Je ne sais pas ou parametrer le "chemin" dans tous ces éléments
Le seul que je vois serait .lpstrInitialDir mais si c'était le bon, le programme proposerait toujours C:\CVS, ce qui n'est pas le cas.
Peut-être existe-t-il un autre paramètre ...que je ne connais pas?

Sub ShowFileOpenDialog(ByRef FileList As Collection, sfilter)
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim FileDir As String
Dim FilePos As Long
Dim PrevFilePos As Long
With OpenFile
.lStructSize = Len(OpenFile)
.hwndOwner = 0
.hInstance = 0
.lpstrFilter = sfilter
.nFilterIndex = 1
.lpstrFile = String(4096, 0)
.nMaxFile = Len(.lpstrFile) - 1
.lpstrFileTitle = .lpstrFile
.nMaxFileTitle = .nMaxFile
.lpstrInitialDir = "C:\CVS"
.lpstrTitle = "Multi Select Drawings"
.flags = OFN_HIDEREADONLY + _
OFN_PATHMUSTEXIST + _
OFN_FILEMUSTEXIST + _
OFN_ALLOWMULTISELECT + _
OFN_EXPLORER
lReturn = GetOpenFileName(OpenFile)
If lReturn <> 0 Then
FilePos = InStr(1, .lpstrFile, Chr(0))
If Mid(.lpstrFile, FilePos + 1, 1) = Chr(0) Then
FileList.Add .lpstrFile
Else
FileDir = Mid(.lpstrFile, 1, FilePos - 1)
Do While True
PrevFilePos = FilePos
FilePos = InStr(PrevFilePos + 1, .lpstrFile, Chr(0))
If FilePos - PrevFilePos > 1 Then
FileList.Add FileDir + "\" + _
Mid(.lpstrFile, PrevFilePos + 1, _
FilePos - PrevFilePos - 1)
Else
Exit Do
End If
Loop
End If
End If
End With
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re, Bonsoir Patrick,
Mais dans votre contexte que vous apporte de plus votre ShowFileOpenDialog par rapport à un classique Application.GetOpenFilename . Comme par ex :
VB:
Sub OuvertureFichiers()
    On Error GoTo Fin
    Dim Fichier As Variant
    Const Dossier As String = "C:\CVS\GUIDES\"
    ChDrive Dossier: ChDir Dossier
    Fichier = Application.GetOpenFilename("Excel files (*.xls*), *.xls*", , "EXEMPLE D'OUVERTURE FICHIER TYPE XL", , False)
    If Fichier = False Then
        MsgBox "Pas de fichier sélectionné"
    Else
        MsgBox "Fichier sélectionné : " & Fichier
    End If
    Exit Sub
Fin:
    MsgBox "Erreur rencontrée."
End Sub
Il ouvre la fenêtre sur le bon dossier et filtre sur le type de fichier demandé.
 

ESCOUGER2022

XLDnaute Nouveau
Bonsoir Sylvanu,
La différence réside dans le fait que je souhaite que tous les fichiers du répertoire (éventuellement filtrés ) soient affichés et permettent ensuite à l'opérateur de faire une selection multiple sur un ou plusieurs fichiers qui seront ensuite mis en pièce(s) jointe(s) dans le mail généré.
Sous réserve de n'avoir pas compris ce que vous proposez, je ne peux choisir qu'un seul fichier avec votre méthode.
Merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
C'était purement démonstratif, GetOpenFilename permet évidemment dans ses options le multi select :
1666041194765.png

 

ESCOUGER2022

XLDnaute Nouveau
Bonjour,

Effectivement, la solution proposée par Sylvanu est bien plus simple et efficace que la mienne que j'avais dû pomper il y a des années dans un tableau local repris pour l'exercice d'aujourd'hui!!!
Voici mon tableau définitif.
Merci de votre aide
 

Pièces jointes

  • test_Envoi Mail avec pièce attachée via excel.xlsm
    40.8 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 148
Membres
112 670
dernier inscrit
Flow87