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.
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.
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 ?
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 SubA quoi sert ?
Dim ln, lgn, derLn, cellAussi, 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 SubPar 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 BComme 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.