Bonjour,
Un exemple tout simple (comme le dit klin89, par défaut, les arguments en VB sont passer par référence) :
Sub Test()
Dim Tbl() As Single
Dim I As Long
For I = 1 To 3
ReDim Preserve Tbl(1 To 3, 1 To I)
Tbl(1, I) = I * 5.7
Tbl(2, I) = I * 10.5
Tbl(3, I) = I * 15.3
Next I
ProcA Tbl()
ProcB Tbl()
ProcC Tbl()
End Sub
Sub ProcA(Tbl() As Single)
Dim I As Long
For I = 1 To UBound(Tbl, 2)
Tbl(1, I) = Tbl(1, I) * 2
Tbl(2, I) = Tbl(2, I) * 2
Tbl(3, I) = Tbl(3, I) * 2
Next I
End Sub
Sub ProcB(Tbl() As Single)
Dim I As Long
For I = 1 To UBound(Tbl, 2)
If Tbl(1, I) > 15 Then Tbl(1, I) = Tbl(1, I) / 3
If Tbl(2, I) > 15 Then Tbl(2, I) = Tbl(2, I) / 3
If Tbl(3, I) > 15 Then Tbl(3, I) = Tbl(3, I) / 3
Next I
End Sub
Sub ProcC(Tbl() As Single)
Range(Cells(1, 1), Cells(UBound(Tbl, 1), UBound(Tbl, 2))).Value = Tbl()
End Sub