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

Combien de dossiers et combien de fichiers ?

2 réponses
Avatar
Jac
Bonjour à tous,

quand, sous windows, je demande les propriétés d'un dossier, je reçois très
vite le nombre de dossier contenus, le nombre de fichiers et la taille
globale.
En vba, j'aimerais récupérer ces mêmes renseignements. Est-ce possible ?

Avec Application.FileSearch j'arrive à obtenir le nombre de fichiers, mais
je trouve ça un peu long.

Merci d'avance.

Jac

2 réponses

Avatar
Patrick
Bonjour,

Tu devrais utiliser la bibliothèque "Microsoft Scripting Runtime". Il y a
des objets pour le "File System" dont les répertoires et les fichiers.

Sur Internet tu trouveras sûrement de la documentation à ce sujet.

--
Patrick


"Jac" wrote:

Bonjour à tous,

quand, sous windows, je demande les propriétés d'un dossier, je reçois très
vite le nombre de dossier contenus, le nombre de fichiers et la taille
globale.
En vba, j'aimerais récupérer ces mêmes renseignements. Est-ce possible ?

Avec Application.FileSearch j'arrive à obtenir le nombre de fichiers, mais
je trouve ça un peu long.

Merci d'avance.

Jac





Avatar
PMO
Bonjour,

Voici, ci-dessous, un code exemple qui devrait vous mettre sur la piste.
On utilise, comme vous l'a dit PATRICK, le "Scripting.FileSystemObject".

Veuillez adapter la constante DOSSIER pour obtenir un dossier
éligible sur votre machine puis lancez la macro "NbDossierFichier".

'************************
Option Explicit
'### Constante du dossier éligible à adapter ###
Const DOSSIER As String = "c:zaza"
'###############################################
Dim nbFiles&
Dim nbFolders&
'________________________________________
Sub NbDossierFichier()
Dim FileName As String
Dim FSO
Dim Folder
Dim nbOctet&
Dim conversion$
Dim Msg$
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(DOSSIER)
If Len(Trim(DOSSIER)) < 4 Then Exit Sub
nbFiles& = 0
nbFolders& = 0
Call CompteNbDossierFichier(Folder)
nbOctet& = Folder.Size
If nbOctet& > 1024 ^ 2 Then
conversion$ = CStr((nbOctet& _
(1024 ^ 2 / 10)) / 10) & " Mo"
ElseIf nbOctet& > 1024 Then
conversion$ = CStr((nbOctet& _
(1024 / 10)) / 10) & " Ko"
Else
conversion$ = CStr(nbOctet&) & " octets"
End If
Msg$ = "Taille " & conversion$ & " (" & _
nbOctet& & " octets)" & vbCrLf & vbCrLf
Msg$ = Msg$ & "Contenu " & nbFiles& & _
" Fichiers, " & nbFolders& & " Dossiers"
MsgBox Msg$
Set Folder = Nothing
Set FSO = Nothing
End Sub
'________________________________________
Sub CompteNbDossierFichier(Folder)
Dim FileItem
Dim SubFolder
For Each FileItem In Folder.Files
nbFiles& = nbFiles& + 1
Next FileItem
'--- Récursivité pour les sous-dossiers ----
For Each SubFolder In Folder.SubFolders
nbFolders& = nbFolders& + 1
Call CompteNbDossierFichier(SubFolder)
Next SubFolder
Set FileItem = Nothing
Set SubFolder = Nothing
End Sub
'************************

Cordialement.

PMO
Patrick Morange