Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1764 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA]Supprimer les lignes identiques rapidement...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA]Supprimer les lignes identiques rapidement...

n°2035779
scaryfan
Apple Inside
Posté le 13-11-2010 à 13:13:33  profilanswer
 

: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
mood
Publicité
Posté le 13-11-2010 à 13:13:33  profilanswer
 

n°2036189
Xxxaaavvv
Posté le 16-11-2010 à 09:36:28  profilanswer
 

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

n°2036462
scaryfan
Apple Inside
Posté le 16-11-2010 à 20:54:06  profilanswer
 

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
n°2036466
scaryfan
Apple Inside
Posté le 16-11-2010 à 21:45:29  profilanswer
 

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
n°2036512
scaryfan
Apple Inside
Posté le 17-11-2010 à 08:14:39  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA]Supprimer les lignes identiques rapidement...

 

Sujets relatifs
Incompatibilité de type Erreur 13 VBA[VBA] Adopté le fonctionnement d'un fichier a un autre.
Catcher les erreurs VBA en PHP[VBA] Déclaration automatique de tableaux
[VBA/LOTUS]: écrire mail avec fichier attaché + JPEG intégré au corpsRevenir en arriere doc word avec VBA
[VBA] Dimension d'une image[VBA] If/then débutant
[VBA] extraire des noeuds d'un gros fichier XML[VBA] Problème lors de l'ouverture des fichiers
Plus de sujets relatifs à : [VBA]Supprimer les lignes identiques rapidement...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR