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 03/04/2008, 23h03   #1
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Par défaut Compter les fichiers d'un répertoire et de ses sous-répertoires

En complément de la recherche d'un fichier.
Code :
1
2
3
4
5
6
7
8
Public Function CompteLesFichiers(Chemin As String) As Long
Dim fs, RepFich As Variant
    Set fs = CreateObject("Scripting.FileSystemObject")
    CompteLesFichiers = fs.GetFolder(Chemin).Files.Count
    For Each RepFich In fs.GetFolder(Chemin).SubFolders
        CompteLesFichiers = CompteLesFichiers + CompteLesFichiers(RepFich.path)
    Next RepFich
End Function
Appel de la fonction :
Code :
1
2
3
4
5
Sub CompterSeulement()
Dim chemin As String
    chemin = "D:\Doc\" 'avec ou sans sous-répertoire
    MsgBox CompteLesFichiers(chemin)
End Sub
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2008, 11h49   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 597
Points : 1 597
bonjour ouskel'n'or,

Citation:
Dim fs, RepFich As Variant
Bof...

et sans fso, ça donnerait quoi ?

amicalement,

Philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2008, 12h15   #3
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tu as raison !
Code :
Dim fs as variant, RepFich As Variant
Voilà, c'est corrigé
Teste avec object (si c'est ce qui te choquait) tu verras
Sans fso ? Tu as une idée ? Alors c'est le moment de la mettre
Je connaissais avec shell
Shell("cmd /c Dir D:\ *.* /s/a/o > Liste.txt")
qui permet de récupérer le txt contenant le nom et la taille de tous les fichiers et répertoires classés par ordre alphabétique, ainsi que le nombre de fichiers par répertoire, mais dans VBA, avec dir, je n'ai pas trouvé de correspondance. Si tu as ça, c'est intéressant, tu devrais le poser ici ou ouvrir une nouvelle discussion.
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2008, 12h31   #4
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 597
Points : 1 597
Re bonjour my friend,

en vba pur c'est possible mais plus complexe...
Il faut utiliser les fonctions Dir(), GetAttr() et une fonction récursive pour parcourir tous les sous-reps.

Il existe sur le net des "vieilles sources" !

Philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2008, 12h39   #5
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Oui, à une époque j'avais fait ça mais ça moulinait longtemps, longtemps, c'est pourquoi je suis passé à fso malgré mes réticences. Je conseille toujours de passer par Dir quand il s'agit de lister un répertoire unique.
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h23.


 
 
 
 
Partenaires

Hébergement Web