Sub Transposer1()
Application.ScreenUpdating = False
Set dico = CreateObject("Scripting.Dictionary")
With Feuil1
.Range("D1") = "Pointures"
.Range("E1") = "Noms"
For Each c In .Range("A2:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
dico(c.Value) = dico(c.Value) & c.Offset(, 1) & ";"
Next c
B = dico.keys
DerLig = 2
For i = LBound(B) To UBound(B)
A = Split(dico.Item(B(i)), ";")
'renvoie les données
Dim T()
ReDim T(1 To UBound(A), 1 To 1)
For j = 0 To UBound(A) - 1
T(j + 1, 1) = A(j)
Next j
If UBound(T) Mod 5 = 0 Then
NbreBloc = UBound(T) \ 5
Else
NbreBloc = UBound(T) \ 5 + 1
End If
Dim Tablo()
ReDim Tablo(1 To NbreBloc, 1 To 5)
For j = 1 To UBound(T)
Tablo((j - 1) \ 5 + 1, (j - 1) Mod 5 + 1) = T(j, 1)
Next
.Cells(DerLig, "E").Resize(NbreBloc, 5) = Tablo
.Cells(DerLig, "D").Resize(NbreBloc, 1) = B(i)
DerLig = .Range("D" & .Rows.Count).End(xlUp).Row + 1
Next i
End With
Application.ScreenUpdating = True
End Sub