Projet VBA

Fermé
Turpinou Messages postés 375 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 17 décembre 2021 - 2 avril 2020 à 11:09
yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 - 6 avril 2020 à 12:03
Bonjour,

J'ai un projet à faire, pour ma troisième année d'étude, en VBA, et n'étant absolument pas compétent dans ce domaine je demande votre aide.

Voici le sujet : Afficher les valeurs d'une action (AAPL par exemple) dans le temps (à partir de Yahoo). Soit une stratégie d’investissement à partir d'un capital M: si la valeur monte, on vend, si elle baisse, on achète. Calculer le gain de cette stratégie et le comparer avec la stratégie aléatoire.


J'ai donc importer une base de donnée de trois mois du CAC40 sur mon tableau, avec toute les modifications nécessaire mais les données s’arrête aujourd'hui : y a t'il un moyen d'actualiser les données au jour le jour ?

En outre, je ne sais pas du tout par où commencer : même littéralement je ne saurais pas vraiment m'y prendre...

Merci pour votre aide !

4 réponses

Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 336
Modifié le 2 avril 2020 à 11:36
Bonjour,

En outre, je ne sais pas du tout par où commencer : même littéralement je ne saurais pas vraiment m'y prendre...
 Pourtant...
CCM ne fait pas les exercices. Une aide peut être donnée si une travail personnel est démontré.

0
Turpinou Messages postés 375 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 17 décembre 2021 36
2 avril 2020 à 11:55
C'est bien pour cela que je demande des pistes de réflexion, afin de commencer moi même.
Voici mon début de composition permettant la copie des données :
0
yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551
2 avril 2020 à 12:03
merci de toujours partager le texte du code, et pas une image, tout en utilisant les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

trouver des pistes de réflexion, c'est souvent la partie la plus utile de l'exercice. nous t’empêcherions d'apprendre, d'acquérir des compétences et de progresser si nous faisions cela à ta place.

écris ce que tu comprends de l'énoncé de l'exercice, ce que tu ne comprends pas, les questions que tu te poses.
écris aussi comment tu va résoudre l'exercice.
prends ton temps.

inutile de travailler sur le code avant d'avoir bien réfléchi sur l'ensemble.
0
jordane45 Messages postés 38289 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 novembre 2024 4 703
2 avril 2020 à 12:24
Bonjour,

Sans parler exercice.....
le code que tu montres sert à mettre en place (via macro) une connexion à des données externes.
Tu aurais tout aussi bien pu le faire sans utiliser de macro... l'option étant directement accessible depuis le ruban excel.
Une chose que tu n'as pas vu, c'est l'option "Refresh" que tu as défini à false.....
En la passant à TRUE les données s'actualiseront .....

0
Turpinou Messages postés 375 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 17 décembre 2021 36
6 avril 2020 à 11:00
Bonjour Jordane,

Je me permets de reposer la question : j'utilise bien le ruban excel pour integrer mes données provenant de Yahoo, mais via la rubrique "from text" et non pas "from web" puisque avec cette dernière je ne peux pas avoir accès à la fenêtre "text import wizard" me permettant de formater le tableau (reconnaître les points comme virgules, le tableau date, ainsi que séparer les colonnes via les virgules du texte brut). En bref, je peux importer une fois les données proprement mais je ne peux pas actualiser la base.
Comment procéder selon vous ?
0
Turpinou Messages postés 375 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 17 décembre 2021 36
3 avril 2020 à 14:09
Bonjour,

J'ai bien conscience qu'il me faille apprendre mais j’espérais passer sur ce projet moins d'une vingtaine d'heure sachant que ce n'est qu'une mineure dans mon bi-cursus.

Voici donc mes trois macro me permettant de calculer le gain total ci joint.

Premier problème, en plus d'être très simpliste comme codage, est qu'il pourrait fonctionner si pour chacune des actions on devait acheter puis vendre puis acheter puis vendre... Or si je me retrouve à vendre deux fois de suite, respectivement acheter, le résultat n'a plus de sens. Un conseil ?

En outre, jordane45, j'utilise bien le ruban excel pour integrer mes données mais via la rubrique "from text" et non pas "from web" puisque avec cette derniere je ne peux pas avoir accès à la fenetre "text import wizard" me permettant de formater le tableau (reconnaître les points comme virgules, le tableau date, ainsi que séparer les colonnes via les virgules du texte brut). En bref, je peux importer une fois les données proprement mais je ne peux pas actualiser la base. Suis-je clair ?

