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

Vba: Application.FileSearch.FoundFiles.Count

17 réponses
Avatar
Jac
Bonjour à tous,

je suis très étonné des résultats obtenus par
Application.FileSearch.FoundFiles.Count
car quand je l'applique à un volume, je n'obtiens pas autant de
fichiers que Windows m'annonce dans les propriétés de la cible.
Aucun fichier n'est caché.

Sur différents volumes j'obtiens par Vba et par Windows
15.958 et 22.839
13.830 et 16.779
63.910 et 78.508

Le vba a-t-il une profondeur maxi pour ses investigations dans les
répertoires ?
Une longueur maxi pour le chemin complet ?
Des noms qu'il refuse de traiter ?
Une limite pour le nombre de fichiers (ex: 65536) sauf que ça le
fait déjà avant cette valeur?

Merci d'avance à ceux qui auraient quelques idées à ce propos.

Jac

10 réponses

1 2
Avatar
MichDenis
Je te propose ceci ....ce code n'est pas de moi....ça doit être
un truc de frédéric sigonneau à la façon de déclarer les variables.

J'ai juste modifier le répertoire de base où se fait la recherche
que tu devras modifier dans la procédure.

Surprenant que tu n'aies pas trouvé ceci sur le site à Misange !
'-----------------------------------------
Sub test()
Dim Nb&
'nombre de fichiers dans le répertoire spécifié
NbDeFichiers "c:Atravail", Nb&, False
MsgBox Nb: Nb = 0
'nombre total de fichiers dans le répertoire
'indiqué et tous sous-répertoires
NbDeFichiers "c:Atravail", Nb&
MsgBox Nb: Nb = 0
'nombre de répertoires dans le répertoire indiqué
NbDeDossiers "c:Atravail", Nb&, False
MsgBox Nb: Nb = 0
'nombre total de répertoires dans le répertoire
'indiqué et dans tous ses répertoires.
NbDeDossiers "c:Atravail", Nb&
MsgBox Nb
End Sub
'-----------------------------------------
Sub NbDeFichiers(LeDossier$, Cpte&, Optional SousDossiers As Boolean = True)
Dim fso As Object, Dossier As Object
Dim sousRep As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)
Cpte = Cpte + Dossier.Files.Count
'traitement récursif des sous dossiers
If SousDossiers Then
For Each sousRep In Dossier.SubFolders
NbDeFichiers sousRep.Path, Cpte
Next sousRep
End If
Set fso = Nothing
End Sub 'fs
'-----------------------------------------
Sub NbDeDossiers(DossierRacine$, Cpte&, Optional SousDossiers As Boolean = True)
Dim fso As Object, Dossier As Object
Dim sousRep As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(DossierRacine)
Cpte = Cpte + Dossier.SubFolders.Count
'traitement récursif des sous dossiers
If SousDossiers Then
For Each sousRep In Dossier.SubFolders
NbDeDossiers sousRep.Path, Cpte
Next sousRep
End If
Set fso = Nothing
End Sub
'-----------------------------------------
Avatar
Misange
Je te propose ceci ....ce code n'est pas de moi....ça doit être
un truc de frédéric sigonneau à la façon de déclarer les variables.

J'ai juste modifier le répertoire de base où se fait la recherche
que tu devras modifier dans la procédure.

Surprenant que tu n'aies pas trouvé ceci sur le site à Misange !
message reçu :-)


Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Avatar
MichDenis
Surprenant que tu n'aies pas trouvé ceci sur le site à Misange !
| message reçu :-)


J'ai dit quelque chose... moi ?
;-)

Avatar
Misange
non non rien...
http://www.excelabo.net/excel/repertoiresarborescence.php#dossiersfichiers
;-)
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Surprenant que tu n'aies pas trouvé ceci sur le site à Misange !
| message reçu :-)


J'ai dit quelque chose... moi ?
;-)






Avatar
MichDenis
http://www.excelabo.net/excel/repertoiresarborescence.php#dossiersfichiers

Me semblait aussi ... Jac a du mal regarder !

;-))
Avatar
Jac
Mea culpa... Je n'ai regardé nulle part car je suis parti sur une macro que
j'avais déjà mis au point pour cataloguer les fichiers et j'ai eu la
mauvaise idée de vouloir comparer les résultats obtenus et ce que dit
windows. Je n'ai pas l'habitude de croire tout ce qu'on me dit.
J'aime consulter une autre source pour valider...

Donc j'ai testé la macro qui est à l'origine de quelques échanges de mail.
C'est parfait, sauf pour le "C:" car windows voit 23.528 fichiers et la
macro en compte 23.544. La corbeille est vide donc sans doute des
fichiers système. Mais Excel serait-il plus perspicace que Windows XP ?

Sans vouloir abuser, que faudrait-il ajouter à la macro pour calculer
la taille des fichiers qui ont été comptés ?


"MichDenis" a écrit dans le message de news:

http://www.excelabo.net/excel/repertoiresarborescence.php#dossiersfichiers

