Supprimer Doublon sauf si

Bonjour,

Je risque d'avoir un peu de mal à expliquer mon problème, j'ai donc fais un classeur avec 2 feuilles.

32classeur1.xlsx (8.19 Ko)

J'ai un tableau avec des doublons mais pas complètement, car j'ai ajouté des colonnes et mit des infos, j'importe des lignes certaines sont des doublons mais sans les colonne que j'ai ajouté, j'aimerais etre sur que je supprime les doublons dont les colonnes que j'ai ajouté sont vide.

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient-il ?

55classeur1-v1.xlsm (23.55 Ko)

Non, ça c'est aussi ce que j'arrive à faire... mais ça ne correspond pas à ce que je veux, ça supprime mon toto qui a le numéro 5

Et que dis-tu de ce nouvel essai ?

73classeur1-v2.xlsm (23.99 Ko)

Wow ! ça semble fonctionner... j'ai pas encore pu faire tous les tests pour être sur.

Au cas où j'ai besoin d'adapter le code mais aussi pour essayer de comprendre et progresser dans le VBA, peux-tu mettre une explication du code avec des commentaires ligne à ligne ? je pense que ça aiderait aussi bcp la communauté.

Un grand merci à toi

En retour :

Voici ton code

Option Explicit

Dim ln, lgn, derLn, cell

Sub SupprimerLesDoublons()
    derLn = Range("A" & Rows.Count).End(xlUp).Row                   'On repère la dernière ligne du tableau de la colonne A
    For ln = derLn To 2 Step -1                                     'On va examiner toutes les lignes du tableau en commençant par la dernière et en remontant
        If Range("C" & ln) = "" And Range("D" & ln) = "" Then       'On regarde si sur cette ligne (ln), les colonnes C et D sont vides
            For lgn = 2 To derLn                                    'Si oui, on passe toutes les lignes depuis cette ligne (lgn) jusqu'à la dernière
                If Range("A" & lgn) = Range("A" & ln) And Range("B" & lgn) = Range("B" & ln) Then   'Et on regarde si la ligne lgn colonne A egale la ligne lgn colonne B
                    If ln <> lgn Then                               'Si oui, on regarde encore que ln et lgn sont 2 lignes différentes
                        Rows(ln & ":" & ln).Delete shift:=xlUp      'Et si la réponse est encore oui, alors on supprime la ligne
                    End If
                End If
            Next lgn
        End If
    Next ln
End Sub

A quoi sert ?

Dim ln, lgn, derLn, cell

Aussi, j'importe plusieurs lignes qui ont les colonnes de A à H et je rempli les colonnes de I à U, est-ce que ton code doit être le suivant :

Option Explicit

Dim ln, lgn, derLn, cell

Sub SupprimerLesDoublons()
    derLn = Range("A" & Rows.Count).End(xlUp).Row                   'On repère la dernière ligne du tableau de la colonne A
    For ln = derLn To 2 Step -1                                     'On va examiner toutes les lignes du tableau en commençant par la dernière et en remontant
        If Range("I" & ln) = "" And Range("J" & ln) = "" And Range("K" & ln) = ""And Range("L" & ln) = ""And Range("M" & ln) = ""And Range("N" & ln) = ""And Range("O" & ln) = ""And Range("P" & ln) = ""And Range("Q" & ln) = ""And Range("R" & ln) = ""And Range("S" & ln) = ""And Range("T" & ln) = ""And Range("U" & ln) = "" Then       'On regarde si sur cette ligne (ln), les colonnes C et D sont vides
            For lgn = 2 To derLn                                    'Si oui, on passe toutes les lignes depuis cette ligne (lgn) jusqu'à la dernière
                If Range("A" & lgn) = Range("A" & ln) And Range("B" & lgn) = Range("B" & ln) Then   'Et on regarde si la ligne lgn colonne A egale la ligne lgn colonne B
                    If ln <> lgn Then                               'Si oui, on regarde encore que ln et lgn sont 2 lignes différentes
                        Rows(ln & ":" & ln).Delete shift:=xlUp      'Et si la réponse est encore oui, alors on supprime la ligne
                    End If
                End If
            Next lgn
        End If
    Next ln
End Sub

Par contre je ne vois pas comment ecrire cette partie ?

                If Range("A" & lgn) = Range("A" & ln) And Range("B" & lgn) = Range("B" & ln) Then   'Et on regarde si la ligne lgn colonne A egale la ligne lgn colonne B

Comme cela (à tester...)

                If Range("A" & lgn) = Range("A" & ln) And Range("B" & lgn) = Range("B" & ln) _
                        and Range("C" & lgn) = Range("C" & ln) And Range("D" & lgn) = Range("D" & ln) _
                        and Range("E" & lgn) = Range("E" & ln) And Range("F" & lgn) = Range("F" & ln) _
                        and Range("G" & lgn) = Range("G" & ln) And Range("H" & lgn) = Range("H" & ln) Then   'Et on regarde...
leon8121 a écrit :

A quoi sert ?Code: Tout sélectionnerDim ln, lgn, derLn, cell

Cela sert à déclarer les variables et à éviter de donner le même nom à deux variables différentes.

Pour bien faire, il faut même définir le type des variables en mettant, par exemple, ''cell as Range'' car, par défaut, les variables sont de type ''Variant''.

OK ?

Bye !

Yes Super, ça fonctionne !

Merci bcp pour ton aide.

Rechercher des sujets similaires à "supprimer doublon sauf"