Macro comptage de fichiers

  • Initiateur de la discussion Initiateur de la discussion Benjy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Benjy

XLDnaute Occasionnel
Bonjour à tous j'ai un petit soucis avec ce code :

Code:
Private Sub CheckBox8_Click()
If CheckBox8 = True Then


[COLOR="red"]Dim FSO As Object, Dossier As String
Dossier = "Z:\protocole\" & Sheets("Sommaire").Cells(28, 2).Value & "\Docs techniques\ENR"
Set FSO = CreateObject("Scripting.FileSystemObject")
NbrFich = FSO.GetFolder(Dossier).Files.Count[/COLOR]


Range("L31").Value = NbrFich
If NbrFich <> 0 Then
Range("I31").Select
ActiveCell.Value = Now
Else
MsgBox ("Vous ne pouvez valider cette action, il faut au minimum une documentation technique !")
CheckBox8 = False
End If
Else
Range("I31").Value = ""
End If
End Sub

J'ai récupérer la partie en rouge sur un autre sujet du forum et je ne la maîtrise donc pas correctement. Le code fonctionne mais ne compte que les fichiers présent dans le dossier cible. J'aimerais qu'il compte également les fichiers des sous dossiers présent dans ce dossier cible. Est- ce possible ? Et si oui comment le réaliser ?

Merci à ceux qui prendront le temps de me répondre.

Cordialement,

Ben
 
Dernière édition:
Re : Macro comptage de fichiers

Bonjour,
Code:
'...
Dossier = "Z:\protocole\" & Sheets("Sommaire").Cells(28, 2).Value & "\Docs techniques\ENR"
Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.GetFolder(Dossier)
NbrFich = fld.Files.Count
For Each sfld In fld.SubFolders
    NbrFich = NbrFich + sfld.Files.Count
Next
'...
A+
kjin
 
Re : Macro comptage de fichiers

Re,
Oui mais dans ce cas, utiliser une fonction récursive
Code:
Sub ListeFichiers()
Dim nDirs&, nFiles&, lSize@
Dim Dossier$, Extension$
Dossier = "Z:\protocole\" & Sheets("Sommaire").Cells(28, 2).Value & "\Docs techniques\ENR"
Extension = "*.*" 'à adapter ou utiliser une boite de saisie
lSize = FindFile(Dossier, Extension, nDirs, nFiles)
MsgBox Str(nFiles) & " fichiers trouvés dans " & Str(nDirs) & _
            " répertoires pour un total de " & lSize & " bytes"

End Sub

Function FindFile(ByVal sDir$, sExt$, nDirs&, nFiles&) As Currency
Dim fso As Object, fld As Object, FileName$, sfld As Object
Set fso = CreateObject("Scripting.FileSystemObject")
On Error GoTo Suite
Set fld = fso.GetFolder(sDir)
FileName = Dir(fso.BuildPath(fld.Path, sExt), vbNormal Or vbHidden Or vbSystem Or vbReadOnly)
While Len(FileName) <> 0
    FindFile = FindFile + FileLen(fso.BuildPath(fld.Path, FileName))
    nFiles = nFiles + 1
    FileName = Dir()
    DoEvents
Wend
nDirs = nDirs + 1
If fld.SubFolders.Count > 0 Then
   For Each sfld In fld.SubFolders
      DoEvents
      FindFile = FindFile + FindFile(sfld.Path, sExt, nDirs, nFiles)
   Next
End If
Set fso = Nothing
Set fld = Nothing
Exit Function

Suite:
FileName = ""
Resume Next

End Function
A+
kjin
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
1 K
M
Réponses
3
Affichages
2 K
MONADESIGN82
M
V
Réponses
3
Affichages
997
M
Réponses
39
Affichages
4 K
S
Réponses
1
Affichages
1 K
S
R
Réponses
1
Affichages
3 K
Retour