Sub Macro1()
Dim o As Object 'déclare la variable o (Onglet)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim col As Range 'déclare la variable col (COLonne)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Dim d As Object 'déclare la variable d (Dictionnaire)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim tmp As Variant 'déclare la variable tmp (tableau TeMPoraire)
Set o = Sheets("Feuil1") 'définit l'onglet o
'tri alphabétique reçupéré par l'enregistreur de macro
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("J2:J60"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:M60")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
dl = o.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl = o.Range("A1:M" & dl) 'définit la plage pl
Set col = o.Range("J2:J" & dl) 'définit la colonne col
Set d = CreateObject("Scripting.Dictionary") 'définit le dictionanire d
For Each cel In col 'boucle sur toutes les cellules cel de la colonne col
d(cel.Value) = "" 'alimente le dictionnaire
Next cel 'prochaine cellule de la boucle
tmp = d.keys 'récupère les valeurs uniques (sans doublons) de la colonne col dans le tableau tmp
For i = 0 To UBound(tmp, 1) 'boucle sur toutes les valeurs uniques du tableau tmp
'définit la cellule des destination (à adapter à ton cas)
With Sheets("Feuil2") 'prend en compte l'onglet "Feuil2"
'définit la destination (A1 si A1 est vide, sinon la seconde cellule vide rencontrée en colonne A)
Set dest = IIf(.Range("A1").Value = "", .Range("A1"), .Cells(Application.Rows.Count, 1).End(xlUp).Offset(2, 0))
End With 'fin de la prise en compte de l'onglet "Feuil2"
o.Range("A1").AutoFilter Field:=10, Criteria1:=tmp(i) 'filtre par rapport à la valeur uniqie tmp(i)
pl.SpecialCells(xlCellTypeVisible).Copy dest 'copie les cellules visible de la plage pl et les colle dans dest
o.Range("A1").AutoFilter 'supprime le filtre automatique
Next i 'prochaine valeur inique de la boucle
End Sub