Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3038 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA erreur dépassement de capacité bizarre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA erreur dépassement de capacité bizarre

n°2257273
dbm7
Posté le 04-05-2015 à 07:56:19  profilanswer
 

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)

mood
Publicité
Posté le 04-05-2015 à 07:56:19  profilanswer
 

n°2257283
Marc L
Posté le 04-05-2015 à 10:49:44  profilanswer
 

 
           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
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA erreur dépassement de capacité bizarre

 

Sujets relatifs
VBA : Compter le nombre de fichiers PDF dans des sous-dossiersSelection plage de données VBA
Copie coller avec VBA deux fichiers différentsBesoin d'aide Algorithmes VBA
VBA EXCEL impossible de modifier le contenu d'une celluleVBA excel Consolidation de données
VBA EXCEL exportation de donnée vers une BDEXCEL VBA Liaison Excel Base de donnée toute simple
telechargement de fichier (ERREUR double En-têtes ) 
Plus de sujets relatifs à : VBA erreur dépassement de capacité bizarre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR