Bonjour à tous,
Je suis nouvelle sur le site. Pour les besoins de mon stage, j'apprends à coder en VBA. Je me sers d'un ouvrage vraiment bien " Applications financières sous Excel en VBA".
Voici mon exercice :
" Ecrivez une procédure VBA permettant de stocker dans la colonne E les taux de rentabilité mensuels successifs de l'action Bouygues. Vous aurez besoin d'utiliser la fonction Month()"
Je dispose d'une feuille de calcul renseignant :
- en colonne A : la date de relevé du cours
- en colonne B : le cours d'ouverture correspondant à la date en colonne A
- en colonne C : les dividendes éventuellement distribués ( inutile pour notre problème)
- en colonne D : les taux de rentabilité quotidiens (calculés à partir des valeurs des cellules en colonne B et C)
Je dois calculer en colonne E les taux de rentabilités mensuels correspondant à la somme des taux de rentabilité quotidiens sur un mois
Voici ma macro :
le problème ici est que lorsque je fais tourner ma macro, j'obtient pour chaque nouvelle cellule de la colonne E, la rentabilité cumulée ( c'est-à-dire la somme des rentabilités mensuelles jusqu'au mois n) au lieu d'obtenir seulement la rentabilité mensuelle du mois en question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 Sub rentabilite_mensuelle() Dim tableau() As Double Dim nb_mois As Integer Dim tampon_renta As Double Dim i As Integer 'Il faut d'abord compter le nombre de mois de la période observée pour redimensionner le tableau 'qui contiendra les rentabilités mensuelles Range("A2").Select Range(Selection, Selection.End(xlDown)).Select For Each cell In Selection If Month(cell.Value) <> Month(cell.Offset(1, 0).Value) Then nb_mois = nb_mois + 1 Else End If Next cell 'MsgBox nb_mois 'j'obtiens 174 ce qui est le bon résultat ReDim tableau(nb_mois) 'le tableau doit contenir 174 taux de rentabilité mensuels tampon_renta = Range("A2").Offset(0, 3).Value 'Valeur "tampon" qui sert à calculer la somme des rentabilité sur un mois donné i = 1 For Each cell In Selection If Month(cell.Value) = Month(cell.Offset(1, 0).Value) Then tampon_renta = tampon_renta + cell.Offset(0, 3).Value Else tampon_renta = tampon_renta + cell.Offset(0, 3).Value 'MsgBox tampon_renta tableau(i) = tampon_renta 'MsgBox tableau(i) tampon = cell.Offset(1, 0).Value i = i + 1 End If Next cell MsgBox tableau(1) & " " & tableau(2) & " " & tableau(3) 'J'ai décidé d'afficher les trois premières valeurs pour voir ce qu'il se passait : 'je me rends compte que tableau(1) contient le bon résultat MAIS tableau(2) = rentabilité du deuxième mois+ tableau(1) et 'tableau(3)=rentabilité du troisième mois + tableau(1) + tableau(2).... Range("E2").Resize(nb_mois, 1).Value = Application.Transpose(tableau) End Sub
Je n'arrive pas à comprendre mon erreur,
Pouvez vous m'aider ?
Merci d'avance.
Partager