1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
'appelle une fonction qui retourne un tableau (CalculRetourTableau)
Sub TraitementA()
Dim MySheet2 As Worksheet
Dim Z As Double
Dim MyTabSpot() '<-- Variant pour affecter directement un range
Dim MyTabK() '<-- Variant pour affecter directement un range
Dim MyTabA() As Double
Set MySheet2 = Worksheets("Sheet2")
With MySheet2
Z = .Range("B1")
MyTabSpot = .Range(.Cells(3, 2), .Cells(3, 7)) 'ligne 3 de B3 à G3
MyTabK = .Range(.Cells(4, 1), .Cells(9, 1)) 'colonne A de A4 à A9
'appel de la fonction
MyTabA = CalculRetourTableau(MyTabSpot, MyTabK, Z)
'inscrit le résultat dans le Range
.Range(.Cells(4, 2), .Cells(UBound(MyTabA, 2) + 3, UBound(MyTabA, 1) + 1)) = MyTabA
End With
End Sub
'la fonction "CalculRetourTableau" retourne un tableau, elle est appelée une seule fois
Public Function CalculRetourTableau(S(), K(), Z As Double) As Double()
Dim Tbl() As Double
Dim I As Integer
Dim J As Integer
ReDim Tbl(1 To UBound(S, 2), 1 To UBound(K, 1))
For I = 1 To UBound(S, 2)
For J = 1 To UBound(K, 1)
Tbl(J, I) = S(1, I) * K(J, 1) * Z
Next J
Next I
CalculRetourTableau = Tbl
End Function |
Partager