Problème de vitesse en vba
Bonjour,
Je suis débutant en vba ( j'ai commencé il y a un mois ...) et j'ai un problème avec l'un de mes codes.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| Sub check_inclu()
p = 0
k = 0
m = 0
'Boucle pour naviguer sur les différents étages des noms_inclus
For n = 0 To 20
'Boucle pour naviguer sur les différentes lignes du compteur
For k = 0 To (nb_file2 - 1)
'Boucle pour checker les inclus de chaque fichier
For i = 0 To (compteur_inclu2(n, k) - 1)
'On test si l'inclu existe
My_inclu = Dir(path_inclu2(n, i))
If My_inclu <> "" Or My_inclu <> nom_inclu2(n, i) Then
'S'il existe on ouvre le fichier
Open path_inclu2(n, i) For Input As #4
'Tant que la fin du fichier n'est pas atteinte
Do While Not EOF(4)
'On stock chaque ligne
Line Input #4, cherche_inclu
'On check la ligne
If Left(cherche_inclu, 6) = "IMPFIL" Or Left(cherche_inclu, 5) = "INCLU" Then
'Si elle répond aux critètres, on la stock dans le niveau n+1
nom_inclu2(n + 1, p) = Right(cherche_inclu, Len(cherche_inclu) - 8)
'On supprime les espaces s'il y en a
nom_inclu2(n + 1, p) = Replace(nom_inclu2(n + 1, p), " ", "")
pos_path = InStrRev(path_inclu2(n, i), "\")
path_inclu2(n + 1, p) = Left(path_inclu2(n, i), pos_path) & nom_inclu2(n + 1, p)
'On compte le nombre de fichier inclu relevé dans ce niveau n+1
compteur_inclu2(n + 1, m) = compteur_inclu2(n + 1, m) + 1
'On passe à la ligne suivante du niveau
p = p + 1
End If
'On réitère jusque la fin du fichier
Loop
'On ferme l'accès au fichier
Close #4
'Si le fichier n'existe pas
Else
'On l'indique par un message
MsgBox "le fichier : " & nom_inclu2(i, 0) & " n'existe pas"
'On quitte la procédure
Exit Sub
End If
'On passe au i suivant
Next i
m = m + 1
'on passe au k suivant
Next k
nb_file2 = m
p = 0
m = 0
'On passe au niveau n suivant
Next n
End Sub |
Ce code a pour but de consulter les fichiers stockés dans le tableau à 2 dimensions nom_inclu2, de vérifier s'il y a une ligne qui commence par INCLU et si c'est le cas de récupérer le nom du fichier.
Cependant la taille des fichiers qu'il lit peut faire100 lignes ou plus de 70 000 lignes.... Ce qui fait que le code est très long à s'éxecuter....
Auriez-vous une piste pour permettre une éxecution plus rapide ?
Merci du temps que vous voudrez bien me consacrer