Option Explicit
Public Function DécoupeLignes(ByVal Src, ByVal NbCol As Integer, Optional ByVal ValDéf) As Variant()
If IsMissing(ValDéf) Then ValDéf = CVErr(xlErrNA)
CalcDécLig DécoupeLignes, Src, NbCol, ValDéf
End Function
Private Function CalcDécLig(TR(), ByVal Src, ByVal NbCol As Integer, ByVal ValDéf)
Dim V, C As Integer, L As Long
If TypeOf Src Is Range Then Src = Src.Value
ReDim TR(1 To (UBound(Src, 1) * UBound(Src, 2 + NbCol - 1) \ NbCol, 1 To NbCol)
For Each V In Src
C = C Mod NbCol + 1: If C = 1 Then L = L + 1
TR(L, C) = V
Next V
Do While C < NbCol: C = C + 1: TR(L, C) = ValDéf: Loop
End Function