Supprimer des lignes en doublons

Hello, en faisant la recherche sur le forum, j'ai pas trouvé de réponse précises à cette question... ou alors j'ai mal cherché...

J'ai un fichier avec 27000 lignes sur 5 colonnes. (ABCDE)

Je ne trouve pas de macro pour supprimer efficacement les lignes doublons (Strict sur les 5 colonnes)

(Et forcement garder un exemplaire de chaque doublons), en sachant que les répétitions de lignes ne sont pas forcément à double, mais peuvent etre à triple, et même bien plus...

Merci d'avance les amis

Julien

Hello,

en faisant la recherche sur le forum, j'ai pas trouvé de réponse précises à cette question... ou alors j'ai mal cherché...

tu selectionnes ton tableau, puis onglet données==>outils de données==>supprimer les doublons==>selectionner tout==>OK

Crdlmt

Bonjour le fil, bonjour le forum,

Une proposition VBA avec le code c-dessous :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable I (Incrément)
Dim CC() As String 'déclare la variable CC (Concaténation des Colonnes)
Dim PL As Range 'déclare la variable PL (PLage)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
Set PL = O.Range("A1") 'initialise la plage PL
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV (à adapter s'il ne commence pas en A1)
ReDim CC(1 To UBound(TV, 1)) 'redimensionne le tableau CC
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeur TV
    'concaténe les 5 colonnes de la ligne dans la donnée CC(I)
    CC(I) = CStr(TV(I, 1)) & "&" & CStr(TV(I, 2)) & "&" & CStr(TV(I, 3)) & "&" & CStr(TV(I, 4)) & "&" & CStr(TV(I, 5))
Next I 'prochaine ligne de la boucle
For I = 1 To UBound(CC) 'boucle sur toutes les lignes I du tableau CC
    For J = I To UBound(CC) 'boucle sur toutes les lignes J du tableau CC (en commençant par la ligne I)
        'si I est différent de J et la donnée CC(I) est égale à la donnée CC(J), redéfinit la plage PL
        If I <> J And CC(I) = CC(J) Then Set PL = IIf(PL.Cells.Count = 1, O.Rows(J), Application.Union(PL, O.Rows(J)))
    Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
PL.Select 'sélectionne la plage PL (permet de vérifier dans un premier temps, a effacer ensuite)
'PL.Delete'supprimme la plage PL (enlever le commentaire après vérification)
End Sub

Tel qu'il est, le code permet de vérifier si les doublons sont bien sélectionnés. Il te faudra supprimer ou commenter l'avant dernière ligne et enlever le commentaire (l'apostrophe en début de ligne) de la dernière pour qu'ils soient supprimés.

Merci à vous deux !

@djidji : Il me semble que cette methode agissait sur les cellules et pas sur les lignes. Du coup, crainte que ca fasse des decalage

@ThauTheme : Merci j'essaye ca ! 5la la macro tourne encore... C'est long 27000 données.)

Re,

En effet ! Avec la Méthode à Djidji (qui fonctionne) ça devrait aller plus vite mais je n'ai pas testé avec autant de lignes...

Rechercher des sujets similaires à "supprimer lignes doublons"