Ouverture d'un répertoire

Astyanax

XLDnaute Occasionnel
Bonjour à tout le forum, j'ai quelques difficultés à trouver la syntaxe permettant d'ouvrir un répertoire.

La macro que j'aimerais mettre au point devrait :
- ouvrir un répertoire sélectionné sur le disque
- Afficher les fichiers présents dans ce répertoire avec leur extension
- Lancer un des fichiers du répertoire selon clic sur le fichier (fichier de toutes espèces)
- Fermer la macro en cours.
Cela vous semble t-il facilement réalisable et quelles sont les difficultés que je pourrais rencontrer.
Merci de me donner votre avis;
Bonnes fètes de fin d'année.
Astyanax
 

excalibur

XLDnaute Impliqué
Re : Ouverture d'un répertoire

bonjour Astyanax le forum des macros de walkenbach a tester
'Option Explicit

'déclarations API 32 bits
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

Sub ObtenirUnDossier1()
Dim Msg As String
Dim FichierUtilisateur As String
Msg = "Sélectionnez un emplacement pour la sauvegarde."
FichierUtilisateur = ObtenirDossier(Msg)
If FichierUtilisateur = "" Then
MsgBox "Annulé"
Else
MsgBox FichierUtilisateur
End If
End Sub


Function ObtenirDossier(Optional Msg) As String
Dim bInfo As BROWSEINFO
Dim chemin As String
Dim r As Long, x As Long, pos As Integer

' Dossier racine = Bureau
bInfo.pidlRoot = 0&

' Titre dans la boîte de dialogue
If IsMissing(Msg) Then
bInfo.lpszTitle = "Sélectionnez un dossier."
Else
bInfo.lpszTitle = Msg
End If

' Type de dossier à retourner
bInfo.ulFlags = &H1

' Afficher la boîte de dialogue
x = SHBrowseForFolder(bInfo)

' Parser le résultat
chemin = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal chemin)
If r Then
pos = InStr(chemin, Chr$(0))
ObtenirDossier = Left(chemin, pos - 1)
Else
ObtenirDossier = ""
End If
End Function


Sub ObtenirUnDossier2()
' Pour Excel 2002
If Val(Application.Version) < 10 Then
MsgBox "Ce module requiert Excel 2002 ou ultérieur.", vbCritical
Exit Sub
End If
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = Application.DefaultFilePath & "\"
.Title = "Sélectionnez un emplacement pour la sauvegarde."
.Show
If .SelectedItems.Count = 0 Then
MsgBox "Annulé"
Else
MsgBox .SelectedItems(1)
End If
End With
End Sub'salutations
 

excalibur

XLDnaute Impliqué
Re : Ouverture d'un répertoire

bonjour Astyanax le forum une macro qui correspond plus a tes besoins toujours de jhon walkenbach
Option Explicit
Sub ObtenirNomFichierImport()
Dim Filt As String
Dim IndexFiltre As Integer
Dim NomFichier As Variant
Dim Titre As String
Filt = "Fichiers texte (*.txt),*.txt," & _
"Fichiers Lotus (*.prn),*.prn," & _
"Fichiers séparés par des virgules (*.csv),*.csv," & _
"Fichiers ASCII (*.asc),*.asc," & _
"Tous les fichiers (*.*),*.*"
IndexFiltre = 5
Titre = "Sélectionner un fichier à importer"
NomFichier = Application.GetOpenFilename _
(FileFilter:=Filt, _
FilterIndex:=IndexFiltre, _
Title:=Titre)
If NomFichier = False Then
MsgBox "Aucun fichier n'a été sélectionné."
Exit Sub
End If
Workbooks.Open Filename:=NomFichier
End Sub
salutations
 

Astyanax

XLDnaute Occasionnel
Re : Ouverture d'un répertoire

Bonsoir à tout le forum et merci Excalibur pour tes réponses.
J'ai essayé de faire fonctionner les macros mais j'ai plusieurs erreurs que je ne suis pas capable de corriger si je ne comprends pas la majorité des lignes du programme.

Je me suis sans doute mal exprimé lors de mon premier post.
Quand je dis que ma macro doit ouvrir un répertoire, je dois préciser que le nom du répertoire n'est pas sélectionné par "navigateur" mais est le résultat d'une concaténation.
Dans mon interface utilisateur, je demande de choisir un des répertoires principaux puis un des répertoires secondaires puis un des répertoires tertiaires et ces 3 résultats concaténés me donnent le chemin du répertoire au troisième niveau (Ex \Maison\mur\peinture)
Dans ce répertoire peinture, une boîte (texte ou ?) doit afficher les fichiers présents Excel ou Word ou Powerpoint ou ... (Ex pour le répertoire peinture : bleu.xls; vert.doc; jaune.txt; orange.pdf; noir.vsd; ...)
Et je termine ma macro par ouverture du fichier par double clic sur ce fichier (ex : vert.doc)
Bien sur la macro doit se terminer proprement à l'ouverture du fichier choisi (se fermer ou rester ouverte mais sans occasionner d'erreur)
Je ne sais pas si j'ai été plus clair.
PS : Excalibur, ou trouves-tu les macros de J. Walkenbach ??
Bonne soirée à tous
Astyanax
 

Discussions similaires

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 008
dernier inscrit
Ichaka