Vba: Application.FileSearch.FoundFiles.Count

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #5109131
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
'-----------------------------------------
Misange
Le #5109051
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

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


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

Misange
Le #5108821
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 ?
;-)






Jac
Le #5106131
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"
http://www.excelabo.net/excel/repertoiresarborescence.php#dossiersfichiers

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


MichDenis
Le #5106111
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" 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"
http://www.excelabo.net/excel/repertoiresarborescence.php#dossiersfichiers

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


MichDenis
Le #5106091
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" %
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" 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"
http://www.excelabo.net/excel/repertoiresarborescence.php#dossiersfichiers

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


Jac
Le #5106031
Merci Mich,

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

"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" %
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"
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"
http://www.excelabo.net/excel/repertoiresarborescence.php#dossiersfichiers

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








Jac
Le #5106021
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"
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" %
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"
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"
http://www.excelabo.net/excel/repertoiresarborescence.php#dossiersfichiers

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








Publicité
Poster une réponse
Anonyme