SVP PB pour definir une fonction sous excell
Résolu
aikzman
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
aikzman Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
aikzman Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
MA question est la suivante :
J'ecris un code sous VBA il est correcte puisqu'il est correctement executé, ensuite je click sur enregistrer. au retour à
mon fichier excell je tape le nom de la fonction et je rentre les arguments ensuite rien ne change, je vas sur l'onglet INSERER UNE FONCTION et puis je ne trouve pas le nom de ma fonction nomé BS, il est dont clair qu'il manque une étape queqlque part ??
A+
MA question est la suivante :
J'ecris un code sous VBA il est correcte puisqu'il est correctement executé, ensuite je click sur enregistrer. au retour à
mon fichier excell je tape le nom de la fonction et je rentre les arguments ensuite rien ne change, je vas sur l'onglet INSERER UNE FONCTION et puis je ne trouve pas le nom de ma fonction nomé BS, il est dont clair qu'il manque une étape queqlque part ??
A+
A voir également:
- SVP PB pour definir une fonction sous excell
- Fonction si et - Guide
- Définir google comme page d'accueil - Guide
- Déplacer une colonne excel - Guide
- Fonction moyenne excel - Guide
- Fonction miroir - Guide
7 réponses
J'ajoute comme précision que j'ai enrengistré le code sur Feuille1 qui est dans VBAPROJECT
j'ai essayer de faire VBAPROJECT.Feuille1.BS(je rentre lmes arguments ) mais ca ne marche pas !!!
j'ai essayer de faire VBAPROJECT.Feuille1.BS(je rentre lmes arguments ) mais ca ne marche pas !!!
Bonsoir,
une fonction personnalisée doit être écrite dans un module et non dans une feuille.
eric
une fonction personnalisée doit être écrite dans un module et non dans une feuille.
eric
Bonsoir Eric,
Merci bcp effectivement c'est le probleme que j'avais. Maintenant j'ai un autre problème avec l'execution de ce code:
Function BS(S As Double, X As Double, rf As Double, T As Double, sig As Double) As Double
Dim d As Double
d = Log(S / X) + (rf * T)
Dim v As Double
v = sig * Sqr(T)
Dim d1 As Double
d1 = d / v + 0.5 * v
Dim d2 As Double
d2 = d1 - v
Dim Nd1 As Double
Nd1 = Application.NormSDist(d1)
Dim Nd2 As Double
Nd2 = Application.NormSDist(d2)
BS = S * Nd1 - X * Exp(-rf * T) * Nd2
End Function
Sub black()
Dim Resultat As Double
Dim S As Double
Dim X As Double
Dim rf As Double
Dim T As Double
Dim sig As Double
Resultat = BS(S, X, rf, T, sig)
End Sub
En gros a l'execution le curseur pointe en jaunesur la ligne trois ie là où il y a d= Log(S / X) + (rf * T) ca affiche erreur 6 depassement de capacité .
Au depard j'avais pas precisé le type mais j'ai penser à metttre double comme ca il aura pas de probleme ! et bien non malgres ça il pointe toujours sor cette ligne !!!
Bonne soirée
Amine
Merci bcp effectivement c'est le probleme que j'avais. Maintenant j'ai un autre problème avec l'execution de ce code:
Function BS(S As Double, X As Double, rf As Double, T As Double, sig As Double) As Double
Dim d As Double
d = Log(S / X) + (rf * T)
Dim v As Double
v = sig * Sqr(T)
Dim d1 As Double
d1 = d / v + 0.5 * v
Dim d2 As Double
d2 = d1 - v
Dim Nd1 As Double
Nd1 = Application.NormSDist(d1)
Dim Nd2 As Double
Nd2 = Application.NormSDist(d2)
BS = S * Nd1 - X * Exp(-rf * T) * Nd2
End Function
Sub black()
Dim Resultat As Double
Dim S As Double
Dim X As Double
Dim rf As Double
Dim T As Double
Dim sig As Double
Resultat = BS(S, X, rf, T, sig)
End Sub
En gros a l'execution le curseur pointe en jaunesur la ligne trois ie là où il y a d= Log(S / X) + (rf * T) ca affiche erreur 6 depassement de capacité .
Au depard j'avais pas precisé le type mais j'ai penser à metttre double comme ca il aura pas de probleme ! et bien non malgres ça il pointe toujours sor cette ligne !!!
Bonne soirée
Amine
Bonjour,
Tu as ça pour les divisions par 0.
Si ça doit arriver il faudra peut-être que tu testes dans la fonction pour retourner la bonne valeur d'erreur.
Mets tes variables à 1 avant l'appel et ça passe
eric
Tu as ça pour les divisions par 0.
Si ça doit arriver il faudra peut-être que tu testes dans la fonction pour retourner la bonne valeur d'erreur.
Mets tes variables à 1 avant l'appel et ça passe
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut Eric,
J'ai suivi ton indication et j'ai utiliser If pour contourner le problem de log(0) et de 1/0, le code est executable Mais mon probleme c'est que je n'arrive pas à le retrouver lorseque je le recherche sur ''inserer fonction'' , il faut faire quelquechose de special pour le rendre accessible depuis Excel??
Merci Pour tout
Function BS(S As Double, X As Double, rf As Double, T As Double, sig As Double) As Double
Dim d As Double
Dim v As Double
v = sig * Sqr(T)
If (S = 0 Or X = 0 Or v = 0) Then
BS = 0
Else
d = Log(S / X) + (rf * T)
Dim d1 As Double
d1 = d / v + 0.5 * v
Dim d2 As Double
d2 = d1 - v
Dim Nd1 As Double
Nd1 = Application.NormSDist(d1)
Dim Nd2 As Double
Nd2 = Application.NormSDist(d2)
BS = S * Nd1 - X * Exp(-rf * T) * Nd2
End If
End Function
Sub black()
Dim Resultat As Double
Dim S As Double
Dim X As Double
Dim rf As Double
Dim T As Double
Dim sig As Double
Resultat = BS(S, X, rf, T, sig)
End Sube
Bonne journée
J'ai suivi ton indication et j'ai utiliser If pour contourner le problem de log(0) et de 1/0, le code est executable Mais mon probleme c'est que je n'arrive pas à le retrouver lorseque je le recherche sur ''inserer fonction'' , il faut faire quelquechose de special pour le rendre accessible depuis Excel??
Merci Pour tout
Function BS(S As Double, X As Double, rf As Double, T As Double, sig As Double) As Double
Dim d As Double
Dim v As Double
v = sig * Sqr(T)
If (S = 0 Or X = 0 Or v = 0) Then
BS = 0
Else
d = Log(S / X) + (rf * T)
Dim d1 As Double
d1 = d / v + 0.5 * v
Dim d2 As Double
d2 = d1 - v
Dim Nd1 As Double
Nd1 = Application.NormSDist(d1)
Dim Nd2 As Double
Nd2 = Application.NormSDist(d2)
BS = S * Nd1 - X * Exp(-rf * T) * Nd2
End If
End Function
Sub black()
Dim Resultat As Double
Dim S As Double
Dim X As Double
Dim rf As Double
Dim T As Double
Dim sig As Double
Resultat = BS(S, X, rf, T, sig)
End Sube
Bonne journée
En fait j'écris tout ça dans un fichier module et puis apres je ne sais pas pourquoi ca ne marche pas !!