Liste de fichiers avec dossiers ET sous dossiers
Résolu/Fermé
Porinu
-
Modifié par jordane45 le 10/12/2014 à 13:55
Porinu Messages postés 37 Date d'inscription mercredi 10 décembre 2014 Statut Membre Dernière intervention 6 octobre 2017 - 10 déc. 2014 à 16:02
Porinu Messages postés 37 Date d'inscription mercredi 10 décembre 2014 Statut Membre Dernière intervention 6 octobre 2017 - 10 déc. 2014 à 16:02
A voir également:
- Lister les fichiers d'un dossier et sous dossier
- Téléchargez cette archive (dossier compressé). en extraire tous les fichiers dans un dossier local. quel fichier contient l’expression trouverpix ? ✓ - Forum Windows
- Dossier appdata - Guide
- Le fichier à télécharger est la nouvelle note de service de votre entreprise. importez ce fichier dans le bon dossier sur l'espace pix cloud. donnez à ce fichier les mêmes droits d'accès que les autres notes de service. ✓ - Forum Windows
- Mettre un mot de passe sur un dossier - Guide
- Dans le gestionnaire de fichiers ci-dessous : dans le dossier musiques, créez un dossier playlist. cherchez les musiques hip-hop et country. déplacez-les dans le dossier playlist que vous avez créé. ✓ - Forum YouTube
3 réponses
jordane45
Messages postés
38321
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 décembre 2024
4 707
10 déc. 2014 à 14:08
10 déc. 2014 à 14:08
Bonjour,
Pour rechercher tous les fichiers/dossiers de chaque répertoire/sous-répertoire.. il faut faire du reccursif...
Par contre, voici un code qui fonctionne très bien.. qu'il ne te reste qu'à modifier pour qu'il corresponde exactement à tes besoins:
(je t'invite à le tester avant de nous répondre ^^ )
Pour rechercher tous les fichiers/dossiers de chaque répertoire/sous-répertoire.. il faut faire du reccursif...
Par contre, voici un code qui fonctionne très bien.. qu'il ne te reste qu'à modifier pour qu'il corresponde exactement à tes besoins:
(je t'invite à le tester avant de nous répondre ^^ )
'---------------------------------------------------------------------------- ' Outils / Références A COCHER Microsoft Scripting Runtime ' Microssoft Shell Controls and Automation '---------------------------------------------------------------------------- Private Declare Function QueryPerformanceCounter Lib "Kernel32" (x As Currency) As Boolean Private Declare Function QueryPerformanceFrequency Lib "Kernel32" (x As Currency) As Boolean Option Explicit Dim i As Long, k As Long Dim oShell As Shell, oFolder As Shell32.Folder, oFolderItem As Shell32.FolderItem Dim FSO As FileSystemObject, Dossier As Scripting.Folder, Fichier As Scripting.File Dim Debut As Currency, Fin As Currency, Freq As Currency, NbDossiers As Long Dim TypeFichier As String Private Sub ExtractionDonnees(sDossier As String) Dim LastRow As Long, j As Long Application.ScreenUpdating = False With Feuil1 .Cells.Clear .Range("A1") = "Nom" .Range("B1") = "Taille" .Range("C1") = "Type" .Range("D1") = "Date Modification" .Range("E1") = "Date Création" .Range("F1") = "Date Dernier Accès" .Range("G1") = "Attributs" .Range("H1") = "Etat" .Range("I1") = "Propriétaire" .Range("J1") = "Auteur" .Range("K1") = "Titre" .Range("L1") = "Sujet" .Range("M1") = "Catégorie" .Range("N1") = "Pages" .Range("O1") = "Commentaires" .Range("P1") = "Copyright" .Range("Q1") = "Artiste" .Range("R1") = "Titre Album" .Range("S1") = "Année" .Range("T1") = "N° de Piste" .Range("U1") = "Genre" .Range("V1") = "Durée" .Range("W1") = "Vitesse Transmission" .Range("X1") = "Protégé" .Range("Y1") = "Modele Appareil Photo" .Range("Z1") = "Date Cliché" .Range("AA1") = "Dimension" .Range("AB1") = "Largeur" .Range("AC1") = "Hauteur" .Range("AD1") = "Nom Episode" .Range("AE1") = "Description Programme" .Range("AF1") = "Taille Echantillon Audio" .Range("AG1") = "Fréquence Echantillonnage" .Range("AH1") = "Chemin" End With k = 2 Set oShell = New Shell Set FSO = New Scripting.FileSystemObject Set Dossier = FSO.GetFolder(sDossier) NbDossiers = NbDossiers + 1 For Each Fichier In Dossier.Files If UCase$(TypeFichier) = UCase$(FSO.GetExtensionName(Fichier)) Then Set oFolder = oShell.Namespace(Dossier.Path) Set oFolderItem = oFolder.ParseName(Fichier.Name) i = 1 With Feuil1 For j = 0 To 34 If j <> 31 Then .Range(NumCol2Lettre(i) & k) = oFolder.GetDetailsOf(oFolderItem, j) i = i + 1 End If Next j .Range(NumCol2Lettre(i - 1) & k) = sDossier Application.StatusBar = "Dossiers : " & NbDossiers & " / Fichiers : " & k - 1 k = k + 1 End With End If Next Fichier RchRecursive Dossier FormatAttributs With Feuil1 LastRow = .Range("A" & Rows.Count).End(xlUp).Row .Range("A1:AH" & LastRow).WrapText = False .Range("1:1").Font.Bold = True .Rows("2:2").Select ActiveWindow.FreezePanes = True .Columns("A:AH").EntireColumn.AutoFit .Range("A1:AH1").Interior.ColorIndex = 36 .Range("D2:F" & LastRow).NumberFormat = "dd/mm/yyyy hh:mm:ss" .Range("AF2:AF" & LastRow).NumberFormat = "dd/mm/yyyy hh:mm:ss" End With Tri Feuil1.Activate With ActiveWindow .ScrollRow = 1 .ScrollColumn = 1 End With Set FSO = Nothing Set oShell = Nothing Set Dossier = Nothing Set oFolder = Nothing Set oFolderItem = Nothing Set Fichier = Nothing Application.ScreenUpdating = True End Sub Private Sub FormatAttributs() Dim LastRow As Long LastRow = Feuil1.Range("G" & Rows.Count).End(xlUp).Row + 1 Feuil1.Range("G2:G" & LastRow).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom End With End Sub Private Function NumCol2Lettre(iNumCol As Long) As String Dim i As Long, sStr As String i = iNumCol sStr = "" Do While i > 0 sStr = Chr$(((i - 1) Mod 26) + 65) & sStr i = (i - 1) \ 26 Loop NumCol2Lettre = sStr End Function Private Sub RchRecursive(sFolder As Scripting.Folder) Dim SousDossier As Scripting.Folder Dim j As Long For Each SousDossier In sFolder.SubFolders Set Dossier = FSO.GetFolder(SousDossier) NbDossiers = NbDossiers + 1 For Each Fichier In SousDossier.Files If UCase$(TypeFichier) = UCase$(FSO.GetExtensionName(Fichier)) Then Set oFolder = oShell.Namespace(Dossier.Path) Set oFolderItem = oFolder.ParseName(Fichier.Name) i = 1 With Feuil1 For j = 0 To 34 If j <> 31 Then .Range(NumCol2Lettre(i) & k) = oFolder.GetDetailsOf(oFolderItem, j) i = i + 1 End If Next j .Range(NumCol2Lettre(i - 1) & k) = sFolder k = k + 1 End With End If Application.StatusBar = "Dossiers : " & NbDossiers & " / Fichiers : " & k Next Fichier RchRecursive SousDossier Next SousDossier End Sub Sub SelDossier() Dim sChemin As String sChemin = ThisWorkbook.Path With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = sChemin & "\" .Title = "Sélectionner le Dossier à traiter" .AllowMultiSelect = False .InitialView = msoFileDialogViewDetails .ButtonName = "Sélection Dossier" .Show If .SelectedItems.Count > 0 Then DoEvents TypeFichier = InputBox( _ "Donnez seulement le type de fichier (par exemple pdf, xls, doc, jpg ou dxf etc...)" _ , "TYPE DE FICHIER", "stl") QueryPerformanceCounter Debut NbDossiers = 0 ExtractionDonnees .SelectedItems(1) QueryPerformanceCounter Fin QueryPerformanceFrequency Freq Application.StatusBar = "Dossiers : " & NbDossiers & " / Fichiers : " & k - 2 & " / " & Format((Fin - Debut) / Freq, "0.00 s") End If Feuil1.Range("C1").Select End With End Sub Private Sub Tri() Dim LastRow As Long LastRow = Feuil1.Range("A" & Rows.Count).End(xlUp).Row Feuil1.Range("A2:AH" & LastRow).Sort Key1:=Feuil1.Range("A2"), Order1:=xlAscending, Key2:=Feuil1.Range("B2") _ , Order2:=xlAscending, Key3:=Feuil1.Range("C2"), Order3:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _ xlSortNormal End Sub
10 déc. 2014 à 14:51
Par contre comme je le disais je n'y connais rien en macro, et ce code est une nouvelle énigme pour moi ^^ Je suis tout à fait perdue, je ne sais pas ce que je dois modifier...
Voulez-vous bien m'éclairer s'il vous plaît ?
Merci bien.