[RÉSOLU][VBA] Lenteur lors de l'exécution d'une procédure (peut-être lié à Find)

tashiqi

XLDnaute Occasionnel
Bonjour,
J'ai fait un code de comparaison pour comparer deux méthodes d'extraction et extraire dans un 3ème fichier les lignes que je ne trouve que dans le fichier 1, mais j'ai 30000 lignes à vérifier, et plus le programme avance, plus il est lent. Pour indication, la durée pour analyser les 100 premières lignes est à peu près la même que pour la 15000ème ligne seule. Ce n'est visiblement pas du à la mémoire qui sature, car lorsque je commence à la 10000ème ligne, c'est tout de suite lent. Est-ce que cela pourrait être du à la méthode Find ? Si oui, y-aurait-il un autre moyen ?
(D'habitude, google est mon ami, mais là il a refusé ><')
Je ne peux malheureusement pas envoyer les fichier à comparer, mais ce sont de gros tableaux (fichier 1 : 30206 lignes, fichier 2 : 21815 lignes) , que je compare grâce à la deuxième colonne.

Code:
Sub test()
Dim c As Range
Dim i As Long
Dim p As Integer

p = 1
Set c = Range("A1")
For i = 6 To 30206
Application.StatusBar = i & "/30206 - " & p - 1 'ligne ajoutée pour évaluer l'avancement
cherche = Workbooks("fichier1").Sheets(9).Cells(i, 2)
Set c = Nothing
Set c = Workbooks("fichier2").Sheets(9).UsedRange.Find(cherche, Range("A1"), , lookat:=xlWhole)
If c Is Nothing Then
    Workbooks("fichier1").Sheets(9).Rows(i).Copy Destination:=ThisWorkbook.Sheets(1).Rows(p)
    ThisWorkbook.Sheets(1).Cells(p, 27) = i
    p = p + 1
End If
Next
End Sub

En espérant avoir été compris,
Merci d'avance

Tashiqi
 
Dernière édition:

Paf

XLDnaute Barbatruc
Re : [VBA] Lenteur lors de l'exécution d'une procédure (peut-être lié à Find)

bonjour,

les fichiers 1 et 2 ont ils la même structures?
la comparaison entre les deux peut elle se limiter à la comparaison d'une colonne ?

si oui peut-être deux boucles imbriquées ?

A+
 

tashiqi

XLDnaute Occasionnel
Re : [VBA] Lenteur lors de l'exécution d'une procédure (peut-être lié à Find)

Merci pour cette réponse, je n'avais pas pensé à ajouter l'argument searchorder:=xlbycolumns au "find", maintenant, cela ne semble pas ralentir, ou tout du moins très peu. Mon problème est donc résolu :)
Merci encore
 
Haut Bas