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.
En espérant avoir été compris,
Merci d'avance
Tashiqi
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: