Dim bench As cBenchmark
Sub test2()
    Dim tx(1 To 50000, 1 To 100) 'même dimension que dudu2 avec application transpose
    Set bench2 = New cBenchmark
    bench2.TrackByName "debut de transposition avec vba transpose version patricktoulon"
    T2 = TransposeXV1(tx, 0)
    texte = "Avant" & vbCrLf & "base dim 1 : " & LBound(tx) & vbCrLf & "base dim 2 : " & LBound(tx, 2) & vbCrLf
    bench2.TrackByName "fin de transposition avec vba transpose version patricktoulon"
    MsgBox texte & "Après" & vbCrLf & "base dim 1 : " & LBound(T2) & vbCrLf & "base dim 2 : " & LBound(T2, 2)
End Sub
Function TransposeXV1(t, Optional lBase& = -1)
    'patricktoulon    V 1.2 -- 08/07/2021
    'Ajout du change base V1.2.1 -- 08/12/2024  méthode Addition nombre relatif
    Dim y&, i&, C&, T2(), b1&, b2&
    If lBase > 1 Then lBase = 0 ' au cas ou il vous prendrez l'envie de faire n'importe quoi
    On Error Resume Next
    y = UBound(t, 2)
    On Error GoTo 0
    'b1 et b2 deviendront les reducteurs ou augmenteur de dimension (++/+-) selon lBase
    If lBase > -1 Then b1 = Sgn(lBase - LBound(t))
    If y = 0 Then
        On Error GoTo 0
        ReDim T2(LBound(t) + b1 To UBound(t) + b1, LBound(t) + b1 To LBound(t) + b1)
    Else
        If lBase > -1 Then b2 = Sgn(lBase - LBound(t, 2))
        ReDim T2(LBound(t, 2) + b2 To UBound(t, 2) + b2, LBound(t) + b1 To UBound(t) + b1)
    End If
    For i = LBound(t) To UBound(t)
        If y = 0 Then
            T2(i + b1, 1) = t(i)
        Else
            For C = LBound(t, 2) To UBound(t, 2)
                T2(C + b2, i + b2) = t(i, C)
            Next
        End If
    Next
    TransposeXV1 = T2
End Function