mirmoleboss
Messages postés303Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention29 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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]
mirmoleboss
Messages postés303Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention29 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
mirmoleboss
Messages postés303Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention29 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
mirmoleboss
Messages postés303Date d'inscriptionmercredi 11 octobre 2006StatutMembreDernière intervention29 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
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 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~