Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Lister repertoires et sous-répertoires.

  • Initiateur de la discussion Initiateur de la discussion patinator
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

patinator

XLDnaute Nouveau
Bonjour,

Je suis à la recherche d’un classeur Excel, avec une macro qui me permettrai de lister le contenu d’un répertorie et de ses sous répertoire.

Un bouton parcourir mes permettrait de choisir le répertoire à lister.

La liste des fichiers serai insérer en colonne A et ligne débuterai en ligne 2. L’extension des noms de fichier n’apparaitrait pas.

Chaque non de fichier, serait un lien qui me renverra vers le dossier ou se trouve le fichier.

Je ne sais pas écrire les macros, je joins le fichier que j’aimerai améliorer.

Merci beaucoup pour votre aide.

Bonne fin de journée.

Patinator
 

Pièces jointes

Re : Lister repertoires et sous-répertoires.

Bonsoir à tous,


Aucune idée, sur comment faire, je ne m'en sort pas.

mais enfin, ce n'est pas une réponse ça !?
comment veux tu que l'on t'aide si tu ne sais pas quoi et sans exemple de ton problème !
de plus tu es beaucoup trop long à réagir, on finit par t'oublier !!!!
 
Dernière édition:
Re : Lister repertoires et sous-répertoires.

Bonjour à tous

Voici un code que j'utilise, à adapter. Il suffit de rentrer le chemin dans une cellule.

Code:
Public Chemin As String, dossier, TableauListeDossierEncours, T1
Sub Liste_Dossier_Select()
T1 = Timer
NomAScanner = ActiveCell.Text: If NomAScanner = "" Then Exit Sub
Sheets.Add: Nom1 = Replace(NomAScanner, ":", " "): Nom2 = Replace(Nom1, "\", " "): If Len(Nom2) < 31 Then ActiveSheet.Name = Nom2 Else ActiveSheet.Name = Mid(Nom2, 1, 31)
Cells(1, 1).Value = NomAScanner
Liste_Dossier_Sous_Dossiers_OK
'Stop
'Ajouter ordre et alea
Derl = Cells(Rows.Count, 1).End(xlUp).Row
'AjouterCode
Selection.AutoFilter
    Selection.AutoFilter
 
Application.StatusBar = Format(Timer - T1, "0.0") & " secondes"
End Sub
Sub Liste_Dossier_Sous_Dossiers_OK()
    
        Application.ScreenUpdating = False
    Set F = ActiveSheet
    If F.FilterMode Then F.ShowAllData
    If Not F.AutoFilterMode Then F.Range("A1").AutoFilter

    Range(Cells(2, 1), Cells(Rows.Count, 10)).Clear
    Dim TableauListeDossier(1000000)
    dossier = [A1]
    Liste_Dossiers_SousDossiers
    Derl = Cells(Rows.Count, 1).End(xlUp).Row: If Derl = 1 Then Derl = 2
    'Stop
    For i = 1 To Derl
        TableauListeDossier(i) = Cells(i, 1).Value
    Next
    'Stop
    Range(Cells(2, 1), Cells(Derl, 10)).Clear
    For i = 1 To Derl
        TableauListeDossierEncours = TableauListeDossier(i)
        ListeFichierDossierEnCours (TableauListeDossier(i))
    Next
    'Tri_Desc_Date
    Application.ScreenUpdating = True
    'MsgBox Format(Timer - t1, "0.0")
    MEF_ListeFichiers
    
End Sub
Sub TousLesDossiers(LeDossier$, Idx As Long)
    Dim fso As Object, dossier As Object
    Dim sousRep As Object, Flder As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set dossier = fso.GetFolder(LeDossier)
    'examen du dossier courant
    On Error Resume Next
    Idx = Cells(Rows.Count, 1).End(xlUp).Row + 1
    For Each Flder In dossier.subfolders
        Cells(Idx, 1).Value = Flder.Path
        Idx = Idx + 1
    Next
    'traitement récursif des sous dossiers
    For Each sousRep In dossier.subfolders
        TousLesDossiers sousRep.Path, Idx
    Next sousRep
    Set fso = Nothing
End Sub                                               'fs
Sub Liste_Dossiers_SousDossiers()
'TousLesDossiers "D:\LUI\Developement\VB_VBA\", 0
    TousLesDossiers [A1], 0
    'Tableau de chaque dossier puis listage de chaque dossier
End Sub
Sub ListeFichierDossierEnCours(Chemin As String)
    Dim dossier As Object, Fichier As Object
    Dim i As Long
    'Chemin du dossier à analyser (à adapter au besoin)
    'Chemin = ThisWorkbook.Path
    'Chemin = ActiveSheet.Range("A1").Value    'Sheets("paramètrage").Range("b5").Value
    'Définition de la variable
    On Error Resume Next
    If Chemin = "" Then Exit Sub
    Set dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
    ' Boucle sur les fichiers
    'Range("a2").Select
    '    Stop
    i = Cells(Rows.Count, 1).End(xlUp).Row + 1
    For Each Fichier In dossier.Files
        Cells(i, 1).Formula = TableauListeDossierEncours
        'Cells(i, 1).Formula = Fichier.Path
        'Cells(i, 1).Formula = Range("A1").Value
        Cells(i, 2).Formula = Fichier.Name
        Cells(i, 3).Formula = Fichier.Size
        Cells(i, 4).Formula = Fichier.DateLastModified    'DateCreated'DateLastAccessed
        i = i + 1
    Next
End Sub
Sub MEF_ListeFichiers()
    'Columns("B:D").Select
    'Columns("B:D").EntireColumn.AutoFit
    'Columns("A:A").Select
    Columns("A:B").ColumnWidth = 40
    Columns("C:D").ColumnWidth = 20
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Nom"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "Taille"
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "Date"
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "Ordre"
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "Aléatoire"
    Range("F1").Select
    Range(Selection, Selection.End(xlToLeft)).Select
    
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 49407
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Columns("C:D").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Font.Bold = False
    Columns("E:F").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Font.Bold = False
    
    'Range("C").Select
    With Range("C:C")
        .HorizontalAlignment = xlRight 'xlLeft'xlcenter
        .VerticalAlignment = xlCenter
        .NumberFormat = "#,##0"
    End With
    
    Range("B1").Select
End Sub
 
Re : Lister repertoires et sous-répertoires.

Bonjour,

Désolé pour mes retours longs. j'ai refait le classeur avec les exemples que je vous joints, mais ca ne fonctionne pas.

Les macros sont activés et je travaille sous Excel 2013.

Merci pour votre Aide.

Patinator

l'erreur provient du fait que des fichiers sans extension existent dans votre répertoire C:

pour remédier à ça ajouter

On Error Resume Next

juste au dessus du Do While Len(x) > 0
 
Dernière édition:
Re : Lister repertoires et sous-répertoires.

Re-bonsoir,

j'ai du mal a suivre, qui peux reprendre mon fichier et me l'adapté a mes besoins ?

Juste lister tous les fichiers sans extension dans les dossiers et sous dossier d'un répertoire en choisissant l'arborescence à partir d'une bouton. comme dans mon fichier de départ.

Merci par contre vous êtes super bon.

Merci pour votre aide.

Patinator
 
Re : Lister repertoires et sous-répertoires.

Bonsoir,

voir ceci et me dire quoi !

c'est un fichier perso plus complet avec arborescence que j'ai nettoyé pour un essai

pour l'instant je le laisse avec Noms/Dates ... Chemin

EDIT: voir versions 2 et 3
 

Pièces jointes

Dernière édition:
Re : Lister repertoires et sous-répertoires.

Bonjour Roland,

Merci beaucoup,

Le fichier "ListRepFich2.xlsm" me convient parfaitement, juste une modification, est 'il possible de mettre en colonne B l'extension des fichier de la colone A, sans le point ?

Merci.

Patinator
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…