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

  1. #1
    Nouveau Candidat au Club
    Faire appel à une fonction dans un bouton de commande Userform
    Bonjour,
    Pour un projet je souhaite faire appel à une fonction que j'ai déja définie.
    En gros, ma fonction permet de calculer un prix, et je souhaite que cette même fonction calcule un prix avec comme arguments les données que j'ai rentrées dans différentes TextBox (et non selon des cellules).
    Dans le fichier que je joins, ne faites pas attention aux nombreux calculs et lignes de code , ma question est davantage d'ordre pratique et "fonctionnel", puisque j'essaye sans succès d'utiliser la fonction "Call", et cela ne marche pas quand je clique sur mon CommandButton pour afficher mon prix (en particulier pour mon onglet "Arbres").
    Voici ce que j'ai essayé :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub CommandPricerBS_Click()
    Call BS(TextPrixSJ.Value, TextStrike.Value, Texttaux.Value, Textvolat.Value, TextMaturite.Value)
    TextPriceBS = BS(TextPrixSJ.Value, TextStrike.Value, Texttaux.Value, Textvolat.Value, TextMaturite.Value)
    End Sub
    Function BS(S As Double, K As Double, r As Double, sigma As Double, T As Double)
    d1 = (Log(S / K) + (b + 0.5 * sigma ^ 2) * T) / (sigma * Sqr(T))
    d2 = d1 - sigma * Sqr(T)
    Z = Switch(TypeOption)
    BS = Z * (S * Exp((b - r) * T) * Nd(Z * d1) - K * Exp(-r * T) * Nd(Z * d2))
    End Function
    Function Nd(d)
    Nd = WorksheetFunction.NormSDist(d)
    End Function



    En vous remerciant d'avance pour votre aide.

  2. #2
    Responsable
    Office & Excel

    Salut.

    il y a plusieurs problèmes dans ton code, et tu pourrais en visualiser certains en indentant ton code (décaler les blocs vers la droite).

    Il manque des ENDIF dans le code. Normalement, tu devrais avoir des alertes pour ce genre d'erreurs.

    De plus, tes fonctions Binomial_US_DOWN et _UP doivent se terminer par une affectation à la "variable" éponyme de la fonction, or tu affectes les valeurs à Binomial_US, sans suffixer avec _Down ou _UP.

    Une bonne idée, avant de lancer le code, consiste à le "compiler" (menu Débogage\Compiler) pour vérifier qu'il n'y a pas d'erreurs.

    Corrige déjà tout ça et on y verra un peu plus clair.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    Vous avez apprécié la réponse? =>
    ---------------

###raw>template_hook.ano_emploi###