Lister des fichiers

Résolu
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011 - 11 mai 2007 à 21:58
 Sebdr - 29 mai 2007 à 20:03
bonjour a tous voila jai deja regarder surle site mais les sources que je trouvais ne me convenais aps
jai beaucoup de film sur mon ordi et je souhaite un programme ou je choisis le fichiers de depart (genre mes documents)et le prog analyse tout le fichiers a la recher des .avi et le met dans une feuille excel.Ce qui serait encore mieu cest qu'il yest un masquege de fais afin de supprimer le c:/documents and settings/ect
merci beaucoup

44 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 mai 2007 à 16:49
Pour le code de Jacques ?
Suffit d efaire une boucle :

Private Sub CommandButton1_Click()
       dim i as long

Sheets("Nom de ta feuille").Select

  chemin = "C:\Documents and Settings\Le Floch\Mes documents\torrent\Finit" ' ici le répertoire choisi
  filtre = "*.avi" 'ici le filtre choisi
  lesfics = Dir(chemin & "" & filtre)
  Do While lesfics <> ""
    i = i + 1
 Cells(i, 1).Value = lesfics
    lesfics = Dir
  Loop

End Sub

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
13 mai 2007 à 00:00
Salut à vous,
Voici comment je procède, sans API, avec les fonctions de bases, de façon récursive
Peut-être devrais-je mettre ça sur Codyx VBA (?)
Il me semble que ça revient de temps à autre... bof, je verrai...

Option Explicit

Private Ligne As Long   'pour conserver l'Index de la ligne sur laquelle on écrit

Private Sub DémarrerLaRecherche()
    Dim Chemin As String, Filtre As String
   
    'S'il y a des entêtes sur la première ligne, on met 1
    'Si on veut démarrer l'écriture des fichiers sur la ligne 3, on met 2, ...
    Ligne = 1
   
    'Vider la colonne A avant d'écrire
    Columns(1).ClearContents
   
    'Déterminer le chemin de base
    Chemin = "C:\Windows"
   
    'Définir les extensions à rechercher en conservant le format *.XYZ
    '   chacune est séparée par un point-virgule
    Filtre = "*.bmp;*.jpg"
   
    RechercheFichier Chemin, Filtre

    MsgBox "Terminé"

End Sub

Private Sub RechercheFichier(Chemin As Variant, Filtre As String)
    Dim Fichier As Variant              'variable qui contiendra les noms de fichiers
    Dim Liste As Collection             'pour stocker les répertoires
    Dim I As Integer, Tablo() As String 'tableau pour gérer les extensions
   
    On Error Resume Next    'j'aime pas mais certains fichiers sont
   
    'Le chemin doit se terminer par un \
    If Right(Chemin, 1) <> "" Then
        Chemin = Chemin & ""
    End If
   
    'Initialisation de la collection
    Set Liste = New Collection
    Fichier = Dir(Chemin & "*.*", vbDirectory + vbHidden + vbSystem)
   
    While Fichier > ""
    'Lecture des sous-répertoires
        If GetAttr(Chemin & Fichier) And vbDirectory Then
            If Left(Fichier, 1) <> "." Then
                Liste.Add Chemin & Fichier
            End If
   
    'Lecture des fichiers dans le répertoire
        ' si plusieurs extensions
        ElseIf InStr(1, Filtre, ";") <> 0 Then
            Tablo = Split(Filtre, ";")
            For I = 0 To UBound(Tablo)
                Tablo(I) = Trim(Tablo(I))
                If Fichier Like Tablo(I) Then
                    Ligne = Ligne + 1
                    ActiveSheet.Range("A" & Ligne) = Chemin & Fichier
                End If
            Next
        'si une seule extension
        ElseIf Fichier Like Filtre Then
            Ligne = Ligne + 1
            ActiveSheet.Range("A" & Ligne) = Chemin & Fichier
        End If
   
    'Continuer la lecture
        Fichier = Dir
       
        DoEvents
    Wend
   
    'Appel récursif pour chaque répertoire
    For Each Fichier In Liste
        DoEvents
        RechercheFichier Fichier, Filtre
    Next
   
    Set Liste = Nothing
   
End Sub

MPi
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 mai 2007 à 08:51
Salut,
Une Nième solution serait d'utiliser la récursivité + FileSystemObject.
Regarde se petit exemple.
NOTE: pour être utilisable tel quel il te faut ajouter la référence suivante
Depuis l'IDE VBA
Menu Options => Référence => Microsoft Scripting Runtime
Je sais que ce n 'est peu être pas la façon la plus "optimisée" pour rechercher des fichiers mais bon , c'est pour donneer ma contribution.

Sub ListerAVI(FSO As FileSystemObject, WSheet As Worksheet, Ligne As Long, Rep As String)
'répertoire dans lequel on recherche
'actuellement
Dim Fol As Folder
'Sous répertoires dans lequel on recherche
'actuellement
Dim SubFol As Folder
'Fichiers du rep
Dim Fil As File
   
   Set Fol = FSO.GetFolder(Rep)
   'pour chaque fichier du répertoire
   For Each Fil In Fol.Files
       'on regarde l'extension
       If UCase(FSO.GetExtensionName(Fil.Path & Fil.Name)) = "AVI" Then
           WSheet.Range("A" & CStr(Ligne)) = Fil.Name  'juste le nom
           'WSheet.Range("A" & CStr(Ligne)) = Fil.Path & Fil.Name 'Chemin + NOm
           Ligne = Ligne + 1
       End If
   Next
   
   'pour chaque repertoire on rapelle la meme procédure
   For Each SubFol In Fol.SubFolders
       Call ListerAVI(FSO, WSheet, Ligne, SubFol.Path)
   Next

   'destruction des objets
   Set Fol = Nothing
   Set Fil = Nothing
   Set SubFol = Nothing
   
End Sub<hr />
Private Sub CommandButton1_Click()
   Call ListerAVI(New FileSystemObject, ActiveSheet, 1, "C:\Julien")
End Sub , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011
14 mai 2007 à 18:55
bah merci ce code a lair de focntionner parfaitement

Private Sub CommandButton1_Click()
 Dim stra As String
 stra = BrosweForFolder("Select Source Folder")
If stra <> "" Then
Call ListerAVI(New FileSystemObject, ActiveSheet, 1, stra)
End If
End Sub

Sub ListerAVI(FSO As FileSystemObject, WSheet As Worksheet, Ligne As Long, Rep As String)
'répertoire dans lequel on recherche
'actuellement
Dim Fol As Folder
'Sous répertoires dans lequel on recherche
'actuellement
Dim SubFol As Folder
'Fichiers du rep
Dim Fil As File
 
   Set Fol = FSO.GetFolder(Rep)
   'pour chaque fichier du répertoire
   For Each Fil In Fol.Files
       'on regarde l'extension
       If UCase(FSO.GetExtensionName(Fil.path & Fil.Name)) = "AVI" Then
           WSheet.Range("A" & CStr(Ligne)) = Fil.Name  'juste le nom
           'WSheet.Range("A" & CStr(Ligne)) = Fil.Path & Fil.Name 'Chemin + NOm
           Ligne = Ligne + 1
       End If
   Next
 
   'pour chaque repertoire on rapelle la meme procédure
   For Each SubFol In Fol.SubFolders
       Call ListerAVI(FSO, WSheet, Ligne, SubFol.path)
   Next

   'destruction des objets
   Set Fol = Nothing
   Set Fil = Nothing
   Set SubFol = Nothing
 
End Sub

seul petit hique il remplace a chauqe fois les film mais je devrais pouvoir chnager ca
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
11 mai 2007 à 22:41
Bonjour,

A quel niveau se situe exactement ton problème ?

- Lister les fichiers qui ont une extension particulière définie ? (la réponse a été donnée il y a encore vraiment très  peu de temps ...!)

ou :

- écrire le résultat de ce "listing" dans des cellules d'une feuille ?

Précise, s'il te plait .
0
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011
12 mai 2007 à 09:42
mais enfete cest les deux
je souhaite lister les fichiers avec lextensions .avi et les mettre dans une feuille excel
mais aussi le truc de masquage je ne vois pas comment faire
merci
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 mai 2007 à 15:12
salut,

http://www.codyx.org/snippet_lister-tous-fichiers-repertoire_198.aspx

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011
12 mai 2007 à 15:31
ok merci mais javais deja trouver celui la mais jai un message derreur au niveau de
Set fs = Application.FileSearch
et je sais pas pourquoi quand je regarde apres il me dit que cest pas gerer
merci
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 mai 2007 à 16:14
Re,

étonnant ! FileSearch est une classe de la bibliothèque d'Office..
Es-tu sûr d'être avec VBA Excel ?
Quelle version d'Excel possèdes-tu ?

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
12 mai 2007 à 16:21
Bonjour à tous,

Je suis toujours étonné de ce que l'on n'utilise pas ce qui est simple :
Voilà ce qui suffit :

Private Sub Command1_Click()
  chemin = "d:\monoutil" ' ici le répertoire choisi
  filtre = "*.avi" 'ici le filtre choisi
  lesfics = Dir(chemin & "" & filtre)
  Do While lesfics <> ""
     Me.Print lesfics
    lesfics = Dir
  Loop
End Sub

Voilà... Le reste (envoyer vers des cellules plutôt que, comme je le fais ici, d'imprimer sur la Form) relève de VBA (que je ne connais pas) et devrait être fort simple.
0
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011
12 mai 2007 à 16:25
oui je suis avec excel mais le 2007
avec ton code je nai rien qui saffiche.
merci
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 mai 2007 à 16:27
Jacques, salut,

ton code ne fonctionne pas !
Mirmoleboss,

faut que je le réinstalle, patiente un peu je te tiens au courant

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011
12 mai 2007 à 16:34
ok merci davance
moi jai modifie sa comme ca
Private Sub CommandButton1_Click()

  chemin = "C:\Documents and Settings\Le Floch\Mes documents\torrent\Finit" ' ici le répertoire choisi
  filtre = "*.avi" 'ici le filtre choisi
  lesfics = Dir(chemin & "" & filtre)
  Do While lesfics <> ""
 MsgBox lesfics
    lesfics = Dir
  Loop

End Sub
 et cela fonctionne mais maintenant faut que sa affiche les resultat dans une feuille et quil prennent en compte les sous dossier
merci
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 mai 2007 à 16:40
Oui, c'est pour ça que je disais que ça ne fonctionnait pas, car ça ne liste pas les sous dossiers.
FileSearch lui, s'en charge. Mais faut que j'attende la fin de l'installation (qui, cela dit en passant, est longue) pour voir ce qui cloche avec la version 2k7

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011
12 mai 2007 à 16:44
daccord merci beaucoup et sinon pour linserer dans une feuille?
0
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011
12 mai 2007 à 16:51
ok merci et pour les sous repertoires alors?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 mai 2007 à 16:54
Patiente, l'install est finie d'ici peu de temps

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011
12 mai 2007 à 16:55
ah oki lol desole
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 mai 2007 à 17:17
Bon effectivement, FileSearch n'est pas connu du tout d'Office 2007. Je ferai qques recherches ce soir (dans 4h), là je dois partir absolument.

Te tiens au courant

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011
12 mai 2007 à 17:19
ok merci jattends avec impatience
0
Rejoignez-nous