Quelqu'un sait-il pourquoi ces deux programmes renvoient dans certains
cas des r=E9sultats diff=E9rents pour calculer le nombre de fichiers d'un
r=E9pertoire?
Dans les 2 cas l'objectif =E9tait de compter tous les fichiers.
Merci d'avance
----- M=E9thode 1: Utilisation de Application.FileSearch
Public Sub test1()
Dim fs As Object
Set fs =3D CreateObject("Scripting.FileSystemObject")
ActiveCell.Formula =3D .Execute(SortBy:=3DmsoSortByLastModified, _
SortOrder:=3DmsoSortOrderAscending, _
AlwaysAccurate:=3DTrue)
End With
End Sub
----- Fin de la m=E9thode 1
----- M=E9thode 2: Comptage par une fonction r=E9cursive
Public Sub test2()
Dim fs As Object
Set fs =3D CreateObject("Scripting.FileSystemObject")
ActiveCell.Formula =3D nbFichiers("C:\users", fs)
End Sub
Private Function nbFichiers(dossier As String, ByRef fs As Object)
Rem nb de fichiers dans un r=E9pertoire
Dim f As Object
nbFichiers =3D fs.GetFolder(dossier).Files.Count
If Not (fs Is Nothing) Then
If fs.GetFolder(dossier).SubFolders.Count > 0 Then
For Each f In fs.GetFolder(dossier).SubFolders
nbFichiers =3D nbFichiers _
+ nbFichiers(f.Path, fs) ' fonction r=E9cursive
Next
End If
End If
End Function
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour Pascal,
et si tu utilises plutôt ceci :
'----------------------- With Application.FileSearch .NewSearch .LookIn = "c:sophie" 'à déterminer .Filename = "*.*" .FileType = msoFileTypeAllFiles .SearchSubFolders = True If .Execute > 0 Then MsgBox .FoundFiles.Count End If End With '------------------------------
Salutations"
a écrit dans le message de news:
Quelqu'un sait-il pourquoi ces deux programmes renvoient dans certains cas des résultats différents pour calculer le nombre de fichiers d'un répertoire?
Dans les 2 cas l'objectif était de compter tous les fichiers.
Merci d'avance
----- Méthode 1: Utilisation de Application.FileSearch
Public Sub test1() Dim fs As Object Set fs = CreateObject("Scripting.FileSystemObject")
ActiveCell.Formula = .Execute(SortBy:=msoSortByLastModified, _ SortOrder:=msoSortOrderAscending, _ AlwaysAccurate:=True) End With
End Sub
----- Fin de la méthode 1
----- Méthode 2: Comptage par une fonction récursive
Public Sub test2()
Dim fs As Object Set fs = CreateObject("Scripting.FileSystemObject") ActiveCell.Formula = nbFichiers("C:users", fs)
End Sub
Private Function nbFichiers(dossier As String, ByRef fs As Object) Rem nb de fichiers dans un répertoire
Dim f As Object
nbFichiers = fs.GetFolder(dossier).Files.Count
If Not (fs Is Nothing) Then If fs.GetFolder(dossier).SubFolders.Count > 0 Then For Each f In fs.GetFolder(dossier).SubFolders nbFichiers = nbFichiers _ + nbFichiers(f.Path, fs) ' fonction récursive Next End If End If End Function
----- Fin de la méthode 2
Bonjour Pascal,
et si tu utilises plutôt ceci :
'-----------------------
With Application.FileSearch
.NewSearch
.LookIn = "c:sophie" 'à déterminer
.Filename = "*.*"
.FileType = msoFileTypeAllFiles
.SearchSubFolders = True
If .Execute > 0 Then
MsgBox .FoundFiles.Count
End If
End With
'------------------------------
Salutations"
<pascalv@sdf.lonestar.org> a écrit dans le message de news: 1137438876.506779.303100@g47g2000cwa.googlegroups.com...
Quelqu'un sait-il pourquoi ces deux programmes renvoient dans certains
cas des résultats différents pour calculer le nombre de fichiers d'un
répertoire?
Dans les 2 cas l'objectif était de compter tous les fichiers.
Merci d'avance
----- Méthode 1: Utilisation de Application.FileSearch
Public Sub test1()
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
ActiveCell.Formula = .Execute(SortBy:=msoSortByLastModified, _
SortOrder:=msoSortOrderAscending, _
AlwaysAccurate:=True)
End With
End Sub
----- Fin de la méthode 1
----- Méthode 2: Comptage par une fonction récursive
Public Sub test2()
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
ActiveCell.Formula = nbFichiers("C:users", fs)
End Sub
Private Function nbFichiers(dossier As String, ByRef fs As Object)
Rem nb de fichiers dans un répertoire
Dim f As Object
nbFichiers = fs.GetFolder(dossier).Files.Count
If Not (fs Is Nothing) Then
If fs.GetFolder(dossier).SubFolders.Count > 0 Then
For Each f In fs.GetFolder(dossier).SubFolders
nbFichiers = nbFichiers _
+ nbFichiers(f.Path, fs) ' fonction récursive
Next
End If
End If
End Function
'----------------------- With Application.FileSearch .NewSearch .LookIn = "c:sophie" 'à déterminer .Filename = "*.*" .FileType = msoFileTypeAllFiles .SearchSubFolders = True If .Execute > 0 Then MsgBox .FoundFiles.Count End If End With '------------------------------
Salutations"
a écrit dans le message de news:
Quelqu'un sait-il pourquoi ces deux programmes renvoient dans certains cas des résultats différents pour calculer le nombre de fichiers d'un répertoire?
Dans les 2 cas l'objectif était de compter tous les fichiers.
Merci d'avance
----- Méthode 1: Utilisation de Application.FileSearch
Public Sub test1() Dim fs As Object Set fs = CreateObject("Scripting.FileSystemObject")
ActiveCell.Formula = .Execute(SortBy:=msoSortByLastModified, _ SortOrder:=msoSortOrderAscending, _ AlwaysAccurate:=True) End With
End Sub
----- Fin de la méthode 1
----- Méthode 2: Comptage par une fonction récursive
Public Sub test2()
Dim fs As Object Set fs = CreateObject("Scripting.FileSystemObject") ActiveCell.Formula = nbFichiers("C:users", fs)
End Sub
Private Function nbFichiers(dossier As String, ByRef fs As Object) Rem nb de fichiers dans un répertoire
Dim f As Object
nbFichiers = fs.GetFolder(dossier).Files.Count
If Not (fs Is Nothing) Then If fs.GetFolder(dossier).SubFolders.Count > 0 Then For Each f In fs.GetFolder(dossier).SubFolders nbFichiers = nbFichiers _ + nbFichiers(f.Path, fs) ' fonction récursive Next End If End If End Function
----- Fin de la méthode 2
pascalv
et si tu utilises plutôt ceci : With Application.FileSearch MsgBox .FoundFiles.Count
Merci pour la réponse; mais Application.FileSearch.FoundFiles.Count retourne le même résultat que la 1ère méthode (résultat de .Execute), càd qu'il manque des fichiers par rapport à un balayage systématique de tous les répertoires
et si tu utilises plutôt ceci :
With Application.FileSearch
MsgBox .FoundFiles.Count
Merci pour la réponse; mais Application.FileSearch.FoundFiles.Count
retourne le même résultat que la 1ère méthode (résultat de
.Execute), càd qu'il manque des fichiers par rapport à un balayage
systématique de tous les répertoires
et si tu utilises plutôt ceci : With Application.FileSearch MsgBox .FoundFiles.Count
Merci pour la réponse; mais Application.FileSearch.FoundFiles.Count retourne le même résultat que la 1ère méthode (résultat de .Execute), càd qu'il manque des fichiers par rapport à un balayage systématique de tous les répertoires
michdenis
Bonjour Pascal,
As-tu pu identifier le type de fichier dont la procédure ne tient pas compte? Ce serait intéressant de savoir ....
À titre d'exemple sous Excel 2003 et Windows Xp Pro. Impossible pour FileSearch de compter le nombre de fichiers .zip ou de lui faire rechercher un fichier ayant une extension .zip .Par contre, il identifie très bien les extensions .rar . 2 types de fichiers compressés, 2 réponses différentes.
Je n'ai aucune explication pour ceci. Est-ce que ceci est aussi applicable à d'autres types (extensions) de fichiers ?
Avec ce type de procédure, je ne vois aucune explication justifiant cette observation :
With Application.FileSearch .NewSearch .LookIn = "c:sophie" 'à déterminer .Filename = "*.*" .SearchSubFolders = False If .Execute > 0 Then MsgBox .FoundFiles.Count End If End With
Peut-être que d'autres auront un complément d'informations.
Salutations!
a écrit dans le message de news:
et si tu utilises plutôt ceci : With Application.FileSearch MsgBox .FoundFiles.Count
Merci pour la réponse; mais Application.FileSearch.FoundFiles.Count retourne le même résultat que la 1ère méthode (résultat de .Execute), càd qu'il manque des fichiers par rapport à un balayage systématique de tous les répertoires
Bonjour Pascal,
As-tu pu identifier le type de fichier dont la procédure ne tient pas compte?
Ce serait intéressant de savoir ....
À titre d'exemple sous Excel 2003 et Windows Xp Pro.
Impossible pour FileSearch de compter le nombre de fichiers .zip
ou de lui faire rechercher un fichier ayant une extension .zip
.Par contre, il identifie très bien les extensions .rar .
2 types de fichiers compressés, 2 réponses différentes.
Je n'ai aucune explication pour ceci. Est-ce que ceci est aussi
applicable à d'autres types (extensions) de fichiers ?
Avec ce type de procédure, je ne vois aucune explication justifiant
cette observation :
With Application.FileSearch
.NewSearch
.LookIn = "c:sophie" 'à déterminer
.Filename = "*.*"
.SearchSubFolders = False
If .Execute > 0 Then
MsgBox .FoundFiles.Count
End If
End With
Peut-être que d'autres auront un complément d'informations.
Salutations!
<pascalv@sdf.lonestar.org> a écrit dans le message de news: 1137484745.146889.98290@g43g2000cwa.googlegroups.com...
et si tu utilises plutôt ceci :
With Application.FileSearch
MsgBox .FoundFiles.Count
Merci pour la réponse; mais Application.FileSearch.FoundFiles.Count
retourne le même résultat que la 1ère méthode (résultat de
.Execute), càd qu'il manque des fichiers par rapport à un balayage
systématique de tous les répertoires
As-tu pu identifier le type de fichier dont la procédure ne tient pas compte? Ce serait intéressant de savoir ....
À titre d'exemple sous Excel 2003 et Windows Xp Pro. Impossible pour FileSearch de compter le nombre de fichiers .zip ou de lui faire rechercher un fichier ayant une extension .zip .Par contre, il identifie très bien les extensions .rar . 2 types de fichiers compressés, 2 réponses différentes.
Je n'ai aucune explication pour ceci. Est-ce que ceci est aussi applicable à d'autres types (extensions) de fichiers ?
Avec ce type de procédure, je ne vois aucune explication justifiant cette observation :
With Application.FileSearch .NewSearch .LookIn = "c:sophie" 'à déterminer .Filename = "*.*" .SearchSubFolders = False If .Execute > 0 Then MsgBox .FoundFiles.Count End If End With
Peut-être que d'autres auront un complément d'informations.
Salutations!
a écrit dans le message de news:
et si tu utilises plutôt ceci : With Application.FileSearch MsgBox .FoundFiles.Count
Merci pour la réponse; mais Application.FileSearch.FoundFiles.Count retourne le même résultat que la 1ère méthode (résultat de .Execute), càd qu'il manque des fichiers par rapport à un balayage systématique de tous les répertoires
pascalv
As-tu pu identifier le type de fichier dont la procédure ne tient pas c ompte? Ce serait intéressant de savoir ....
J'ai aussi déjà eu le cas avec *certains* fichiers .msg (Microsoft Outlook)
As-tu pu identifier le type de fichier dont la procédure ne tient pas c ompte?
Ce serait intéressant de savoir ....
J'ai aussi déjà eu le cas avec *certains* fichiers .msg (Microsoft
Outlook)