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 :

Fonction VBA appelant une autre fonction (bug)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 6
    Par défaut Fonction VBA appelant une autre fonction (bug)
    Bonjour,

    J'ai 2 fonctions VBA (fonction PrixObligation et fonction InterpLineaire) qui fonctionnent bien séparement.

    Dans la fonction PrixObligation, il y a une variable "discountRate" qui appelle la fonction InterpLineaire.

    Malheureusement au moment de calculer cette variable, on entre bien dans la fonction interpLineaire mais le résultat n'est pas retourné à la fonction PrixObligation et le code stoppe.

    J'ai ajouté la commandé "Error GoTo ErrorHandler" mais systématiquement le discountRate n'est pas calculé et me renvoie donc 0 pour cette valeur.

    Pouvez vous m'aider svp (pièce jointe du code) ?

    Voici un exemple des paramètres d'entrée pour la fonction PrixObligation.

    Date de maturité : 31/12/2025
    Fréquence de paiement annuel : 2 fois par an
    Taux de coupon : 5%
    Date du premier coupon : 30/06/2022
    Date de valorisation : 31/12/2021
    Courbe de discount :
    Temps (années) : 0, 1, 2, 3, 4
    Taux (%) : 3, 2.8, 2.5, 2.3, 2.1
    Convention de base : "AA"

    Merci d'avance,
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Salut,

    Quand je voit qu'une fonction retourne zéro en cas d'erreur, je me dit qu'il y a un problème:
    "Ma logique est bancale, donc zéro est une réponse acceptable" ... Perdu
    Solution: Ecrit des tests qui justifient le renvoi de zéro comme réponse.

    Ce gros On Error Resume Next ne fait que confirmer mes doutes:
    "Ma logique est bancale, mais ce n''est pas grave" ... Perdu aussi.
    Solution: Ecrit des tests.

    Qu'on soit bien d'accord,
    Les gestionnaires d'erreur n'existent que pour prendre en charge des cas exceptionnels contre lesquels ont ne peut se prémunir, par exemple: Connection à une base de donnée qui échoue, lecture de fichier en échec, réponse d'un serveur 5XX d'un serveur web (erreur interne du serveur), ressource non disponible ect ...
    Il ne servent en aucun cas à prendre en charge des calculs foireux ou bugs dans l'algorithme.

    Note supplémentaire:
    Lorsque tu fais des calculs sur les date, utilise autant que possible les fonctions dédiées à cela (DateDiff, DateAdd ect ...), ca donnera plus de sens à ton code.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/04/2012, 00h09
  2. [XQUERY] fonction appel une autre fonction
    Par julie_lab dans le forum XQUERY/SGBD
    Réponses: 3
    Dernier message: 07/07/2010, 15h26
  3. Nom de la fonction appelant une autre
    Par eliek_9 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/07/2006, 17h20
  4. Réponses: 21
    Dernier message: 20/06/2006, 16h49
  5. Appeler une autre fonction depuis un signal
    Par laurent_ifips dans le forum POSIX
    Réponses: 6
    Dernier message: 24/12/2005, 15h40

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