Salut à tous
Je vous explique deja le contexte:
J'ai une feuille excel.
Colonne A des dates,
colonne B des chiffres (qui correspondent à des cours d'action, mais peut importe)
Je dois donc déclarer une matrice qui devra stocker le résultat de la formule suivante : (cours date t - cours date t-1)/ cours date t-1
et ainsi de suite pour toutes les dates (donc toutes les lignes)
Je ne sais pas comment remplir ma matrice.
Je ne sais pas si j'ai été tres clair... mais n'hésitez pas à me demander des précisions.
E:
Matrix
Bollinger
Factorielle
Spot
Classe spot:
Je vous explique deja le contexte:
J'ai une feuille excel.
Colonne A des dates,
colonne B des chiffres (qui correspondent à des cours d'action, mais peut importe)
Je dois donc déclarer une matrice qui devra stocker le résultat de la formule suivante : (cours date t - cours date t-1)/ cours date t-1
et ainsi de suite pour toutes les dates (donc toutes les lignes)
Je ne sais pas comment remplir ma matrice.
Je ne sais pas si j'ai été tres clair... mais n'hésitez pas à me demander des précisions.
E:
Matrix
Code:
Option Base 0
Sub main()
Dim matrixA() As Integer
Dim matrixB() As Integer
Dim nb_execussions As Integer
Dim average_time As Double
Dim start_time As Double
Dim i As Integer
Worksheets("matrix").Activate
nb_execussions = 10000
matrixA = load_matrix()
start_time = Timer
For i = 1 To nb_execussions
matrixB = get_cumulative_matrix(matrixA)
Next i
average_time = (Timer - start_time) / nb_execussions
Range(Cells(2, 13), Cells(11, 22)).Value2 = matrixB
Range("T13") = average_time
End Sub
Function load_matrix()
Dim nb_rows, i, j As Integer
Dim matrix() As Integer
nb_rows = Range("B2").End(xlDown).Row - 1
ReDim matrix(nb_rows - 1, nb_rows - 1)
For i = 1 To nb_rows
For j = 1 To nb_rows
matrix(i - 1, j - 1) = Cells(i + 1, j + 1)
Next j
Next i
load_matrix = matrix
End Function
Function get_cumulative_matrix(matrix)
Dim nb_rows, i, j, k, l As Integer
Dim sum As Double
Dim cumulative_matrix() As Integer
nb_rows = UBound(matrix)
ReDim cumulative_matrix(nb_rows, nb_rows)
For i = 0 To nb_rows
For j = i To nb_rows
sum = 0
For k = j To nb_rows
For l = i To 0 Step -1
sum = sum + matrix(l, k)
Next l
Next k
cumulative_matrix(i, j) = sum
cumulative_matrix(j, i) = sum
Next j
Next i
get_cumulative_matrix = cumulative_matrix
End Function
Bollinger
Code:
Sub main()
Dim mm As Integer
Dim derniere_ligne As Integer
mm = 20
Worksheets("bollinger").Activate
derniere_ligne = Range("A1").End(xlDown).Row
Range(Cells(2, 3), Cells(derniere_ligne, 5)).ClearContents
Range(Cells(mm + 1, 3), Cells(derniere_ligne, 3)).FormulaR1C1 = "=AVERAGE(R[" & -mm + 1 & "]C2:RC2)"
Range(Cells(mm + 1, 4), Cells(derniere_ligne, 4)).FormulaR1C1 = "=RC3 - 2 * STDEV(R[" & -mm + 1 & "]C2:RC2)"
Range(Cells(mm + 1, 5), Cells(derniere_ligne, 5)).FormulaR1C1 = "=RC3 + 2 * STDEV(R[" & -mm + 1 & "]C2:RC2)"
End Sub
Factorielle
Code:
Function factorielle(n)
If n = 1 Then
factorielle = 1
Else
factorielle = n * factorielle(n - 1)
End If
End Function
Spot
Code:
Sub main()
Dim my_spot As spot
Dim nb_periods, i As Integer
Worksheets("spots").Activate
Cells.ClearFormats
nb_periods = 250
For i = 1 To 5
Set my_spot = New spot
my_spot.run (nb_periods)
Next i
End Sub
Classe spot:
Private x_, y_, color_ As Integer
Sub run(nb_periods)
For i = 1 To nb_periods
Call next_step
Cells(x_, y_).Interior.ColorIndex = color_
Next i
End Sub
Private Sub next_step()
Randomize
If Rnd() > 0.5 Then
x_ = x_ + 1
Else
x_ = x_ - 1
End If
y_ = y_ + 1
End Sub
Private Sub Class_Initialize()
x_ = 100
y_ = 1
color_ = Int(10 + Rnd() * 50)
Cells(x_, y_).Interior.ColorIndex = color_
End Sub
Dernière édition: