Temps d'exécution trop long
Résolu
siamens_duj
Messages postés
212
Statut
Membre
-
gbinforme Messages postés 15478 Statut Contributeur -
gbinforme Messages postés 15478 Statut Contributeur -
Bonjour,
J'ai créé un code qui fonctionne. Seul problème, il met presque 2H00 à s'exécuter !
Ce qui est beaucoup trop long.
J'ai un classeur. Dans ce classeur j'ai plusieurs feuilles mais ici seulement deux
nous intéresse.
Dans ces feuille, j'ai des colonnes, dont une dans la feuille "TXT" en F qui est une
colonne de concaténation et une autre dans la feuille "BASE" en Z qui est aussi
une colonne de concaténation.
Si les 2 colonnes de concaténations correspondent, la cellule en E de "TXT" se copie dans la
cellule en F de "BASE".
Il se peut qu'une valeur de concaténation de "TXT" correspondent à 2 valeurs de concaténation de la
feuille "BASE".
La feuille "TXT" comporte environ 20 000 lignes, mais cela peut changer ..
Voici mon code :
Merci d'avance pour votre aide.
J'ai créé un code qui fonctionne. Seul problème, il met presque 2H00 à s'exécuter !
Ce qui est beaucoup trop long.
J'ai un classeur. Dans ce classeur j'ai plusieurs feuilles mais ici seulement deux
nous intéresse.
Dans ces feuille, j'ai des colonnes, dont une dans la feuille "TXT" en F qui est une
colonne de concaténation et une autre dans la feuille "BASE" en Z qui est aussi
une colonne de concaténation.
Si les 2 colonnes de concaténations correspondent, la cellule en E de "TXT" se copie dans la
cellule en F de "BASE".
Il se peut qu'une valeur de concaténation de "TXT" correspondent à 2 valeurs de concaténation de la
feuille "BASE".
La feuille "TXT" comporte environ 20 000 lignes, mais cela peut changer ..
Voici mon code :
Sub copie()
Application.ScreenUpdating = False
Dim u as long
Dim j as long
u = 2
j = 2
Do While Sheets("BASE").Cells(u, 1).Value <> ""
If Sheets("BASE").Cells(u, 26).Value = Sheets("TXT").Cells(j, 6).Value Then
Sheets("BASE").Cells(u, 6).Value = Sheets("TXT").Cells(j, 5).Value
u = u + 1
j = 2
Else: j = j + 1
End If
If Sheets("TXT").Cells(j, 1).Value = "" Then
j = 2
u = u + 1
End If
Loop
Merci d'avance pour votre aide.
A voir également:
- Temps d'exécution trop long
- Pc long a demarrer - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Temps pour soi iphone - Guide
- Family link le temps ne correspondent pas - Forum Contrôle parental
- 2go internet combien de temps - Forum Opérateurs & Réseaux mobiles
2 réponses
bonjour
effectivement....
Dans l’attente
Il se peut qu'une valeur de concaténation de "TXT" correspondent à 2 valeurs de concaténation de la
feuille "BASE".
on conserve les doublons ou non ?
effectivement....
Mettrun extrait du classeur -2000 à 3000 lignes- sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci par un clic droit sur le lien proposé dans le message de réponse
Dans l’attente
Il se peut qu'une valeur de concaténation de "TXT" correspondent à 2 valeurs de concaténation de la
feuille "BASE".
on conserve les doublons ou non ?
Bonjour,
@michel_m : un grand coucou à toi
@siamens_duj : Je te propose de modifier ainsi ta macro
Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
@michel_m : un grand coucou à toi
@siamens_duj : Je te propose de modifier ainsi ta macro
Sub copie() Dim u As Long Dim j As Long Dim tbb, tbt Application.ScreenUpdating = False With Sheets("BASE") tbb = .Cells(1, 26).Resize(.Cells(Rows.Count, 26).End(xlUp).Row, 1).Value End With With Sheets("TXT") tbt = .Cells(1, 5).Resize(.Cells(Rows.Count, 6).End(xlUp).Row, 2).Value End With For u = 2 To UBound(tbb) For j = 2 To UBound(tbt) If tbb(u, 1) = tbt(j, 2) Then Sheets("BASE").Cells(u, 6).Value = tbt(j, 1) Exit For End If Next j Next u Application.ScreenUpdating = True End Sub
Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry