VBA erreur dépassement de capacité bizarre

VBA erreur dépassement de capacité bizarre - VB/VBA/VBS - Programmation

Marsh Posté le 04-05-2015 à 07:56:19    

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 :
  1. Private Sub CommandButton_valider_Click()
  2. 'Determine le nb de la derrniere cellule de la column des prix
  3.        Dim i As Integer
  4.        Dim random_number As Double
  5.        Dim a As Double
  6.      
  7.      
  8. Dim derniereligne, premiereligne As Integer
  9. derniereligne = Range("B" & Rows.Count).End(xlUp).Row
  10. ' si l'utilisateur rentre rien dans le formulaire donc montre un message
  11.   If Initial.Value = "" Then
  12. MsgBox "Entrez une valeur"
  13.  
  14.       ElseIf IsNumeric(Initial.Value) = False Then
  15.     MsgBox "Le Montant initial doit tres un nombre"
  16.            ' if the above conditions is checked then affect the input values into the sheet 1
  17.                            
  18. ' initialisation du portfeuille ˆ la date t 0 au prix de l'action ˆ la date t0
  19. ElseIf TextBox3.Value = "" Then
  20. MsgBox "entrez un ticker"
  21. ElseIf TextBox2.Value = "" Then
  22. MsgBox "saisissez une date"
  23. ElseIf TextBox1.Value = "" Then
  24. MsgBox "saisissez une date"
  25. ElseIf IsDate(TextBox1.Value) = False Or IsDate(TextBox2.Value) = False Then
  26. MsgBox "saisissez une date valide"
  27. Else
  28. Range("k2" ).Value = Mon_userform.TextBox2.Value
  29. Range("k1" ).Value = Mon_userform.TextBox3.Value
  30. Range("k3" ).Value = Mon_userform.TextBox1.Value
  31. a = getdata()
  32. 'Range("B3" ).Value = Mon_userform.TextBox3.Value
  33. Range("F3" ).Value = Mon_userform.Initial.Value ' la valeur du portfeuille au dŽbut est Žgale ˆ un fixŽ dans la textbox
  34. Range("G3" ).Value = Mon_userform.Initial.Value ' la valeur du portfeuille au dŽbut est Žgale ˆ un fixŽ dans la textbox
  35. Range("F3" ).NumberFormat = "0"
  36. 'Range("K1" ).Value = Mon_userform.TextBox1.Value
  37. 'Range("K2" ).Value = Mon_userform.TextBox2.Value
  38. Range("B2" ).Value = Mon_userform.TextBox3.Value
  39. ' Calcul de rendement
  40. For i = 3 To derniereligne - 1
  41. Cells(i + 1, 3).Value = (Cells(i + 1, 2).Value - Cells(i, 2).Value) / Cells(i, 2).Value
  42. Cells(i + 1, 3).NumberFormat = "0.0000, %" ' format %
  43. Next i
  44. 'stratgie ŽlaborŽ
  45. 'naviguer de ligne dans ligne sur la colone rendement
  46. For i = 3 To derniereligne - 1
  47. 'si le rendement est positif on vend l'asset
  48. If (Cells(i + 1, 3).Value > 0) Then
  49. Cells(i + 1, 6).Value = -(Cells(i + 1, 2).Value)
  50. Else 'sinon si il est nŽgatif on l'achete
  51. Cells(i + 1, 6).Value = Cells(i + 1, 2).Value
  52. End If
  53. Next i
  54. 'strategie alŽatoire
  55. For i = 3 To derniereligne
  56. random_number = Rnd
  57. If (random_number > 0.5) Then
  58. Cells(i + 1, 7).Value = -(Cells(i + 1, 2).Value)
  59. Else 'sinon si il est nŽgatif on l'achete
  60. Cells(i + 1, 7).Value = Cells(i + 1, 2).Value
  61. End If
  62. Next i
  63. 'somme des positions strategie elaborŽ
  64. Cells(derniereligne + 1, 6).Value = Application.Sum(Range("F3" ).EntireColumn)
  65. 'somme des positions strategie alŽatoire
  66. Cells(derniereligne + 1, 7).Value = Application.Sum(Range("G3" ).EntireColumn)
  67.     ' Difference de gain entre les deux stratŽgies
  68.     For i = 4 To derniereligne
  69. Cells(i, 8).Value = (Cells(i, 6).Value) - (Cells(i, 7).Value)
  70. Next i
  71. Cells(derniereligne + 1, 8).Value = (Cells(derniereligne + 1, 6).Value) - (Cells(derniereligne + 1, 7).Value)

Reply

Marsh Posté le 04-05-2015 à 07:56:19   

Reply

Marsh Posté le 04-05-2015 à 10:49:44    

 
           Bonjour,
 
           avec un code incomplet et sans les données, difficile de répondre …
 
           Le mieux est de suivre la progression du code en mode pas à pas via la touche F8
           tout en contrôlant le contenu de la fenêtre des Variables locales
 
           _____________________________________________________________________
           Je suis Charlie   -   Je suis Bardo
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed