IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Lister les fichiers d'un répertoire dans une feuille Excel [À publier]


Sujet :

Contribuez

  1. #1
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut Lister les fichiers d'un répertoire dans une feuille Excel
    Suite à cette question, je me suis basé sur le contenu de cette discussion (merci à SilkyRoad) pour charger, dans une feuille Excel, le contenu d'un répertoire (avec les sous-répertoires).

    La routine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Option Explicit
     
    Sub ListFilesInFolder(strFolderName As String, bIncludeSubfolders As Boolean)
      ' adapté de Ole P Erlandsen
      ' necessite d'activer la reference Microsoft Scripting RunTime
      Static FSO As FileSystemObject
      Dim oSourceFolder As Scripting.Folder
      Dim oSubFolder As Scripting.Folder
      Dim oFile As Scripting.File
      Static wksDest As Worksheet
      Static iRow As Long
      Static bNotFirstTime As Boolean
     
      If Not bNotFirstTime Then
        Set wksDest = ActiveSheet ' A adtapter
        Set FSO = CreateObject("Scripting.FileSystemObject")
        With wksDest
          .Cells(1, 1) = "Parent folder"
          .Cells(1, 2) = "Full path"
          .Cells(1, 3) = "File name"
          .Cells(1, 4) = "Size"
          .Cells(1, 5) = "Type"
          .Cells(1, 6) = "Date created"
          .Cells(1, 7) = "Date last modified"
          .Cells(1, 8) = "Date last accessed"
          .Cells(1, 9) = "Attributes"
          .Cells(1, 10) = "Short path"
          .Cells(1, 11) = "Short name"
        End With
        iRow = 2
        bNotFirstTime = True
      End If
      Set oSourceFolder = FSO.GetFolder(strFolderName)
      For Each oFile In oSourceFolder.Files
        With wksDest
          .Cells(iRow, 1) = oFile.ParentFolder.Path
          .Cells(iRow, 2) = oFile.Path
          .Cells(iRow, 3) = oFile.Name
          .Cells(iRow, 4) = oFile.Size
          .Cells(iRow, 5) = oFile.Type
          .Cells(iRow, 6) = oFile.DateCreated
          .Cells(iRow, 7) = oFile.DateLastModified
          .Cells(iRow, 8) = oFile.DateLastAccessed
          .Cells(iRow, 9) = oFile.Attributes
          .Cells(iRow, 10) = oFile.ShortPath
          .Cells(iRow, 11) = oFile.ShortName
        End With
        iRow = iRow + 1
      Next oFile
     
      For Each oSubFolder In oSourceFolder.SubFolders
        ' On peut mettre ici un traitement spécifique pour les dossiers
      Next oSubFolder
     
      If bIncludeSubfolders Then
        For Each oSubFolder In oSourceFolder.SubFolders
          ListFilesInFolder oSubFolder.Path, True
        Next oSubFolder
      End If
     
    End Sub
    Et son appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub test()
      ListFilesInFolder "D:\My Documents\Access", True
    End Sub
    Edit 17/01/2007 -> Petite modification du code. Dans la première version, je repartais de la ligne 2 à chaque entrée dans la fonction.
    Edit 16/03/2015 -> Optimisation: Utilisation de With - End With.

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par AlainTech
    J'y reviendrai, sans doute, ajouter d'autres infos que le path.
    Si tu y reviens, previens lorsque c'est finalisé, et j'intègre à la FAQ VBA

  3. #3
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Comme promis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Option Explicit
     
    Sub ListFilesInFolder(strFolderName As String, bIncludeSubfolders As Boolean)
      ' adapté de Ole P Erlandsen
      ' necessite d'activer la reference Microsoft Scripting RunTime
      Static FSO As FileSystemObject
      Dim oSourceFolder As Scripting.Folder
      Dim oSubFolder As Scripting.Folder
      Dim oFile As Scripting.File
      Static wksDest As Worksheet
      Static iRow As Long
      Static bNotFirstTime As Boolean
     
      If Not bNotFirstTime Then
        Set wksDest = ActiveSheet
        Set FSO = CreateObject("Scripting.FileSystemObject")
        wksDest.Cells(1, 1) = "Parent folder"
        wksDest.Cells(1, 2) = "Full path"
        wksDest.Cells(1, 3) = "File name"
        wksDest.Cells(1, 4) = "Size"
        wksDest.Cells(1, 5) = "Type"
        wksDest.Cells(1, 6) = "Date created"
        wksDest.Cells(1, 7) = "Date last modified"
        wksDest.Cells(1, 8) = "Date last accessed"
        wksDest.Cells(1, 9) = "Attributes"
        wksDest.Cells(1, 10) = "Short path"
        wksDest.Cells(1, 11) = "Short name"
     
        iRow = 2
        bNotFirstTime = True
      End If
      Set oSourceFolder = FSO.GetFolder(strFolderName)
      For Each oFile In oSourceFolder.Files
        wksDest.Cells(iRow, 1) = oFile.ParentFolder.Path
        wksDest.Cells(iRow, 2) = oFile.Path
        wksDest.Cells(iRow, 3) = oFile.Name
        wksDest.Cells(iRow, 4) = oFile.Size
        wksDest.Cells(iRow, 5) = oFile.Type
        wksDest.Cells(iRow, 6) = oFile.DateCreated
        wksDest.Cells(iRow, 7) = oFile.DateLastModified
        wksDest.Cells(iRow, 8) = oFile.DateLastAccessed
        wksDest.Cells(iRow, 9) = oFile.Attributes
        wksDest.Cells(iRow, 10) = oFile.ShortPath
        wksDest.Cells(iRow, 11) = oFile.ShortName
     
        iRow = iRow + 1
      Next oFile
     
      For Each oSubFolder In oSourceFolder.SubFolders
        ' On peut mettre ici un traitement spécifique pour les dossiers
      Next oSubFolder
     
      If bIncludeSubfolders Then
        For Each oSubFolder In oSourceFolder.SubFolders
          ListFilesInFolder oSubFolder.Path, True
        Next oSubFolder
      End If
     
    End Sub
    Je n'ai pas traité l'analyse des flags d'attributs.
    Ca pourrait faire l'objet d'une autre source.

    Edit --> j'ai recopié ce code dans le premier message

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur acousticien
    Inscrit en
    Septembre 2015
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur acousticien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2015
    Messages : 122
    Points : 74
    Points
    74
    Par défaut
    Bonjour AlainTech et merci pour la proposition de cette fonction !

    Je souhaiterais savoir si certaines lignes pourraient particulièrement poser problème pour une recherche sur serveur (je n'avais jamais utilisé d'objet scripting...) ?

    En effet ces lignes de codes fonctionnent parfaitement sur mon poste mais Excel plante dès que je tente de travailler sur un réseau...

    Merci d'avance pour vos éléments.

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/08/2013, 09h06
  2. Lister les fichiers d'un répertoire dans une listebox
    Par soshelpvb dans le forum VB.NET
    Réponses: 8
    Dernier message: 05/11/2012, 11h57
  3. Réponses: 9
    Dernier message: 05/01/2012, 19h27
  4. Lister les fichiers d'un répertoire dans une feuille Excel
    Par Kriss63 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/04/2011, 14h54
  5. lister les fichiers d'un répertoire dans un .BAT
    Par isn44 dans le forum Windows
    Réponses: 7
    Dernier message: 10/10/2007, 10h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo