Sub SupDoublonsEtTri()
Dim Col As Long, ColTmp As Long, NbCol As Long, NbLig As Long
' Dernière colonne
NbCol = Cells(1, Columns.Count).End(xlToLeft).Column
' Numéro de la colonne temporaire
ColTmp = NbCol + 1
' Pour chaque colonne
For Col = 1 To NbCol
' Dernière ligne de la colonne
NbLig = Cells(Rows.Count, Col).End(xlUp).Row
' Filtrer sans doublon
Range(Cells(1, Col), Cells(NbLig, Col)).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
' Copier les données dans la colonne temporaire
Range(Cells(1, Col), Cells(NbLig, Col)).Copy Destination:=Cells(1, ColTmp)
' Supprimer le filtre
On Error Resume Next
ActiveSheet.ShowAllData
On Error GoTo 0
' Effacer le contenu de la colonne
Range(Cells(1, Col), Cells(NbLig, Col)).ClearContents
' Coller le résultat de la colonne temporaire
Columns(ColTmp).Copy Destination:=Columns(Col)
' Effacer le contenu de la colonne temporaire
Columns(ColTmp).ClearContents
' Trier le résultat
With ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add Key:=Columns(Col), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Columns(Col)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' Colonne suivante
Next Col
End Sub