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

Access Discussion :

Fonction Yield en VBA sans Automation


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Points : 17
    Points
    17
    Par défaut Fonction Yield en VBA sans Automation
    Bonsoir,

    J'essaie de trouver le code VBA me permettant de recoder la fonction Yield de Excel.

    J'aimerais beaucoup éviter d'utiliser le code par "Automation" car cela prend beaucoup de ressources vu le très grand nombre de calculs à faire (plusieurs dizaines de milliers de calculs).

    Malheureusement, je n'ai pas réussi à trouver ce code par ailleurs sur internet, sur les sites français ou anglais.

    Merci d'avance pour votre aide.

    Laurent

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    la fonction rendement.titre est parfaitement documentée dans l'aide
    avec la formule et tout le tin touin

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Bonjour Random,

    Merci pour ta nouvelle réponse.


    J'avoue néanmoins que :
    - j'étais déjà allé vérifier sur Excel la forme de la fonction YIELD (ou RENDEMENT.TITRE en français)
    - j'étais déjà allé voir l'aide, avec les explications.


    Et, dans l'aide d'Excel sur cette fonction, il n'y a la formule pour calculer ce rendement QUE dans le cas où "la date donnée par l'argument valeur_échéance ne comprend pas plus d'une période de coupon", ce qui est un cas particulier qui ne correspond pas à mon calcul.


    L'aide d'Excel précise en effet que "Si la période se terminant à la date donnée par l'argument valeur_échéance comprend plus d'une période de coupon, la fonction RENDEMENT.TITRE est calculée par itération (100 au maximum). Le processus de résolution recourt à la méthode de Newton, en s'appuyant sur la formule utilisée pour la fonction PRIX.TITRE. La fonction fait varier le taux de rendement jusqu'à ce que le prix estimé, compte tenu de ce taux de rendement, soit proche du prix réel. "


    N'étant pas assez doué en VBA pour pouvoir aisément recoder la méthode de Newton en VBA, j'espère toujours pouvoir trouver ce code quelque part (d'autant que ce code est très probablement un classique )


    Par ailleurs, je me rends compte que je n'ai peut-être pas été assez clair sur le logiciel que j'utilise (bien que nous soyons sur le forum Access) : je veux coder cette fonctin YIELD (ou RENDEMENT.TITRE) dans VBA pour l'utiliser dans ACCESS et non dans Excel.

    J'ai trouvé la formule me permettant de retrouver ce rendement.titre à partir du résultat de la fonction PRIX.TITRE (ou PRICE en anglais).

    Je suis donc à la recherche du code VBA me permettant de refaire le même calcul que la fonction PRIX.TITRE d'Excel, ou directement celle de la fonction RENDEMENT.TITRE d'Excel.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    ben c'est une simple itération
    qui rend égale à 0 la somme des valeurs actuelles signées
    tu peux le faire par dichotomie si newton te fait peur
    sinon tu prends deux taux au hasard disons 1 % et 11 %
    tu calcules la somme des valeurs actuelles au deux taux
    tu obtiens deux valeurs genre y=1000 et y'=-800
    ton nouveau taux x2 vaut x + ((y'-y) sur 11%- 1 %)
    ce qui revient à dire que la fonction est monotone et croissante sur
    l'intervalle (nous savons que c'est faux c'est une exponentielle) mais
    nous nous intéressons à sa dérivée
    tu recommences avec x2 et toujours 11%
    puis avec x3 et x2 et so on jusqu'à ce que la somme des valeurs actuelles
    soie inférieure à 10^-13

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Random, merci pour tes explications.

    Je dois avouer que ce n'est pas vraiment Newton qui me fait peur, ni le principe des dichotomies, mais bien plus le code VBA.

    Donc tu me conseilles de mettre au point une fonction "dichotomie", puis de faire dans ma fonction YieldVBA un calcul par essais/erreurs qui appelera la fonction de dichotomie, c'est bien ça?

    Vivement que je sois assez bon en VBA pour ne pas avoir l'impression que je vais devoir y passer des heures dessus...

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    d'un autre côté ta fonction qui va tourner en interprété sera toujours plus longue que la fonction excel en compilé tu n'es pas certain de gagner en rapidité

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Je vais faire les tests, avec la solution de Myrna Larson que je viens (enfin...) de trouver ici :

    http://www.mcse.ms/archive161-2004-12-1308011.html

    Selon elle, sa méthode est plus rapide que celle d'Excel....
    J'ai déjà vérifié les résultats très proches.
    Pour la vitesse, je te tiens au courant.

    Merci pour tes remarques.

    Laurent

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    le probléme c'est que la méthode en question est fondé sur un goal.seek
    autant dire que tu retombes sous excel

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

Discussions similaires

  1. [VBA - E] Automation et remplissage d'un tableau Excel
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/07/2006, 10h10
  2. Réponses: 5
    Dernier message: 13/03/2006, 16h21
  3. Réponses: 1
    Dernier message: 14/10/2005, 16h36
  4. [VBA] word automation copy/paste
    Par Lysis dans le forum VBA Word
    Réponses: 2
    Dernier message: 16/09/2005, 13h45
  5. [VBA-W] [AUTOMATION]Liste Fonctions/Paramètres
    Par Sunny dans le forum VBA Word
    Réponses: 2
    Dernier message: 05/12/2002, 17h35

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