Corriger doublons automatiquement

niala

XLDnaute Junior
Bonjour,
Dans un tableau excel, j'ai des doublons.
Je voudrai supprimer automatiquement ceux-ci par VBA.
Le problème est que certain doublons ne sont que dans la colonne A, d'autres dans les colonnes A et B.
Comment supprimer le doublon le moins complet ( uniquement dans la colonne A par exemple et conserver celui qui est en A et B)
Suis-je clair?
Merci de votre aide.
 

Pièces jointes

  • Classeur1.xlsm
    15.7 KB · Affichages: 58
  • Classeur1.xlsm
    15.7 KB · Affichages: 63
  • Classeur1.xlsm
    15.7 KB · Affichages: 65

jpb388

XLDnaute Accro
Re : Corriger doublons automatiquement

Bonjour à tous
à tester
Code:
Sub Doublon()
    Range("A1:D10").Select
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SortFields.Clear
        .SortFields.Add Range("A2:A10"), xlSortOnValues, Ascending, xlSortNormal
        .SortFields.Add Range("B2:B10"), xlSortOnValues, xlAscending, xlSortNormal
        .SortFields.Add Range("C2:C10"), xlSortOnValues, xlAscending, xlSortNormal
        .SortFields.Add Range("D2:D10"), xlSortOnValues, xlAscending, xlSortNormal
        .SetRange Range("A1:D10")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveSheet.Range("$A$1:$D$10").RemoveDuplicates Columns:=1, Header:=xlYes
End Sub
 

niala

XLDnaute Junior
Re : Corriger doublons automatiquement

Re,
Le fichier en attaché.
Problème, lorsque je lance la macro, il me supprime le nom identique avec pourtant un prénom différent.
 

Pièces jointes

  • Classeur1.xlsm
    17.8 KB · Affichages: 41
  • Classeur1.xlsm
    17.8 KB · Affichages: 37
  • Classeur1.xlsm
    17.8 KB · Affichages: 40

laetitia90

XLDnaute Barbatruc
Re : Corriger doublons automatiquement

bonjour niala , jpb388 :)

si beaucoup de lignes passer par un tablo & dico



j'ai change le code pas bon par celui la

Code:
Sub es()
 Dim m As Object, i As Long, z As Variant, x As Byte, y As Byte
      Application.ScreenUpdating = 0
    Range("$A$2:$D$" & Cells(Rows.Count, 1).End(3).Row).RemoveDuplicates Columns:=Array(1, 2, 3, 4)
    [a2:d1000].Sort Key1:=[a2], Order1:=xlAscending, Header:=xlGuess
    Set m = CreateObject("Scripting.Dictionary")
    For i = Cells(Rows.Count, 1).End(3).Row To 2 Step -1
    z = Cells(i, 1) & Cells(i, 2)
    If Not m.Exists(z) Then
     m.Add z, z
     Else
     x = Application.WorksheetFunction.CountA(Range(Cells(i, 1), Cells(i, 4)))
     y = Application.WorksheetFunction.CountA(Range(Cells(i + 1, 1), Cells(i + 1, 4)))
    If y < x Then Rows(i + 1).Delete Else Rows(i).Delete
    End If
   Next i
End Sub
 
Dernière édition:

niala

XLDnaute Junior
Re : Corriger doublons automatiquement

Bonsoir Laetitia90 et jpb388,
Grand merci à tous les deux.
ça marche impec.
J'ai effectivement beaucoup de lignes et la macro de Laetitia est un poil plus rapide.
Bonne soirée à tous les deux
Sympa de m'avoir aidé.
A+
Alain
 

Discussions similaires

Réponses
10
Affichages
452

Statistiques des forums

Discussions
312 379
Messages
2 087 761
Membres
103 661
dernier inscrit
fcleves