Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

FileSystemObject

4 réponses
Avatar
Patrick
Bonjour,

J'utilise la bibliothèque "Windows Scripting Runtime" pour accéder au File
System.

Y a-t-il un moyen d'obtenir le nombre total de fichiers dans un répertoire,
y compris ses sous-répertoires ?

Merci pour votre aide.

--
Patrick

4 réponses

Avatar
Jacques93
Bonjour Patrick,
Patrick a écrit :
Bonjour,

J'utilise la bibliothèque "Windows Scripting Runtime" pour accéder au File
System.

Y a-t-il un moyen d'obtenir le nombre total de fichiers dans un répertoire,
y compris ses sous-répertoires ?




Oui, en utilisant la récursivité. Un exemple ici en bas de page, à adapter :

<http://www.microsoft.com/technet/scriptcenter/resources/qanda/oct04/hey1020.mspx>

--
Cordialement,

Jacques.
Avatar
Jacques93
Jacques93 a écrit :
Bonjour Patrick,
Patrick a écrit :
Bonjour,

J'utilise la bibliothèque "Windows Scripting Runtime" pour accéder au
File System.

Y a-t-il un moyen d'obtenir le nombre total de fichiers dans un
répertoire, y compris ses sous-répertoires ?




Oui, en utilisant la récursivité. Un exemple ici en bas de page, à
adapter :

<http://www.microsoft.com/technet/scriptcenter/resources/qanda/oct04/hey1020.mspx>




Par exemple :

Option Explicit

Private Sub Command1_Click()
Dim fso As FileSystemObject
Dim objFolder As Folder
Dim colFiles As Files, objFile As File
Dim StartFolder As String
Dim cntFolders As Long, cntFiles As Long

StartFolder = "C:RepDepart"
Set fso = New FileSystemObject

Set objFolder = fso.GetFolder(StartFolder)
Debug.Print objFolder.Path & " : " & objFolder.Files.Count
Set colFiles = objFolder.Files
For Each objFile In colFiles
Debug.Print objFile.Name
Next
Debug.Print

ShowSubFolders fso, fso.GetFolder(StartFolder), cntFolders, cntFiles
MsgBox colFiles.Count + cntFiles & " fichiers" & vbCrLf & _
cntFolders + 1 & " répertoires"
End Sub


Private Sub ShowSubFolders(fso As FileSystemObject, _
fld As Folder, _
ByRef cntFolders As Long, _
ByRef cntFiles As Long)
Dim SubFolder As Folder, objFolder As Folder
Dim colFiles As Files, objFile As File

For Each SubFolder In fld.SubFolders
Debug.Print SubFolder.Path & " : " & SubFolder.Files.Count
Set objFolder = fso.GetFolder(SubFolder.Path)
Set colFiles = objFolder.Files
For Each objFile In colFiles
Debug.Print objFile.Name
Next
Debug.Print
cntFolders = cntFolders + 1
cntFiles = cntFiles + colFiles.Count
ShowSubFolders fso, SubFolder, cntFolders, cntFiles
Next
End Sub



PS : le FileSystemObject est sujet à diverses appréciations ;-)
Voir ce fil, ou semble t-il il n'est pas si mauvais que ça :

<http://groups.google.fr/group/microsoft.public.fr.vb/browse_thread/thread/f3ccf61005b3591d/c034632d2d8727ef?lnk=st&q=filesystemobject+findfirstfile+group%3Amicrosoft.public.fr.vb#c034632d2d8727ef>

il y a également un lien vers MSDN :

<http://support.microsoft.com/default.aspx?scid=KB;EN-US;q185601&ID=KB;EN-US;q185601>

sur la FAQ :

<http://faq.vb.free.fr/index.php?question1>

--
Cordialement,

Jacques.
Avatar
Patrick
Merci.

--
Patrick


"Jacques93" wrote:

Jacques93 a écrit :
> Bonjour Patrick,
> Patrick a écrit :
>> Bonjour,
>>
>> J'utilise la bibliothèque "Windows Scripting Runtime" pour accéder au
>> File System.
>>
>> Y a-t-il un moyen d'obtenir le nombre total de fichiers dans un
>> répertoire, y compris ses sous-répertoires ?
>>
>
> Oui, en utilisant la récursivité. Un exemple ici en bas de page, à
> adapter :
>
> <http://www.microsoft.com/technet/scriptcenter/resources/qanda/oct04/hey1020.mspx>
>
>
Par exemple :

Option Explicit

Private Sub Command1_Click()
Dim fso As FileSystemObject
Dim objFolder As Folder
Dim colFiles As Files, objFile As File
Dim StartFolder As String
Dim cntFolders As Long, cntFiles As Long

StartFolder = "C:RepDepart"
Set fso = New FileSystemObject

Set objFolder = fso.GetFolder(StartFolder)
Debug.Print objFolder.Path & " : " & objFolder.Files.Count
Set colFiles = objFolder.Files
For Each objFile In colFiles
Debug.Print objFile.Name
Next
Debug.Print

ShowSubFolders fso, fso.GetFolder(StartFolder), cntFolders, cntFiles
MsgBox colFiles.Count + cntFiles & " fichiers" & vbCrLf & _
cntFolders + 1 & " répertoires"
End Sub


Private Sub ShowSubFolders(fso As FileSystemObject, _
fld As Folder, _
ByRef cntFolders As Long, _
ByRef cntFiles As Long)
Dim SubFolder As Folder, objFolder As Folder
Dim colFiles As Files, objFile As File

For Each SubFolder In fld.SubFolders
Debug.Print SubFolder.Path & " : " & SubFolder.Files.Count
Set objFolder = fso.GetFolder(SubFolder.Path)
Set colFiles = objFolder.Files
For Each objFile In colFiles
Debug.Print objFile.Name
Next
Debug.Print
cntFolders = cntFolders + 1
cntFiles = cntFiles + colFiles.Count
ShowSubFolders fso, SubFolder, cntFolders, cntFiles
Next
End Sub



PS : le FileSystemObject est sujet à diverses appréciations ;-)
Voir ce fil, ou semble t-il il n'est pas si mauvais que ça :

<http://groups.google.fr/group/microsoft.public.fr.vb/browse_thread/thread/f3ccf61005b3591d/c034632d2d8727ef?lnk=st&q=filesystemobject+findfirstfile+group%3Amicrosoft.public.fr.vb#c034632d2d8727ef>

il y a également un lien vers MSDN :

<http://support.microsoft.com/default.aspx?scid=KB;EN-US;q185601&ID=KB;EN-US;q185601>

sur la FAQ :

<http://faq.vb.free.fr/index.php?question1>

--
Cordialement,

Jacques.



Avatar
Jacques93
Patrick a écrit :
Merci.




De rien, merci du retour :-)

--
Cordialement,

Jacques.