Suppression ligne en doublon
n
Bonsoir a tous et merci pour votre aide
je souhaiterai supprimer par VBA les lignes en doublon dans la colonne A de mon fichier joint.
j'ai mis en sheet 2 le resultat que je souhaiterai.
merci beaucoup pour votre aide
v
Bonsoir nicroq,
Une solution très rapide en utilisant un dictionnaire (Dictionary). Mais pas de formatage des cellules...
Sub suppDoublons()
Dim tblSource, tblCible()
Dim ongletSource As String, ongletCible As String
Dim dicoNom As Object
Dim i As Long, j As Long, cpt As Long
ongletSource = "Feuil1"
ongletCible = "Feuil2"
tblSource = Sheets(ongletSource).Range("A12").CurrentRegion.Value2
'on crée un tableau cible de même dimension (même s'il contiendra probablement moins de données)
ReDim tblCible(LBound(tblSource) To UBound(tblSource), LBound(tblSource, 2) To UBound(tblSource, 2))
'on va créer un dictionnaire pour stocker la liste de noms sans doublons
Set dicoNom = CreateObject("scripting.dictionary")
For i = LBound(tblSource) To UBound(tblSource)
'si le nom parcouru n'existe pas encore dans le dico, on stocke la ligne et on ajoute le nom au dico
If Not dicoNom.exists(tblSource(i, 1)) Then
dicoNom(tblSource(i, 1)) = "" 'ajoute le nom au dico
cpt = cpt + 1
For j = LBound(tblSource, 2) To UBound(tblSource, 2)
tblCible(cpt, j) = tblSource(i, j)
Next
End If
Next i
'désactive la mise à jour de l'écran
Application.ScreenUpdating = False
With Sheets(ongletCible).Range("A12")
.CurrentRegion.Clear 'RAZ de la zone cible
'copie des valeurs sans doublons (seule la première est conservée)
.Resize(cpt, UBound(tblSource, 2) - LBound(tblSource, 2) + 1).Value2 = tblCible
End With
End Sub