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

  • Initiateur de la discussion Initiateur de la discussion tashiqi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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+
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
238
Réponses
4
Affichages
461
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
818
Retour