Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Contribuez
Contribuez Placez ici vos codes, sources, trucs et astuces que vous souhaitez partager avec les membres du club.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/08/2006, 10h18   #1
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 622
Points : 7 622
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 :
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
Et son appel:
Code :
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.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 18/09/2006, 20h01   #2
Responsable Visual Basic
 
Avatar de ThierryAIM
 
Homme Thierry
Inscription : septembre 2002
Messages : 3 670
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 49
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2002
Messages : 3 670
Points : 5 672
Points : 5 672
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
__________________
Vous vous posez une question, la réponse est peut-être ici :
Toutes les FAQs VB
Les Cours et Tutoriels VB6/VBScript
Les Sources VB6


Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

MioSkins.org : le site de référence pour GPS et PDA Mitac MIO
iPHONIX.fr : le must francophone des infos pour iPhone, iPad, ...
ThierryAIM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2006, 19h09   #3
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 622
Points : 7 622
Comme promis:
Code :
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
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h50.


 
 
 
 
Partenaires

Hébergement Web