Sub test()
Dim t, i&, j&, n&
t = Range(Range("a3"), Range("a3").End(xlToRight).End(xlDown))
ReDim r(1 To 1 + (UBound(t, 2) - 3) * (UBound(t) - 1), 1 To 5)
r(1, 1) = t(1, 1): r(1, 2) = t(1, 2): r(1, 3) = t(1, 3): r(1, 4) = "Type Bonus": r(1, 5) = "Montant"
n = 1
For i = 2 To UBound(t)
For j = 4 To UBound(t, 2)
n = n + 1
r(n, 1) = t(i, 1): r(n, 2) = t(i, 2): r(n, 3) = t(i, 3): r(n, 4) = t(1, j): r(n, 5) = t(i, j)
Next j
Next i
Cells(1, UBound(t, 2) + 2).EntireColumn.Resize(, 5).Delete
Cells(1, UBound(t, 2) + 2).Resize(n, 5) = r
End Sub