Macro : Suppression de doublons 'rapide"

Luigi13

XLDnaute Nouveau
Bonjour à tous, je cherche une solution vba me permettant de supprimer les doublons d'une plage de données de façon rapide.
J'ai essayé plusieurs code et tous me figent l'ordinateur ou alors mettent au moins 10 min.
Le seul code que j'ai trouvé qui me permet d'aller vite est celui de MDF.
Le problème c'est que j'aimerai affecté le code à un bouton, et celui de MDF étant crypté par mdp je ne peux pas.

Je m'explique, j'ai une plage nommée 'bd' et j'aimerai que lorsqu'un doublon est reconnut dans la colonne A, que le code m'efface la ligne doublonnée.
J'ai entendu de méthode par procédure qui irait plus vite, mais étant novice en la matière tout cela reste vague pour moi..!
Si vous pouviez m'aider,ce serait sympa !
Merci à vous
 
C

Compte Supprimé 979

Guest
Re : Macro : Suppression de doublons 'rapide"

Re,

Un méthode possible à adapter
Code:
Sub SupDoublons()
  Dim DLig As Long
  DLig = Range("A" & Rows.Count).End(xlUp).Row
  ' Utilisation du filtre avancé
  With Range("A1:A" & DLig)
    .AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("Z1"), Unique:=True
    .Clear  ' Effacer les données de la colonne contenant les doublons
  End With
  ' Coller les valeurs uniques
  DLig = Range("Z" & Rows.Count).End(xlUp).Row
  Range("Z1:Z" & DLig).Cut Destination:=Range("A1")
End Sub

0,0625 sec pour 10.000 éléments

A+
 
Dernière modification par un modérateur:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Macro : Suppression de doublons 'rapide"

Bonjour,

0,23 sec pour 10.000 éléments


http://boisgontierjacques.free.fr/fichiers/SupDoublonsDict.xls

Code:
Sub SupDoublons2()
  Application.ScreenUpdating = False 
  Set f1 = Sheets("BD")
  a = f1.Range("A1").CurrentRegion.Value
  Dim c()
  ReDim c(1 To UBound(a, 1), 1 To UBound(a, 2))
  ligne = 1
  Set mondico = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(a)
    If Not mondico.exists(a(i, 1)) Then
      mondico.Add a(i, 1), 1
      For k = 1 To UBound(a, 2): c(ligne, k) = a(i, k): Next k
      ligne = ligne + 1
    End If
  Next
  Sheets("resultat").[A1].Resize(mondico.Count, UBound(a, 2)) = c 
End Sub

JB
Formation Excel VBA JB
 

Discussions similaires

Statistiques des forums

Discussions
312 193
Messages
2 086 058
Membres
103 110
dernier inscrit
Privé