Temps d'exécution d'une macro trop long : help !

Springfield0

XLDnaute Nouveau
Bonjour à toutes et à tous,

Fidèle lecteur de ce merveilleux forum, je n'ai pas réussi à trouver (pour la première fois) une réponse à mon problème : j'ai un bout de macro qui me permet de supprimer les doublons d'un tableau. Le code est le suivant :


++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Set currentcell = Sheets("Par_Bureau local").Range("Z4")

Do While Not IsEmpty(currentcell)
Set nextcell = currentcell.Offset(1, 0)
If nextcell.Value = currentcell.Value Then
currentcell.EntireRow.Delete
End If
Set currentcell = nextcell
Loop

Set currentcell = Nothing
Set nextcell = Nothing
++++++++++++++++++++++++++++++++++++++++++++++++++++++++

j'ai trouvé ce code sur internet, et il fonctionne parfaitement, mais est beaucoup trop long dès lors que j'ai 1000 lignes.

Pour faire simple, je trie au préalable ma colonne par ordre croissant (ce sont des n° de lignes), et si le numéro en dessous est le même que ma cellule actuelle, alors je supprime celle du dessous, et ainsi de suite..

Mais ça me prend un temps fou lorsqu'il y a plus de 200 lignes, et je n'arrive pas à comprendre pourquoi.

Evidemment, j'ai utilisé Application.ScreenUpdating = False


Pourriez me mettre sur la bonne voie ?

Merci !
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Temps d'exécution d'une macro trop long : help !

Bonjour Springfield0

Salut Geotrouvepas

Une macro à tester:

Code:
Dim zone As Range
tablo = Sheets("Par_Bureau local").Range("Z4:Z" & Sheets("Par_Bureau local").Range("Z" & Rows.Count).End(xlUp).Row)
For n = LBound(tablo, 1) To UBound(tablo, 1) - 1
 If tablo(n, 1) = tablo(n + 1, 1) Then
   If Not zone Is Nothing Then
    Set zone = Application.Union(zone, Rows(n))
   Else
    Set zone = Rows(n)
   End If
 End If
Next
Application.ScreenUpdating = False
zone.Delete
Application.ScreenUpdating = True
 

Springfield0

XLDnaute Nouveau
Re : Temps d'exécution d'une macro trop long : help !

PierreJean,

Votre macro me renvoie le message d'erreur :

erreur d'exécution '91':
Variable objet ou variable bloc with non définie

=> je n'arrive pas à comprendre d'où vient le problème. C'est surement une mauvaise manip de ma part..

Si quelqu'un peut m'aider ^^

Merci
 

grandjules

XLDnaute Nouveau
Re : Temps d'exécution d'une macro trop long : help !

bjr,
si la réponse intéresse encore quelqu'un :
le + simple:
le faire sans macro sur l'écran excel puis enregistrer les actions pour avoir la macro qui pourra être utilisée par la suite surle même genre de données:

aller sur l'onglet données puis supprimer les doublons et y indiquer la colonne ayant les n° de ligne.
La ligne en double la + basse est effacée. J'ai testé sur 300 lignes : les fonctions EXCEL sont tjs + rapide que du code macros



grandjules
 

Discussions similaires

Réponses
0
Affichages
154
Réponses
2
Affichages
153