Me semblait aussi ... Jac a du mal regarder !


Avatar
MichDenis
Ceci te donne le nombre de fichiers du répertoire que
tu as retenu et le nombre d'octets de ce répertoire :

'----------------------------------
Sub test()
Dim Nb&, taille As Double
'nombre de fichiers dans le répertoire spécifié
NbDeFichiers "c:Atravail", Nb&, taille, False
MsgBox "Nombre de fichiers : " & Nb & " " & vbCrLf & _
"taille du répertoire : " & taille & " octets."
End Sub
'----------------------------------
Sub NbDeFichiers(LeDossier$, Cpte&, taille As Double, _
Optional SousDossiers As Boolean = True)
Dim fso As Object, Dossier As Object
Dim sousRep As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)
Cpte = Cpte + Dossier.Files.Count
taille = taille + Dossier.Size
'traitement récursif des sous dossiers
If SousDossiers Then
For Each sousRep In Dossier.SubFolders
NbDeFichiers sousRep.Path, Cpte, taille
Next sousRep
End If
Set fso = Nothing
End Sub
'----------------------------------




"Jac" a écrit dans le message de news:
Mea culpa... Je n'ai regardé nulle part car je suis parti sur une macro que
j'avais déjà mis au point pour cataloguer les fichiers et j'ai eu la
mauvaise idée de vouloir comparer les résultats obtenus et ce que dit
windows. Je n'ai pas l'habitude de croire tout ce qu'on me dit.
J'aime consulter une autre source pour valider...

Donc j'ai testé la macro qui est à l'origine de quelques échanges de mail.
C'est parfait, sauf pour le "C:" car windows voit 23.528 fichiers et la
macro en compte 23.544. La corbeille est vide donc sans doute des
fichiers système. Mais Excel serait-il plus perspicace que Windows XP ?

Sans vouloir abuser, que faudrait-il ajouter à la macro pour calculer
la taille des fichiers qui ont été comptés ?


"MichDenis" a écrit dans le message de news:

http://www.excelabo.net/excel/repertoiresarborescence.php#dossiersfichiers

Me semblait aussi ... Jac a du mal regarder !


Avatar
MichDenis
J'oubliais, si tu veux aussi obtenir la taille et le nombre de fichiers
des sous-répertoires aussi, dans la procédure test, tu utilises cette
ligne de commandes :

NbDeFichiers "c:Atravail", Nb&, taille, True

En fait, il y a seulement le dernier paramètre qui change et qui indique
que tu veux tenir compte des sous-répertoires.



"MichDenis" a écrit dans le message de news:
%
Ceci te donne le nombre de fichiers du répertoire que
tu as retenu et le nombre d'octets de ce répertoire :

'----------------------------------
Sub test()
Dim Nb&, taille As Double
'nombre de fichiers dans le répertoire spécifié
NbDeFichiers "c:Atravail", Nb&, taille, False
MsgBox "Nombre de fichiers : " & Nb & " " & vbCrLf & _
"taille du répertoire : " & taille & " octets."
End Sub
'----------------------------------
Sub NbDeFichiers(LeDossier$, Cpte&, taille As Double, _
Optional SousDossiers As Boolean = True)
Dim fso As Object, Dossier As Object
Dim sousRep As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)
Cpte = Cpte + Dossier.Files.Count
taille = taille + Dossier.Size
'traitement récursif des sous dossiers
If SousDossiers Then
For Each sousRep In Dossier.SubFolders
NbDeFichiers sousRep.Path, Cpte, taille
Next sousRep
End If
Set fso = Nothing
End Sub
'----------------------------------




"Jac" a écrit dans le message de news:
Mea culpa... Je n'ai regardé nulle part car je suis parti sur une macro que
j'avais déjà mis au point pour cataloguer les fichiers et j'ai eu la
mauvaise idée de vouloir comparer les résultats obtenus et ce que dit
windows. Je n'ai pas l'habitude de croire tout ce qu'on me dit.
J'aime consulter une autre source pour valider...

Donc j'ai testé la macro qui est à l'origine de quelques échanges de mail.
C'est parfait, sauf pour le "C:" car windows voit 23.528 fichiers et la
macro en compte 23.544. La corbeille est vide donc sans doute des
fichiers système. Mais Excel serait-il plus perspicace que Windows XP ?

Sans vouloir abuser, que faudrait-il ajouter à la macro pour calculer
la taille des fichiers qui ont été comptés ?


"MichDenis" a écrit dans le message de news:

http://www.excelabo.net/excel/repertoiresarborescence.php#dossiersfichiers

Me semblait aussi ... Jac a du mal regarder !


Avatar
Jac
Merci Mich,

mais quand la macro arrive sur Taille = taille + Dossier.Size
j'obtiens une erreur 70 : "Permission refusée".

"MichDenis" a écrit dans le message de news:

J'oubliais, si tu veux aussi obtenir la taille et le nombre de fichiers
des sous-répertoires aussi, dans la procédure test, tu utilises cette
ligne de commandes :

