dbm7 | Bonjour,
Je rencontre un gros problème dur mon projet VBA, un problème plutôt bizarre à vrai dire. Tout d'abord le code sert à extraire des données historiques d'action à partir de Yahoo et calculer le rendement ainsi qu'un différence de gain entre deux stratégie, bref le problème c'est que quand je remplis mon formulaire et que je lance la macro elle ne s’exécute que pour quelques lignes et si je re remplis le formulaire avec les même données et bien là sa le fais jusqu'au boute et correctement. Quelqu'un aurait une idée ? Merci d'avance
Code :
- Private Sub CommandButton_valider_Click()
- 'Determine le nb de la derrniere cellule de la column des prix
- Dim i As Integer
- Dim random_number As Double
- Dim a As Double
-
-
- Dim derniereligne, premiereligne As Integer
- derniereligne = Range("B" & Rows.Count).End(xlUp).Row
- ' si l'utilisateur rentre rien dans le formulaire donc montre un message
- If Initial.Value = "" Then
- MsgBox "Entrez une valeur"
-
- ElseIf IsNumeric(Initial.Value) = False Then
- MsgBox "Le Montant initial doit tres un nombre"
- ' if the above conditions is checked then affect the input values into the sheet 1
-
- ' initialisation du portfeuille ˆ la date t 0 au prix de l'action ˆ la date t0
- ElseIf TextBox3.Value = "" Then
- MsgBox "entrez un ticker"
- ElseIf TextBox2.Value = "" Then
- MsgBox "saisissez une date"
- ElseIf TextBox1.Value = "" Then
- MsgBox "saisissez une date"
- ElseIf IsDate(TextBox1.Value) = False Or IsDate(TextBox2.Value) = False Then
- MsgBox "saisissez une date valide"
- Else
- Range("k2" ).Value = Mon_userform.TextBox2.Value
- Range("k1" ).Value = Mon_userform.TextBox3.Value
- Range("k3" ).Value = Mon_userform.TextBox1.Value
- a = getdata()
- 'Range("B3" ).Value = Mon_userform.TextBox3.Value
- Range("F3" ).Value = Mon_userform.Initial.Value ' la valeur du portfeuille au dŽbut est Žgale ˆ un fixŽ dans la textbox
- Range("G3" ).Value = Mon_userform.Initial.Value ' la valeur du portfeuille au dŽbut est Žgale ˆ un fixŽ dans la textbox
- Range("F3" ).NumberFormat = "0"
- 'Range("K1" ).Value = Mon_userform.TextBox1.Value
- 'Range("K2" ).Value = Mon_userform.TextBox2.Value
- Range("B2" ).Value = Mon_userform.TextBox3.Value
- ' Calcul de rendement
- For i = 3 To derniereligne - 1
- Cells(i + 1, 3).Value = (Cells(i + 1, 2).Value - Cells(i, 2).Value) / Cells(i, 2).Value
- Cells(i + 1, 3).NumberFormat = "0.0000, %" ' format %
- Next i
- 'stratgie ŽlaborŽ
- 'naviguer de ligne dans ligne sur la colone rendement
- For i = 3 To derniereligne - 1
- 'si le rendement est positif on vend l'asset
- If (Cells(i + 1, 3).Value > 0) Then
- Cells(i + 1, 6).Value = -(Cells(i + 1, 2).Value)
- Else 'sinon si il est nŽgatif on l'achete
- Cells(i + 1, 6).Value = Cells(i + 1, 2).Value
- End If
- Next i
- 'strategie alŽatoire
- For i = 3 To derniereligne
- random_number = Rnd
- If (random_number > 0.5) Then
- Cells(i + 1, 7).Value = -(Cells(i + 1, 2).Value)
- Else 'sinon si il est nŽgatif on l'achete
- Cells(i + 1, 7).Value = Cells(i + 1, 2).Value
- End If
- Next i
- 'somme des positions strategie elaborŽ
- Cells(derniereligne + 1, 6).Value = Application.Sum(Range("F3" ).EntireColumn)
- 'somme des positions strategie alŽatoire
- Cells(derniereligne + 1, 7).Value = Application.Sum(Range("G3" ).EntireColumn)
- ' Difference de gain entre les deux stratŽgies
- For i = 4 To derniereligne
- Cells(i, 8).Value = (Cells(i, 6).Value) - (Cells(i, 7).Value)
- Next i
- Cells(derniereligne + 1, 8).Value = (Cells(derniereligne + 1, 6).Value) - (Cells(derniereligne + 1, 7).Value)
|
|