Private Sub Command1_Click() lireDossier Dir1.Path ' Appel de la commande pour lister les fichiers End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path ' Affiche le contenue du dossier sélectionné End Sub Private Sub Drive1_Change() Dir1.Path = Drive1.Drive ' Le dossier devient le lecteur sélectionné End Sub Private Function lireDossier(dossier As String) Dim dossierPrecedent As String Dim i As Integer Dim j As Integer dossierPrecedent = CStr(Dir1.Path) ' Sauvegarde le dossier précédent Dir1.Path = dossier ' Se place dans le dossier à lire For i = 0 To (Dir1.ListCount - 1) ' Pour chaque dossier présent File1.Path = Dir1.List(i) ' Place le path dans le FileList For j = 0 To (File1.ListCount - 1) ' Pour chaque fichier du FileList Debug.Print File1.List(j) ' L'affiche dans debug Next j lireDossier CStr(Dir1.List(i)) ' Affiche le contenue du dossier sélectionné Next i Dir1.Path = dossierPrecedent ' Se replace au dossier précédent End Function
Un bel exemple de récursivité. Propre et commenté.Je ne l'ai pas essayé, mais à vue de nez, çà me semble pas mal.C'est loin d'être l'algo le plus rapide pour rechercher des fichiers, mais en utilisant des contrôles DirListBox et FileListBox, çà doit être ce qui se fait de mieux.
La fonction ne liste pas les fichiers du répertoire racine.Voici une correction :Private Function lireDossier(dossier As String) Dim dossierPrecedent As String Dim i As Integer Dim j As Integer dossierPrecedent = CStr(Dir1.Path) ' Sauvegarde le dossier précédent Dir1.Path = dossier ' Se place dans le dossier à lire For i = 0 To (Dir1.ListCount - 1) ' Pour chaque dossier présent File1.Path = Dir1.List(i) ' Place le path dans le FileList For j = 0 To (File1.ListCount - 1) ' Pour chaque fichier du FileList Debug.Print File1.Path & "\" & File1.List(j) ' L'affiche dans debug Next j lireDossier CStr(Dir1.List(i)) ' Affiche le contenue du dossier sélectionné Next i If Dir1.Path = dossierPrecedent Then 'lit les fichiers du répertoire racine File1.Path = Dir1.List(i) ' Place le path dans le FileList For j = 0 To (File1.ListCount - 1) ' Pour chaque fichier du FileList Debug.Print File1.Path & "\" & File1.List(j) ' L'affiche dans debug Next j End If Dir1.Path = dossierPrecedent ' Se replace au dossier précédentEnd Function
hey atomic:pC'est un bon code ;o)PaT
Un air de déja vu, bien commenté tout de même
il y a quelques temps déjà j'ai fait un programme de recherche comme windows en utilisant la même technique (il n'affiche pas les icônes mais est quand même 4x plus rapide)J'ai un problème: mon prog ne voit pas les dossiers cachés et leurs sous dossiers (dans les DirListBox il n'y a pas de filtres comme pour FileListBox)Ton prog voit-il les dossiers et sous-dossiers cachés?
Non, mais pense à ajouter un:Dir(dossier,type)Le type de fichier peut être: - 0 Normal - 1 Lecture seule - 2 Fichier caché - 4 Fichier système - 8 Nom de volume ; si cette valeur est indiquée, le répertoire est ignoré - 16 Répertoire - 32 ArchiveCela te retourne le premier trouver. Utilise ensuite "Dir" pour avoir les suivants.
ok mercije n'arrivais pas à trouver dans les api une fonction qui faisait ça pour les dossiersil y a findfirstfile pour les fichiers je croison trouve les suivants avec findnext ou un truc comme ça...en tout cas encore mercialex
cmt va=, dite moi y a qq 1 qui sait comment on ouvre le fichier pour le lire?
ça va bien, et toi ?soyons sérieux ! Ce n'est pas un chat ici, et encore moins le Forum.si tu veux poser une question, c'est là bas que ca se passe !!!http://www.vbfrance.com/infomsg.aspx?ajout=1
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 875 119 membres 28 nouveaux aujourd'hui 16 153 membres club