IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

MACRO calcul de rentabilité - erreur sur retour valeur [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Master Informatique et finance de marché
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Master Informatique et finance de marché
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 9
    Points
    9
    Par défaut MACRO calcul de rentabilité - erreur sur retour valeur
    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 :

    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
    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.
    Je n'arrive pas à comprendre mon erreur,
    Pouvez vous m'aider ?


    Merci d'avance.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bonjour,

    tu as oublié de réinitialiser à chaque changement de mois ta variable intermédiaire : tampon_renta

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Master Informatique et finance de marché
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Master Informatique et finance de marché
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 9
    Points
    9
    Par défaut
    Bonjour bbil,

    Je ne comprends pas, je pensais que la ligne
    tampon = cell.Offset(1, 0).Value servait à çà ?
    Dans mon idée d'affecter la valeur "cell.Offset(1,0).Value" donne la valeur du premier taux de rentabilité du mois d'après, non?

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    je ne vois pas ou tu te sert de cette variable tampon ?

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Master Informatique et finance de marché
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Master Informatique et finance de marché
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 9
    Points
    9
    Par défaut
    Je parlais de ma variable intermédiaire "tampon_renta"

    Je l'utilise dans le test If sur le mois

    Par la même occasion j'ai initialiser la variable temporaire tampon_renta = 0 dans le cas ou le mois des deux cellules contigus sont différents ( i.e. quand on change de mois) et j'obtiens exactement le même résultat ...

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    rajoute la ligne (obligatoire!)
    en haut de ton module de code



    et montre nous ton code modifié...

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Master Informatique et finance de marché
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Master Informatique et finance de marché
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 9
    Points
    9
    Par défaut
    Hello bbil,

    effectivement, j'ai réinitialisé la variable tampon_renta à 0 mais je l'avais mal nommé. Tout fonctionne normalement.
    je te remercie pour ton aide !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Macro Excel pour se positionner sur une valeur d'une liste déroulante
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/09/2013, 12h57
  2. [XL-2010] Erreur sur récupération valeur TextBox
    Par Kaera dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/12/2011, 11h36
  3. [AC-2007] Pb sur retour valeur d'un champ
    Par patanar dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/05/2011, 08h24
  4. erreur sur la valeur ESP
    Par salseropom dans le forum C++
    Réponses: 5
    Dernier message: 28/05/2010, 18h14
  5. erreur sur calcul
    Par Sendo dans le forum Access
    Réponses: 2
    Dernier message: 29/09/2005, 09h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo