Optimiser un code pour gagner en vitesse
Bonjour,
Je vous fais part de deux petits codes que je souhaite optimiser.
Le premier a pour but de boucler dans un répertoire et de récupérer le nombre de fichiers commençant par 'SEE'. Qu'en pensez-vous ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Function NumberFilesSee(ByVal Folder As String) As Long
Dim Fso As Scripting.FileSystemObject
Dim fld As Scripting.Folder
Dim fil As Scripting.File
Dim NbrFilesSee As Long
Set Fso = New Scripting.FileSystemObject
Set fld = Fso.GetFolder(Folder)
For Each fil In fld.Files
If Left(fil.Name, 3) = "SEE" Then
NbrFilesSee = NbrFilesSee + 1
End If
Next fil
NumberFilesSee = NbrFilesSee
Set Fso = Nothing
End Function |
Le seconde a pour but de tourner dans le même répertoire et de m'indiquer le nombre de fichiers commençant soit par 'SEE' soit par une série (8 permiers caractères) de caractères définis. Qu'en pensez-vous ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Function NumberFilesSeeAndUser(ByVal Folder As String) As Long
Dim Fso As Scripting.FileSystemObject
Dim fld As Scripting.Folder
Dim fil As Scripting.File
Dim NbrFilesSeeAndUser As Long
Set Fso = New Scripting.FileSystemObject
Set fld = Fso.GetFolder(Folder)
For Each fil In fld.Files
If Left(fil.Name, 3) = "SEE" Then
NbrFilesSeeAndUser = NbrFilesSeeAndUser + 1
End If
If Left(fil.Name, 8) = "00000221" Or Left(fil.Name, 8) = "00061065" _
Or Left(fil.Name, 8) = "00101663" Or Left(fil.Name, 8) = "00000413" _
Or Left(fil.Name, 8) = "00060935" Or Left(fil.Name, 8) = "00060777" _
Or Left(fil.Name, 8) = "00101142" Or Left(fil.Name, 8) = "00060106" Then
NbrFilesSeeAndUser = NbrFilesSeeAndUser + 1
End If
Next fil
NumberFilesSeeAndUser = NbrFilesSeeAndUser
Set Fso = Nothing
End Function |
Ces deux fonctions me renvoient les nombres dont j'ai besoin pour la suite du traitement.
Temps de réaction :
- Quand j'ai 100 fichiers : respectivement 00:00:00:31 et 00:00:00:61
- Quand j'ai 200 fichiers : respectivement 00:00:00:61 et 00:00:01:30
- Quand j'ai 376 fichiers : respectivement 00:00:01:95 et 00:00:10:20
Et comme je n'ai pas dix dossiers par jours, le porquoi de la demande. Si vous avez des idées ou peut-être est-ce le matériel ou le réseau qui est foireux ? A votre avis ?