Supprimer les doublons de lignes entièrement identiques Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
N
Nath39
Jeune membre
Jeune membre
Messages : 15
Inscrit le : 21 mars 2016
Version d'Excel : 2010

Message par Nath39 » 21 mars 2016, 16:08

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.
Avatar du membre
julien35000
Membre dévoué
Membre dévoué
Messages : 602
Inscrit le : 19 janvier 2013
Version d'Excel : 2007

Message par julien35000 » 21 mars 2016, 16:09

fichier?!
La seule chose qu'on est sûr de ne pas réussir est celle qu'on ne tente pas........
V
VBABEGINNER
Membre dévoué
Membre dévoué
Messages : 728
Inscrit le : 5 novembre 2014
Version d'Excel : 2010

Message par VBABEGINNER » 21 mars 2016, 16:10

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
N
Nath39
Jeune membre
Jeune membre
Messages : 15
Inscrit le : 21 mars 2016
Version d'Excel : 2010

Message par Nath39 » 21 mars 2016, 16:26

Voici un ex de fichier en PJ merci bcp !
Fichier-nathalie_Test1 - Copie.xlsx
(8.34 Kio) Téléchargé 43 fois
V
VBABEGINNER
Membre dévoué
Membre dévoué
Messages : 728
Inscrit le : 5 novembre 2014
Version d'Excel : 2010

Message par VBABEGINNER » 21 mars 2016, 16:37

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
N
Nath39
Jeune membre
Jeune membre
Messages : 15
Inscrit le : 21 mars 2016
Version d'Excel : 2010

Message par Nath39 » 21 mars 2016, 16:39

Oui, désolée j'ai fait le test avec cette fonction mais on m'a explicitement demandé une macro ;-(
Merci d'avance...
n
nunizgb
Membre habitué
Membre habitué
Messages : 130
Inscrit le : 26 décembre 2012
Version d'Excel : 2013

Message par nunizgb » 21 mars 2016, 16:45

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
V
VBABEGINNER
Membre dévoué
Membre dévoué
Messages : 728
Inscrit le : 5 novembre 2014
Version d'Excel : 2010

Message par VBABEGINNER » 21 mars 2016, 16:46

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 ?
N
Nath39
Jeune membre
Jeune membre
Messages : 15
Inscrit le : 21 mars 2016
Version d'Excel : 2010

Message par Nath39 » 21 mars 2016, 16:51

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 !!
V
VBABEGINNER
Membre dévoué
Membre dévoué
Messages : 728
Inscrit le : 5 novembre 2014
Version d'Excel : 2010

Message par VBABEGINNER » 21 mars 2016, 16:59

Re,

Voici une petite illustration.


Cordialement,


Vbabeginner
Fichier-nathalie_Test1 - Copie.xlsm
(17.22 Kio) Téléchargé 84 fois
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message