Re : probléme programme VBA
Merci beaucoup !
A chaque réponse une nouvelle question!
Je bloque sur un probléme d'itération!
Je trouve une variation du cours qui me permet de trouver mon RSI et mon RSI me permet de trouver mon cour de bourse. je voudrais que mon cours de bourse me permette de trouver mon nouveau RSI mais je n'arrive pas a faire fonctionner cette boucle.
Je joins mon code :J'ai essayé avec la boucle For l=0 to 10 pour avoir 10 nouveau cours mais ca m'affiche erreur d'execution '9' l'indice n'appartient pas à la selection.
Option Explicit
Sub testvariation()
'Nous donnes les variation relatives du cours.'
Dim a, b, z As String, l As Integer, variation, varhausse, nbrvarhausse, mhausse, varbaisse, nbrvarbaisse, mbaisse, RS, RSI As Single, i As Integer, coursaction, muu, sigma, delta As Double
For l = 0 To 10
For b = 2 To 36
For a = 3 + l To 50 + l
variation = Worksheets("cours").cells(a, b) - Worksheets("cours").cells(a - 1, b)
Debug.Print variation,
Worksheets("calcul intermédiare").cells(a, b - 1) = variation
Next
Next
For i = 1 To 35
cells(1, i) = "variation" & Worksheets("cours").cells(1, i + 1)
range(cells(1, 1), cells(1, 35)).Interior.Color = RGB(79, 128, 189)
range(cells(1, 1), cells(1, 35)).Font.ThemeColor = xlThemeColorDark1
Next
z = 3
For b = 2 To 36
For a = 3 + l To 41 + l
'Nous donnes les variations haussière relatives du cours.
varhausse = Application.SumIf(range(Worksheets("calcul intermédiaire").cells(a, b - 1), Worksheets("calcul intermédiaire").cells(a + 9, b - 1)), ">0")
'Nous donnes le nombre de variations haussières du cours.
nbrvarhausse = Application.CountIf(range(Worksheets("calcul intermédiaire").cells(a, b - 1), Worksheets("calcul intermédiaire").cells(a + 9, b - 1)), ">0")
If nbrvarhausse = 0 Then
nbrvarhausse = 1
End If
'Nous donnes la moyenne des hausses du cours
mhausse = varhausse / nbrvarhausse
'Nous donnes les variations baissières relatives du cours.
varbaisse = Abs(Application.SumIf(range(Worksheets("calcul intermédiaire").cells(a, b - 1), Worksheets("calcul intermédiaire").cells(a + 9, b - 1)), "<0"))
'Nous donnes le nombre de variations baissières du cours.
nbrvarbaisse = Application.CountIf(range(Worksheets("calcul intermédiaire").cells(a, b - 1), Worksheets("calcul intermédiaire").cells(a + 9, b - 1)), "<0")
If nbrvarbaisse = 0 Then
nbrvarbaisse = 1
End If
'Nous donnes la moyenne des moyennes du cours
mbaisse = varbaisse / nbrvarbaisse
If mbaisse = 0 Then
mbaisse = 1
End If
RS = mhausse / mbaisse
RSI = 100 - (100 / (1 + RS))
Worksheets("indicateurs techniques").cells(a + 9, b - 1) = RSI
Next
Next
For i = 1 To 35
cells(1, i) = "RSI" & Worksheets("cours").cells(1, i + 1)
range(cells(1, 1), cells(1, 35)).Interior.Color = RGB(79, 128, 189)
range(cells(1, 1), cells(1, 35)).Font.ThemeColor = xlThemeColorDark1
Next
sigma = 0.5
delta = 0.004
a = 50 + l
For b = 2 To 36
If Worksheets("indicateurs techniques").cells(a, b - 1) < 30 Then
muu = 10
ElseIf Worksheets("indicateurs techniques").cells(a, b - 1) > 50 Then
muu = 10
ElseIf Worksheets("indicateurs techniques").cells(a, b - 1) < 50 Then
muu = -20
ElseIf Worksheets("indicateurs techniques").cells(a, b - 1) > 70 Then
muu = -20
End If
coursaction = Worksheets("cours").cells(a, b) + muu * Worksheets("cours").cells(a, b) * delta + sigma * Worksheets("cours").cells(a, b) * Sqr(delta)
Worksheets("cours").cells(a + 1, b) = coursaction
Debug.Print coursaction,
Next
Next
End Sub
Merci beaucoup, j'ai passé la journée dessus, l'horreur!