NbDeFichiers "c:Atravail", Nb&, taille, True

En fait, il y a seulement le dernier paramètre qui change et qui indique
que tu veux tenir compte des sous-répertoires.



"MichDenis" a écrit dans le message de news:
%
Ceci te donne le nombre de fichiers du répertoire que
tu as retenu et le nombre d'octets de ce répertoire :

'----------------------------------
Sub test()
Dim Nb&, taille As Double
'nombre de fichiers dans le répertoire spécifié
NbDeFichiers "c:Atravail", Nb&, taille, False
MsgBox "Nombre de fichiers : " & Nb & " " & vbCrLf & _
"taille du répertoire : " & taille & " octets."
End Sub
'----------------------------------
Sub NbDeFichiers(LeDossier$, Cpte&, taille As Double, _
Optional SousDossiers As Boolean = True)
Dim fso As Object, Dossier As Object
Dim sousRep As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)
Cpte = Cpte + Dossier.Files.Count
taille = taille + Dossier.Size
'traitement récursif des sous dossiers
If SousDossiers Then
For Each sousRep In Dossier.SubFolders
NbDeFichiers sousRep.Path, Cpte, taille
Next sousRep
End If
Set fso = Nothing
End Sub
'----------------------------------




"Jac" a écrit dans le message de news:

Mea culpa... Je n'ai regardé nulle part car je suis parti sur une macro
que
j'avais déjà mis au point pour cataloguer les fichiers et j'ai eu la
mauvaise idée de vouloir comparer les résultats obtenus et ce que dit
windows. Je n'ai pas l'habitude de croire tout ce qu'on me dit.
J'aime consulter une autre source pour valider...

Donc j'ai testé la macro qui est à l'origine de quelques échanges de mail.
C'est parfait, sauf pour le "C:" car windows voit 23.528 fichiers et la
macro en compte 23.544. La corbeille est vide donc sans doute des
fichiers système. Mais Excel serait-il plus perspicace que Windows XP ?

Sans vouloir abuser, que faudrait-il ajouter à la macro pour calculer
la taille des fichiers qui ont été comptés ?


"MichDenis" a écrit dans le message de news:

http://www.excelabo.net/excel/repertoiresarborescence.php#dossiersfichiers

Me semblait aussi ... Jac a du mal regarder !








Avatar
Jac
Merci Mich,

mais quand j'attaque "c:" la macro arrive sur
Taille = taille + Dossier.Size
et j'obtiens une erreur 70 : "Permission refusée".


"MichDenis" a écrit dans le message de news:

J'oubliais, si tu veux aussi obtenir la taille et le nombre de fichiers
des sous-répertoires aussi, dans la procédure test, tu utilises cette
ligne de commandes :

NbDeFichiers "c:Atravail", Nb&, taille, True

En fait, il y a seulement le dernier paramètre qui change et qui indique
que tu veux tenir compte des sous-répertoires.



"MichDenis" a écrit dans le message de news:
%
Ceci te donne le nombre de fichiers du répertoire que
tu as retenu et le nombre d'octets de ce répertoire :

'----------------------------------
Sub test()
Dim Nb&, taille As Double
'nombre de fichiers dans le répertoire spécifié
NbDeFichiers "c:Atravail", Nb&, taille, False
MsgBox "Nombre de fichiers : " & Nb & " " & vbCrLf & _
"taille du répertoire : " & taille & " octets."
End Sub
'----------------------------------
Sub NbDeFichiers(LeDossier$, Cpte&, taille As Double, _
Optional SousDossiers As Boolean = True)
Dim fso As Object, Dossier As Object
Dim sousRep As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(LeDossier)
Cpte = Cpte + Dossier.Files.Count
taille = taille + Dossier.Size
'traitement récursif des sous dossiers
If SousDossiers Then
For Each sousRep In Dossier.SubFolders
NbDeFichiers sousRep.Path, Cpte, taille
Next sousRep
End If
Set fso = Nothing
End Sub
'----------------------------------




"Jac" a écrit dans le message de news:

Mea culpa... Je n'ai regardé nulle part car je suis parti sur une macro
que
j'avais déjà mis au point pour cataloguer les fichiers et j'ai eu la
mauvaise idée de vouloir comparer les résultats obtenus et ce que dit
windows. Je n'ai pas l'habitude de croire tout ce qu'on me dit.
J'aime consulter une autre source pour valider...

Donc j'ai testé la macro qui est à l'origine de quelques échanges de mail.
C'est parfait, sauf pour le "C:" car windows voit 23.528 fichiers et la
macro en compte 23.544. La corbeille est vide donc sans doute des
fichiers système. Mais Excel serait-il plus perspicace que Windows XP ?

Sans vouloir abuser, que faudrait-il ajouter à la macro pour calculer
la taille des fichiers qui ont été comptés ?


"MichDenis" a écrit dans le message de news:

http://www.excelabo.net/excel/repertoiresarborescence.php#dossiersfichiers

Me semblait aussi ... Jac a du mal regarder !








1 2