J'aimerais connaître le nombre de fichiers d'un volume ou d'un répertoire sans avoir à les compter. Une solution par les API de Windows ?
Par avance, merci
Discussion :
J'aimerais connaître le nombre de fichiers d'un volume ou d'un répertoire sans avoir à les compter. Une solution par les API de Windows ?
Par avance, merci
je sais pas si sa t interesse, je n utilise pas d API.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Private Sub CommandButton1_Click() Dim fso As Object, Dossier As Object Set fso = CreateObject("Scripting.FileSystemObject") Set Dossier = fso.GetFolder(Directory) Cpte = Cpte + Dossier.Files.Count 'traitement récursif des sous dossiers Set fso = Nothing MsgBox Cpte End Sub
Merci Tomy.
Ok, ma question est mal posée :
J'aimerais connaître le nombre de fichiers d'un volume ou d'un répertoire et de leurs sous-répertoires sans avoir à les compter.
Sinon, j'ai déjà une fonction récursive qui fait ça.![]()
Bonsoir, ousk,
je ne connais personnellement pas d'autres moyens.
Je te précise en outre que seuls les fichiers non cachés seraient comptés par inventaire récursif. Il faut donc (en récursivité) et qu'il convient donc de préciser que tous les attributs doivent être acceptés.
tu observeras d'ailleurs que Microsoft fait la même chose depuis l'explorateur. cherche par exemple les propriétés du répertoire c:\Winnt ou c:\Windows et observe bien ===>> avancement d'un "inventaire"
Salut, j'ai retrouvé cela dans mon bazar, je n'en connais pas l'origine, mais cela devrait te convenir http://cjoint.com/?edsoKmceMF
Merci kiki.
Je souhaitais simplement avoir le nombre de fichiers dans un répertoire et ses sous-répertoire. Pour compter les fichiers, j'ai cette fonction qui fonctionne très bien
Et l'appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Public Function CompteLesFichiers(PathRep As String) As Long Dim fs, RepFich As Variant Set fs = CreateObject("Scripting.FileSystemObject") CompteLesFichiers = fs.GetFolder(PathRep).Files.Count For Each RepFich In fs.GetFolder(PathRep).SubFolders CompteLesFichiers = CompteLesFichiers + CompteLesFichiers(RepFich.path) Next RepFich End FunctionCette fonction peut se décliner sans difficulté pour avoir le nom des répertoires et le nom des fichiers qu'il contient. Mais ce n'est pas mon but.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Mon souhait aurait été d'avoir directement le nombre de fichiers d'un répertoire et ses sous-répertoire sur une ou deux lignes de commande... Et je pense que seule une API de windows pourrait "m'offrir ça.
Si je n'ai pas de réponse, je changerai le sujet de la discussion, il y a plein de choses intéressante là-dedans
Merci à tous.
Salut, voir peut-être sur http://vbnet.mvps.org/index.html?cod...api/index.html et adapter
Merci (re) kiki.
J'ai regardé, j'ai vu un code d'une centaine de lignes... J'ai jeté un oeil juste pour voir... et j'ai refermé
Bon, je crois que je vais en rester là puisque ucfoutu insiste
@ ucfoutu
Une dernière chose : Tu es sûr qu'on peut pas avec les API ?![]()
Mais si tu veux que je m'amuse avec :
- la récursivité
- une seule fonction de l'API (Sendmessage)
- et uniquement Dir
Juste pour rigoler.... et avec peu de lignes de code ...(moins de 30 et en plus petites)
Je m'en sens parfaitement capable (je vois déjà comment)
Et avec moins de 13 lignes, tu y arrives avec Dir ?
http://www.developpez.net/forums/sho...d.php?t=521218
Non !
Il m'en faudra au moins 5 de plus, mais...
1) je n'alourdirai rien (ne chargeant rien)
2) mon résultat sera atteint (surtout s'il y a un grand nombre de répertoires et fichiers) de manière sensiblement plus rapide qu'avec le code du lien que tu montres !
3) maintenant : en oubliant Dir et en m'y prenant avec une fonction de l'Api supplémentaire (à la place de Dir), j'irais encore plus vite (mais des lignes de code en plus)...
Faut savoir ce que l'on veut, dans la vie![]()
J'ai fait ça (utilisation de Dir) pour trouver un fichier dans un volume, ses répertoires et leurs sous-répertoires. Mais j'ai fait un mix avec fso.
Dir accélère effectivement la recherche d'un fichier dans un répertoire, mais ne facilite pas la tâche pour lister les répertoires.
J'ai mis ça http://www.developpez.net/forums/sho...35&postcount=2
J'ai placé ça dans un userform, suffit de l'ouvrir
Mais là, 33 lignes tout de même![]()
J'ai tout compris de ton lien ...
Ouvre-le donc, toi ...
Si tu veux que je m'y mette, fais signe ...
J'ai corrigé mais je ne comprends pas, j'avais testé pour voir si je n'avais pas d'erreur pour masquer le fichier à l'ouverture et l'afficher en quittant l'userform
Là, j'ai retesté !![]()
Partager