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: