Macro trop lente

Résolu
Lucastrope Messages postés 2 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 12 novembre 2008 - 12 nov. 2008 à 16:30
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 - 12 nov. 2008 à 18:14
Bonjour,

Je travaille actuellement sur un fichier excel afin de trouver les doublons dans une base de données Excel. Le seul problème est que la macro que j'ai créée met beaucoup trop de temps.

Détail de ma macro actuelle:

Sub DOUBLONSN1()

Sheets("BD").Select
Range("A5").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Doublons").Select
Range("B5").Select
ActiveSheet.Paste
Sheets("Doublons").Select
Range("B5").Select
Do While Not (IsEmpty(ActiveCell))
    Cells(ActiveCell.Row, 3).Formula = "=IF(MATCH(C[-1],C[-1],0)=ROW(),""ok"",""doublons"")"
    Selection.Offset(1, 0).Select
Loop
Dim l As Integer
For l = Cells(65256, 3).End(xlUp).Row To 1 Step -1
If Cells(l, 3).Value = "ok" Then Cells(l, 3).EntireRow.Delete
Next l
Range("A1").Select

End Sub

3 réponses

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
12 nov. 2008 à 17:23
Bonjour,

déjà : quel est le but de ces 2 sélections successioves :

Range("A5").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select

?


(sans préjudice du reste...
3
Lucastrope Messages postés 2 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 12 novembre 2008
12 nov. 2008 à 17:34
Le but est de sélectionner toutes les cellules de la colonnes à partir de la cellule A5 et de les copier ensuite dans une autre feuille pour effectuer une recherche des doublons.
Mais ce n'est pas cette partie là de la macro qui ralentit, il s'agit plutot des fonctions loop et while.
3
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
12 nov. 2008 à 18:14
Inhibe l'affichage avant Do While
Application.ScreenUpdating = False
et remets- à true après Next I
3
Rejoignez-nous