Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LISTER LES FICHIERS CONTENUES DANS UN DOSSIER ET SES SOUS-DOSSIERS


Information sur la source

Catégorie :Fichier / Disque Niveau : Débutant Date de création : 21/10/2004 Vu : 6 108

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

À l'aide de DriveListBox, DirListBox et FileListBox, ce code affiche dans un debug tous les fichiers contenues dans le dossier sélectionné (En appuyant sur le bouton) et ses sous-dossiers
 

Source

  • 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
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

Commentaires et avis

signaler à un administrateur
Commentaire de econs le 21/10/2004 17:39:29 administrateur CS

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.

signaler à un administrateur
Commentaire de clafouti le 21/10/2004 20:53:16

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édent
End Function

signaler à un administrateur
Commentaire de SpOrTiF le 21/10/2004 22:05:25

hey atomic:p

C'est un bon code ;o)

PaT

signaler à un administrateur
Commentaire de TheLordFreddy le 22/10/2004 13:06:17

Un air de déja vu, bien commenté tout de même

signaler à un administrateur
Commentaire de mrtrampo le 02/11/2004 15:54:41

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?

signaler à un administrateur
Commentaire de At0mIc le 02/11/2004 17:37:00

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 Archive

Cela te retourne le premier trouver. Utilise ensuite "Dir" pour avoir les suivants.

signaler à un administrateur
Commentaire de mrtrampo le 02/11/2004 18:30:26

ok merci
je n'arrivais pas à trouver dans les api une fonction qui faisait ça pour les dossiers

il y a findfirstfile pour les fichiers je crois
on trouve les suivants avec findnext ou un truc comme ça...

en tout cas encore merci
alex

signaler à un administrateur
Commentaire de malako le 29/03/2007 10:40:11

cmt va=, dite moi y a qq 1 qui sait comment on ouvre le fichier pour le lire?

signaler à un administrateur
Commentaire de Renfield le 29/03/2007 10:45:46 administrateur CS

ç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

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.