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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
'PRODUIT de vecteurs
Function Prod_V(A, Na As Integer, B, Nb As Integer)
Dim i%, j%
'Dim Result() As Double
Dim Result() As Variant
ReDim Result(1 To Na, 1 To Nb)
For i = 1 To Na
For j = 1 To Nb
Result(i, j) = A(i, 1) * B(j, 1)
Next j
Next i
Prod_V = Result
End Function
'SOMME vecteur colonne distribué sur matrice : fonction qui a l'air de poser pb
Function Sum_VcM(V, Nv As Integer, M, Nm As Integer)
Dim i%, j%
Dim Result() As Variant
ReDim Result(1 To Nm, 1 To Nv)
For j = 1 To Nm
For i = 1 To Nv
Result(i, j) = M(i, j) + V(i, 1)
Next i
Next j
Sum_VcM = Result
End Function
' ma fonction qui appelle Sum_VcM :
Function Model_Dep(V1, V2, V3, NBag%, NBan%)
Dim prod_b_k() As Variant
ReDim prod_b_k(1 To NBag, 1 To NBan)
prod_b_k = Prod_V(V2, NBag, V3, NBan)
Model_Dep = Sum_VcM(V1, NBan, prod_b_k, NBag)
End Function
'L'appelle de ma fonction (tout à la fin de ma sub) :
Sub test()
Dim Log, NBag%, NBan%
Dim s_a() As Double
Dim mat() As Double
Dim mat1() As Variant
Dim Vect_tZZ As Variant
Dim Vect_ZtZ As Variant
Dim sum_vect_ZtZ As Double
Dim Val_pr_tZZ As Double
Dim coef As Double
Dim beta As Variant
Dim kappa As Variant
Log = Range("LogF")
NBag = Range("NBage")
NBan = Range("NBannée")
Vect_tZZ = Range("Vect_tZZ_1")
Vect_ZtZ = Range("Vect_ZtZ_1")
Val_pr_tZZ = Range("Val_pr_tZZ")
ReDim s_a(1 To NBag, 1 To 1)
ReDim mat(1 To NBag, 1 To NBan)
ReDim mat1(1 To NBan, 1 To NBag)
s_a = sum_alpha(Log, NBag, NBan)
mat = MatZ(s_a, NBag, Log, NBan)
mat1 = MattZ(mat, NBag, NBan)
sum_vect_ZtZ = WorksheetFunction.Sum(Vect_ZtZ)
coef = sum_vect_ZtZ * Val_pr_tZZ
beta = FDIV_VectC_Scal(Vect_ZtZ, NBag, sum_vect_ZtZ)
kappa = Fprod_VectC_Scal(Vect_tZZ, NBan, coef)
Sheets("Test").Range("B2:B101") = sum_alpha(Log, NBag, NBan)
Sheets("Test").Range("D3:I102") = MatZ(s_a, NBag, Log, NBan)
Sheets("Test2").Range("B2:CW7") = MattZ(mat, NBag, NBan)
Sheets("Test").Range("K3:P8") = Prod_M(mat1, mat, NBan, NBan, NBag)
Sheets("Test3").Range("B3:CW102") = Prod_M(mat, mat1, NBag, NBag, NBan)
Sheets("Beta_kappa").Range("B3") = WorksheetFunction.Sum(Vect_ZtZ)
Sheets("Beta_kappa").Range("D3:D102") = FDIV_VectC_Scal(Vect_ZtZ, NBag, sum_vect_ZtZ)
Sheets("Beta_kappa").Range("G3:G8") = Fprod_VectC_Scal(Vect_tZZ, NBan, coef)
Sheets("Modél_Dep_Amb_F").Range("B3:G102") = Model_Dep(s_a, beta, kappa, NBag, NBan)
End Sub |
Partager