Suppression des doublons sur 2 colonnes (1ère colonne= ok)

Bonjour,

Je souhaite améliorer ma macro VBA pour supprimer les doublons.

Il y a 3 colonnes:

"A" contient l'âge,

"B" contient le numéro.

"C" contient le produit.

Je souhaite supprimer le doublon en "B" et mettre les produits sur la même ligne (c'est-à-dire en colonne "C", "D", "E" etc.) pour les lignes que je supprime.

J'ai réussi à faire cette étape.

La deuxième condition est sur la colonne "A" qui contient la date de naissance.

1. si le doublon en "B" contient la même date de naissance en "A" (doublon en "A") donc je supprime le doublon.

2. mais si y a un doublon en "B" et la date de naissance en "A" est différente, alors ne pas supprimer.

En résumé je souhaite supprimer les doublons en "B" qui ont la même date de naissance en "A".

Exemple:

B2=B3=B4.

A2=A3 mais A4 a un numéro différent. Donc je voudrai supprimer le doublon en "B2" et "B3" et garder "B4".

Je voudrai comme résultat par exemple :

Garde les lignes 2 et 4.

Ci-joint un fichier avec mon code vba.

Merci pour votre aide précieuse.

Option Explicit

Private Sub SupprimerDoublons_Click()

Dim DerLig As Long, Ligne As Long

Dim C As Range

Application.ScreenUpdating = False

DerLig = Range("A" & Rows.Count).End(xlUp).Row

For Ligne = DerLig To 2 Step -1

If Application.CountIf(Range("B2:B" & DerLig), Range("B" & Ligne).Value) > 1 Then

Set C = Columns(2).Find(Range("B" & Ligne).Value, , xlValues, xlWhole, , xlNext)

If Not C Is Nothing Then

Range("C" & Ligne).Copy Cells(C.Row, 1).End(xlToRight).Offset(0, 1)

Rows(Ligne).Delete

End If

End If

Next Ligne

End Sub

Bonjour et bienvenue sur le forum

Si ton problème est toujours d’actualité, teste cette modification de ta macro qui ajoute une condition :

Option Explicit
Private Sub SupprimerDoublons_Click()
Dim DerLig As Long, Ligne As Long
Dim C As Range
    Application.ScreenUpdating = False
    DerLig = Range("A" & Rows.Count).End(xlUp).Row
    For Ligne = DerLig To 2 Step -1
        If Application.CountIf(Range("B2:B" & DerLig), Range("B" & Ligne).Value) > 1 Then
            Set C = Columns(2).Find(Range("B" & Ligne).Value, , xlValues, xlWhole, , xlNext)
            If Not C Is Nothing Then
                If Cells(Ligne, "A").Value = C.Offset(0, -1).Value And C.Row < Ligne Then
                    Range("C" & Ligne).Copy Cells(C.Row, 1).End(xlToRight).Offset(0, 1)
                    Rows(Ligne).Delete
                End If
            End If
        End If
    Next Ligne
End Sub
Bye !

Merci pour ton prgramme.

Il fonctionne très bien.

Bonne journée!

Rechercher des sujets similaires à "suppression doublons colonnes 1ere colonne"