Je rappelle que je suis encore grand débutant en VBA.

Merci pour le temps que vous pourrez me consacrer


Sub Analyse()

' on veut obtenir le montant des plus-values

Dim y As Integer
Dim z As Integer
Dim x As Integer
y = 0

For i = 2 To 260

'x étant la différence entre l'ouverture et la fermeture
        x = Cells(i, 2).Value - Cells(i, 5).Value

'y étant la comparaison entre deux jours
        y = x - y
        z = x - y
        Cells(i, 8).Value = z

   If z < 0 Then
   Cells(i, 9).Select
    ActiveCell.FormulaR1C1 = "achat"
        
   End If
   
   If z > 0 Then
   Cells(i, 9).Select
    ActiveCell.FormulaR1C1 = "vente"
    
    End If
       
Next i
    
End Sub


Sub Investissement()

'entrée du montant
'permet de connaitre le nombre d'actions vendues ou achetées
 x = InputBox("Rentrez la valeur de votre capital", "Investissement", "1000000")

Range("L4").Select
ActiveCell.FormulaR1C1 = x


For i = 2 To 258

    a = Cells(i, 9)
    
    If a = "achat" Then
        Cells(i, 10) = Int(x / Cells(i, 2))
        
    End If
Next i

For i = 2 To 258

    a = Cells(i, 9)
    
    If a = "vente" Then
        Cells(i, 10) = Cells(i - 1, 10)
        
    End If
Next i
End Sub


Sub gain()
' calcul la somme du montant de chaque action

For i = 2 To 258
    Cells(i, 11) = Cells(i, 10) * (Cells(i + 1, 8))
    
 Next i
    
Set MaPlage = Range("J2:J258")

MaSomme = Application.WorksheetFunction.Sum(MaPlage)
Cells(4, 13) = MaSomme

End Sub
0
yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551
3 avril 2020 à 14:28
écris ce que tu comprends de l'énoncé de l'exercice, ce que tu ne comprends pas, les questions que tu te poses.
écris aussi comment tu va résoudre l'exercice.
prends ton temps.

inutile de travailler sur le code avant d'avoir bien réfléchi sur l'ensemble.
0
Turpinou Messages postés 375 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 17 décembre 2021 36 > yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024
3 avril 2020 à 15:32
Si je me retrouve à vendre deux fois de suite, respectivement acheter, le résultat n'a plus de sens. Un conseil ?

Sous entendu, je ne comprends pas comment pallier au problème des achats ou ventes consécutifs.

Dans cette première partie d'exercice, je dois calculer le gain fait à chaque vente et le soustraire aux pertes sèches.
0
yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551 > Turpinou Messages postés 375 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 17 décembre 2021
3 avril 2020 à 15:38
comme tu n'expliques pas comment tu abordes cet exercice, je ne comprends pas pourquoi c'est un soucis d'avoir deux opérations consécutives identiques.
0
Turpinou Messages postés 375 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 17 décembre 2021 36 > yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024
3 avril 2020 à 16:02
Mon code (macro 2 ligne 15) est trop simple : avec un montant donné x j’achète une quantité d’actions quand le prix a baissé la veille.

Sauf que s’il baisse encore un deuxième jour consécutif je me retrouve à devoir en racheter d’autres alors que je n’ai normalement plus de capital disponible.
De même quand je vends mes actions, si le prix monte encore je ne devrais normalement plus rien vendre.

Comment formuler le processus d’achat et de vente lorsque que le prix fluctue ?
0
yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551 > Turpinou Messages postés 375 Date d'inscription mercredi 30 avril 2014 Statut Membre Dernière intervention 17 décembre 2021
3 avril 2020 à 16:17
oublie le code et l'ordinateur pour le moment.
Comment formuler le processus d’achat et de vente lorsque que le prix fluctue ?

C'est exactement ce que tu dois réaliser pour résoudre l'exercice.

écris ce que tu comprends de l'énoncé de l'exercice, ce que tu ne comprends pas, les questions que tu te poses.
écris aussi comment tu vas résoudre l'exercice.
prends ton temps.
0