Supprimer les doublons de lignes entièrement identiques

Bonjour,

Je ne me débrouille pas du tout en VBA et je cherche à dédoublonner (on me l'a demandé avant ce soir et c'est mon 1er jour de boulot !) un fichier excel assez important : je voudrais que la macro supprime les doublons des lignes qui seraient totalement identiques.

Un grand merci pour votre aide !

Nathalie.

fichier?!

Bonjour,

Cela doit nécessairement se faire en VBA ? Tu ne peux pas joindre un exemple de fichier ? Quelques lignes et données suffiront pour tester.

Cordialement,

Vbabeginner

Voici un ex de fichier en PJ merci bcp !

Bonjour,

Tu n'as pas répondu à ma question : est-ce nécessairement via VBA que tu as besoin ?

SInon filter - filter élaboré - extraction sans doubloon marche très bien !!

Vbabeginner

Oui, désolée j'ai fait le test avec cette fonction mais on m'a explicitement demandé une macro ;-(

Merci d'avance...

Bonjour,

Tu peux essayer adapter ce code :

Sub doublons_et_lignes_vides()

    'Macro : Sébastien Mathier - Excel-Pratique.com
    'A propos de cette macro : http://www.blog-excel.com/gerer-doublons-et-lignes-vides/

    choix = InputBox("Avant d'utiliser cet outil, n'oubliez pas d'enregistrer votre fichier !" & Chr(10) & Chr(10) & "Choisissez l'action qui vous intéresse :" & Chr(10) & Chr(10) & "1. Colorer les doublons (colorer la cellule)" & Chr(10) & "2. Colorer les doublons (colorer la ligne entière)" & Chr(10) & "3. Effacer les doublons (en laissant la ligne vide)" & Chr(10) & "4. Supprimer les doublons (ligne entière)" & Chr(10) & "5. Supprimer les lignes vides" & Chr(10) & Chr(10) & "Entrez le n° de l'action et cliquez sur OK :", "Gestion des doublons - Blog-Excel.com")
    If choix = "" Then Exit Sub

    choix2 = ""
    If choix = 1 Or choix = 2 Or choix = 3 Or choix = 4 Then choix2 = InputBox("Entrez la lettre de la colonne où les doublons doivent être recherchés :", "Gestion des doublons - Blog-Excel.com")
    If choix = 5 Then choix2 = InputBox("Entrez la lettre de la colonne à prendre en compte (si la cellule de cette colonne est vide, la ligne sera supprimée) :", "Gestion des doublons - Blog-Excel.com")
    If choix2 = "" Then Exit Sub

    Application.ScreenUpdating = False
    test = Timer

    der_ligne = Range(choix2 & "65000").End(xlUp).Row

    Dim tab_cells()
    ReDim tab_cells(der_ligne - 1)

    For Ligne = 1 To der_ligne
        tab_cells(Ligne - 1) = Range(choix2 & Ligne)
    Next

    nb = 0
    If choix = 4 Or choix = 5 Then compteur = 0

    For Ligne = 1 To der_ligne
        contenu = tab_cells(Ligne - 1)

        If (choix = 1 Or choix = 2) And contenu <> "" Then 'Colorer doublons
            For i = 1 To der_ligne
                If contenu = tab_cells(i - 1) And Ligne <> i Then 'Si doublon
                    nb = nb + 1
                    If choix = 1 Then
                        Range(choix2 & Ligne).Interior.ColorIndex = 3
                    Else
                        Range(Ligne & ":" & Ligne).Interior.ColorIndex = 3
                    End If
                    Exit For
                End If
            Next
        End If

        If (choix = 3 Or choix = 4) And Ligne > 1 And contenu <> "" Then 'Effacer/supprimer doublons
            For i = 1 To Ligne - 1
                If contenu = tab_cells(i - 1) Then 'Si doublon
                    nb = nb + 1
                    If choix = 3 Then
                        Range(Ligne & ":" & Ligne).ClearContents
                    Else
                        Range(Ligne + compteur & ":" & Ligne + compteur).Delete
                        compteur = compteur - 1
                    End If
                    Exit For
                End If
            Next
        End If

        If choix = 5 And contenu = "" Then 'Lignes vides
            Range(Ligne + compteur & ":" & Ligne + compteur).Visible = False

            compteur = compteur - 1
            nb = nb + 1
        End If
    Next

    res_test = Format(Timer - test, "0" & Application.DecimalSeparator & "000")
    Application.ScreenUpdating = True

    If nb = 0 And choix = 5 Then
        dd = MsgBox("Aucune ligne vide trouvée ...", 64, "Résultat")
    ElseIf nb = 0 Then
        dd = MsgBox("Aucun doublon trouvé dans la colonnne " & UCase(choix2) & " ...", 64, "Résultat")
    ElseIf choix = 5 Then
        dd = MsgBox(nb & " lignes supprimées (en " & res_test & " secondes)", 64, "Résultat")
    ElseIf choix = 4 Then
        dd = MsgBox(nb & " doublons supprimés (en " & res_test & " secondes)", 64, "Résultat")
    ElseIf choix = 3 Then
        dd = MsgBox(nb & " doublons effacés (en " & res_test & " secondes)", 64, "Résultat")
    Else
        dd = MsgBox(nb & " doublons passés en rouge (en " & res_test & " secondes)", 64, "Résultat")
    End If

End Sub

Re,

Rien n'empeche de faire un filter élaboré en VBA

Sub Macro1()
'

    Range("Ton tableau").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Range("tes critères"), Unique:=True

End Sub

Cela te conviendrait ?

Ouh là, merci à tous les deux, ça m'a l'air un peu compliqué ;-(

Vbabeginners, ta proposition me fait un peu moins peur quand tu dis "tes critères", peux-tu préciser ? Merci bcp !

nunigb, je dois copier coller tout ça dans la fenêtre macro ?

Merci !!

Re,

Voici une petite illustration.

Cordialement,

Vbabeginner

bonjour,

une autre proposition

exemple de suppression de doublon dans les lignes 1 à 14 dans les colonnes A à T

Sub aargh()

    ActiveSheet.Range("$A$1:$T$14").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7 _
        , 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20), Header:=xlNo
End Sub

Merci bcp je regarde ça ce soir chez moi !

Merci, merci !

Re,

Moi qui me dépéchais en pensant que c'était urgent

Bonne continuation !

Cordialement,

Vbabeginner

Re ! Cette journée est interminable Merci pour le fichier ! Quand tu dis "tes critères", que veut dire Range("J3:Q4") ?

Excuse moi mais je n'y connais vraiment que couic.. Mon objectif est que si une ligne (ex, la ligne 2) a des valeurs identiques pour chaque colonne (A, B, C, D, E, F, G, H) à une autre ligne, elle soit supprimée..

Merci bcp de ton aide !


Merci h2so4 et comment fait-on si le fichier a 12000 lignes ? Il y a une astuce ?

Merci bcp !

Re,

Pour que le filtre fasse effet, il lui faut une ligne de "critère". Dans ton cas il suffit de copier les titres de tes colonnes et de les copier à un endroit dans ta feuilles ou tu as de la place et où il ne te dérangeront pas... Et voilà tu as tes critères ! Dans le fichier que je t'ai fourni j'ai collé ces cellules en J3 et c'est pourquoi tu vois dans la macro Range ("J3:Q4")

Donc pour résumer : tu dois dans la macro changer ce qui vient après Range et y introduire les coordonnées de ton fichier réel.

Suis je clair ? Moi je me comprends

Vbabeginner

Hé, hé mais moi je suis bouchée et surtout cette 1ère journée j'ai trop donné

Alors (si je comprends bien), j'ai collé les cellules (juste les en-têtes) moi aussi à côté mais je comprendrais si c'était Range ("J3:Q4"). Pourquoi est-ce Q4 dans ton exemple

Merci de ton aide c'est vraiment sympa de ta part !

Re,

Bonne question !!

En fait la ligne de critère est celle en dessous des titres que tu as collé ! Mais dans ce cas-ci il n'y en pas ! Donc les cellules sont vides !

Si un jour tu veux le même exemple et garder par exemple que les lignes où "CLAIRE" apparait dans les noms, tu devras mettre dans tes critères "CLAIRE" en dessous de nom ...

Donc ici pas de critère mais juste se débarasser des doublons ! C'est difficile à expliquer par écrit ! Un fichier facilite tout

Oh là, d'accord la subtilité !! Je crois que je comprends mieux..

Et maintenant comment j'intègre cette macro à mon fichier (vi, le boulet jusqu'au bout !!)

Merci mille fois !!!!

Pas de soucis ! Faut bien commencer quelque part ! Et je suis très très loin d'être doué !!

Tu dois faire :

Alt + F11 pour arriver dans la fenêtre Vba

Puis Menu Insertion Module et tu colles la macro sur le fond blanc qui apparait à l'écran et puis tu sauves.

Il faudra après créer un bouton pour faire appel à cette macro ... mais chaque chose en son temps

Heu si tu m'as l'air doué !!

A y est, j'ai copié.. comment donc qu'on fait le bouton maintenant ?

Merci encore..

Rechercher des sujets similaires à "supprimer doublons lignes entierement identiques"