Bonjour,
Tu as plusieurs solutions,
- la méthode "AdvancedFilter" de l'objet "Range" qui te permet de filtrer les doublons et avec l'aide d'une feuille intermédiaire de les supprimer définitivement (exporter et rapatrier), c'est ce que je te conseille car probablement le plus rapide (voir code ci-dessous que j'ai proposé dans un autre post). Ici, est considéré comme doublon les données strictement identiques sur toute la ligne dans toutes les cellules
- l'utilisation de l'objet Dictionnaire (Dictionary)
- l'utilisation de boucles de comparaisons
Sub Test()
Dim Plage As Range
'défini la plage sur la feuille "Feuil1" à partir de A1...
Set Plage = DefPlage(Worksheets("Feuil1"), 1, 1)
'...puis filtre les doublons en copiant le résultat sur la feuille "Feuil2" à partir de A1
Plage.AdvancedFilter xlFilterCopy, , Worksheets("Feuil2").Range("A1"), True
Plage.AutoFilter
'supprime tout ce qui se trouve sur la feuille "Feuil1"
Worksheets("Feuil1").Cells.Clear
'redéfini la plage sur la feuille "Feuil2"
Set Plage = DefPlage(Worksheets("Feuil2"), 1, 1)
'transfère les valeurs de Feuil2 à Feuil1
With Worksheets("Feuil1"): .Range(.Cells(1, 1), .Cells(Plage.Rows.Count, Plage.Columns.Count)).Value = Plage.Value: End With
'puis vide Feuil2
Worksheets("Feuil2").Cells.Clear
End Sub
Function DefPlage(Fe As Worksheet, Optional L As Long = 1, Optional C As Long = 1) As Range
On Error GoTo Fin
With Fe
Set DefPlage = .Range(.Cells(L, C), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End With
Exit Function
Fin:
Set DefPlage = Nothing
End Function