[VBA]Supprimer les lignes identiques rapidement...

Supprimer les lignes identiques rapidement... [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 13-11-2010 à 13:13:33    

:hello:  
Salut à tous !
Je cherche à supprimer rapidement les lignes d'un tableau Excel dont la valeur dans la colonne A est égale à une certaine valeur.
Jusqu'à présent, je me plaçait sur la dernière ligne et remontait le tableau ligne à ligne et à chaque fois que la condition était remplie, je supprimais...
Le souci est que dans un tableau très grand (plusieurs milliers de lignes), le traitement est très très long...
 
Y aurai-il moyen de procéder différemment pour accélérer cela ?
Genre : sélectionner la colonne et une commande quelconque supprime les lignes identiques...
 
ATTENTION : je ne veux pas trier les lignes...
 
Merci de votre aide...
 
 :jap:


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 13-11-2010 à 13:13:33   

Reply

Marsh Posté le 16-11-2010 à 09:36:28    

Il manque deux choses
 
la variable de taille de ton tableau :o
et la valeur testé :


Sub SuppressionLignes()
   Dim objCell As Range
 
   With ActiveSheet
   
      For Each objCell In .Range("A1:A5000" )
         If objCell.Value = "TOTO" Then
            .Rows(objCell.Row).Delete
         End If
      Next
   
   End With
 
End Sub

Reply

Marsh Posté le 16-11-2010 à 20:54:06    

Xxxaaavvv a écrit :

Il manque deux choses
 
la variable de taille de ton tableau :o
et la valeur testé :


Sub SuppressionLignes()
   Dim objCell As Range
 
   With ActiveSheet
   
      For Each objCell In .Range("A1:A5000" )
         If objCell.Value = "TOTO" Then
            .Rows(objCell.Row).Delete
         End If
      Next
   
   End With
 
End Sub



 
Thanx !
Je teste demain...
 :hello:  


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 16-11-2010 à 21:45:29    

Finalement, je viens de tester sous Excel 2011.
Ton code est 3 fois plus rapide que ma -hum- méthode un peu archaïque...  
Merci.


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Marsh Posté le 17-11-2010 à 08:14:39    

Super !
 
Clairement plus rapide ton code Xxxaaavvv.  :sol:  
J'ai effectivement  créé une variable de type Single appelée NBLIGNE.
J'ai ensuite été sur la dernière ligne de ma plage : Range("B65536" ).End(xlUp).Select.
Là, je mets ActiveCell.Row dans NBLIGNE.
Puis je sélectionne ma plage : Range("B1:B" & NBLIGNE).Select
Cela fait gagner un peu plus de temps...
Sur un tableau de 22863 lignes :
  - ma macro pas terrible : 22 secondes
  - la macro de Xxxaaavvv : 3 secondes...
 
... pas mal... et d'ailleurs, on ne peut pas optimiser plus...  :whistle:  
 
Bon... faut aussi que je me perfectionne en VBA...  :o


Message édité par scaryfan le 17-11-2010 à 08:42:35

---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 2To
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed