XL 2016 Supprimer les doublons qui commencent par…

virgie

XLDnaute Occasionnel
Bonjour,
J’ai un fichier dans lequel figure plusieurs fois diverses occurrences (« Auteur : … », « Livre : … », …).
Je souhaiterais supprimer les doublons dans ma feuille lorsque l’occurrence commence par le mot Auteur.
Savez-vous si cela est possible ??
Merci par avance pour vos réponses ☺️
 

job75

XLDnaute Barbatruc
Bonjour virgie, nat54, JHA,
Je souhaiterais supprimer les doublons dans ma feuille lorsque l’occurrence commence par le mot Auteur.
Voyez le fichier joint et les macros des boutons :
VB:
Sub Supprimer_doublons()
Dim ncol%, d As Object, tablo, resu(), i&, x$, flag As Boolean, n&, j%
ncol = 4 'nombre de colonnes
Set d = CreateObject("Scripting.Dictionary")
With Feuil1 'CodeName
    tablo = .Range("A1", .Range("A" & .Rows.Count).End(xlUp)).Resize(, ncol)  'matrice, plus rapide
    ReDim resu(1 To UBound(tablo), 1 To ncol)
    For i = 2 To UBound(tablo)
        x = tablo(i, 1)
        flag = False
        If x Like "Auteur*" Then
            If Not d.Exists(x) Then
                d(x) = ""
                n = n + 2
                flag = True
            End If
        ElseIf x Like "Livre*" Then
            n = n + 2
            flag = True
        ElseIf x <> "" Then
            n = n + 1
            flag = True
        End If
        If flag Then For j = 1 To ncol: resu(n, j) = tablo(i, j): Next j
    Next i
    With .[A2]
        If n Then .Resize(n, ncol) = resu
        .Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).ClearContents 'RAZ en dessous
    End With
End With
End Sub

Sub Réinitialiser()
Feuil2.[A:D].Copy Feuil1.[A1]
End Sub
Les lignes vides de séparation sont conservées.

La macro est très rapide car elle utilise des tableaux VBA et le Dictionary.

A+
 

Pièces jointes

  • test(1).xlsm
    21.9 KB · Affichages: 3

Discussions similaires

Réponses
26
Affichages
1 K
Réponses
7
Affichages
543

Statistiques des forums

Discussions
314 487
Messages
2 110 121
Membres
110 677
dernier inscrit
volare