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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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.
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
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
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
'************************
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 '************************