Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : VB6 et fonction d'excel [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (sofy2006)

vendredi 7 avril 2006 à 23:50:11 | VB6 et fonction d'excel

sofy2006

salut j'ai besoin d'utiliser des fonctions d'excel catégorie finance et j ai trouvé un code source mais j ai pas su l'utiliser
voila le code source:
 Function B_Yield_ISMA(Sett_d As Date, Mat_d As Date, Cpn As Double, Price As Double) As Double
' Calculates the yield of a coupon bearing bond (ISMA)
    Dim L As Double, t As Double, sz As Double, T1 As Double, T2 As Double, T3 As Double
    Dim k1 As Double, k2 As Double
    Dim n As Long
    L = Application.Days360(Sett_d, Mat_d) / 360
    n = Int(L)
    t = L - n
    sz = Cpn * (1 - t)
    T1 = Application.Rate(L, Cpn, -Price, 100)
        If IsError(T1) Then T2 = -1 Else k1 = (-Application.PV(T1, n, Cpn, 100) + Cpn) / (1 + T1) ^ t - sz
                 T2 = T1 + 0.00005
                 k2 = (-Application.PV(T2, n, Cpn, 100) + Cpn) / (1 + T2) ^ t - sz
                While Abs(k2 - Price) > 0.00005
                    T3 = T1 + (Price - k1) * (T2 - T1) / (k2 - k1)
                    T1 = T2
                    k1 = k2
                    T2 = T3
                    k2 = (-Application.PV(T2, n, Cpn, 100) + Cpn) / (1 + T2) ^ t - sz
                Wend
    B_Yield_ISMA = T2
End Function

lundi 10 avril 2006 à 22:54:26 | Re : VB6 et fonction d'excel

rvblog

Membre Club
Salut sofy2006,

Ajoutes une référence à Excel dans ton projet VB, et essaies plutôt comme ça :

Function B_Yield_ISMA(Sett_d As Date, _
                                       Mat_d As Date, _
                                       Cpn As Double, _
                                       Price As Double) As Double
   ' Calculates the yield of a coupon bearing bond (ISMA)
    Dim L As Double, t As Double, sz As Double
    Dim
T1 As Double, T2 As Double, T3 As Double
    Dim k1 As Double, k2 As Double
    Dim n As Long
    L = WorksheetFunction.Days360(Sett_d, Mat_d) / 360
    n = Int(L)
    t = L - n
    sz = Cpn * (1 - t)
    'Attention, si les dates ont moins d'un an d'écart, l'instruction suivante
    'déclenchera un dépacement de capacité

    T1 = Rate(L, Cpn, -Price, 100)

    If IsError(T1) Then 
        T2 = -1 
    Else 
        k1 = (-WorksheetFunction.PV(T1, n, Cpn, 100) + Cpn) / (1 + T1) ^ t - sz
    End if

    T2 = T1 + 0.00005
    k2 = (-WorksheetFunction.PV(T2, n, Cpn, 100) + Cpn) / (1 + T2) ^ t - sz

    While Abs(k2 - Price) > 0.00005
       T3 = T1 + (Price - k1) * (T2 - T1) / (k2 - k1)
       T1 = T2
       k1 = k2
       T2 = T3
       k2 = (-WorksheetFunction.PV(T2, n, Cpn, 100) + Cpn) / (1 + T2) ^ t - sz
    Wend

    B_Yield_ISMA = T2

End Function

à+

rvblogn
Je veux ton bien... et je l'aurais


mardi 11 avril 2006 à 14:47:39 | Re : VB6 et fonction d'excel

sofy2006

Merci pour l'aide , j'ai pas compris'Attention, si les dates ont moins d'un an d'écart, l'instruction suivante déclenchera un dépacement de capacité
Enfin j'arrive pas à comprendre les instructions du code

mardi 11 avril 2006 à 22:27:23 | Re : VB6 et fonction d'excel

rvblog

Membre Club
Salut sofy2006,

B_Yield_ISMA est une fonction qui renvoie un résultat quand tu l'exécutes en lui passant des paramètres. Sett_d et Mat_d sont des paramètres de type Date.
Donc quand tu appelles cette fonction tu lui passes 2 dates.
Je te précise donc que ces 2 dates doivent être distantes l'une de l'autre d'au moins 1 an.
Sinon?
Sinon, une erreur va se déclencher lorsque l'instruction mise en évidence par mon commentaire éloquent (non?) va s'exécuter, elle (pour un vague problème de dépassement de capacité que tu ne comprendrais pas, si je ne t'avais pas prévenu(e) avant :) ).

Je sais que tu ne comprends pas les instructions du code, ce n'est pas grave! moi non plus je ne les comprend pas, et alors? (par contre, elles, elles me comprennent).

Ce n'est qu'une suite de calculs qu'il convient de mettre en ordre de fonctionnement (ce qui est fait, je pense) de manière à ce que tu puisses la manipuler et en observer les effets. Là, apparaîtra leur aspect fonctionnel que, j'en suis convaincu, tu comprendras! c'est cela l'important!

PS: j'ai vu un autre message de toi, et à mon avis, tourné comme il est, il n'y a que très peu de chance que quelqu'un y apporte une réponse (quoique, j'ai repéré des matheux qui trainent de temps en temps). Reviens avec un bout de code qui ne fonctionne pas (on pourrais le faire, mais c'est à toi de le faire), et là, tu auras des réponses (chacun son métier).
Cherches aussi dans le moteur de recherche du site, on ne sait jamais!

à+

rvblogn
Je veux ton bien... et je l'aurais




Cette discussion est classé dans : t1, t2, double, k2, cpn


Répondre à ce message

Sujets en rapport avec ce message

URGENT! Problème SQL [ par noisy ] J'ai besoin de créer une requête qui me permette de comparer 2 tables distinctes pour ensuite passer les valeurs qui sont dans T1 mais qui ne le sont listview et ini [ par titi89 ] 'bonjour'j'ai 3 textbox t1,t2,t3 je les sauve dans un ini'"t1.text""t2.text""t3.text"'form load je récupère tous les t1 ds un listbox(list1)vari = Fre Initialiser des valeurs pour mon application [ par sly63 ] Bonjour,Je ne suis ni debutant ni expert en VB. J'ai un peu essaye de trouver mon bonheur sur le forum mais ce que j'ai trouve me parait complique alo faire la difference entre deux temps [ par sensosofttunisiee ] je vais faire la difference entre deux temps (par exemple temps d'entré au travail et temps de sortie)je sais que la fonction qui fait la difference e envoi de donnée sur un paneaux lumineux [ par krousty ] bonjour, je suis actuelement en stage de bts 1er d informatique de gesion et il ma été demander de realiser une base donnée avec un ensemble de " page requête avec jointure & sélection sur la jointure.. durdur [ par TrafMaxime ] Salut les pros de la prog, ce sera encore de l'ado en vb.net aujourd'hui :J'essaie depuis peu d'effectuer une requête avec jointure et une sélection s copie condtionnelle [ par captaine93 ] Salut, j ai un problème de copie conditionnelle ...J mexplique : dans ma colonne A, j ai plusieurs fois les chiffres suivants 3060,T1 3060,T2 3160,T1 execution inter - thread [ par erwannn ] Bonjour, j'ai petit probleme: contexte: J'ai mon thread principal et deux threads auxiliaires.ce que je voudrais faire: un des threads auxiliaire afficher un message si t2 supérieur à t1 [ par petchy ] bonsoir j'ai 2 textbox dans une form t1 et t2 dans t1 je met un chiffre et si dans t2  je met un chiffre supérieur à t1 je voudrais qu'il m'affich class module [ par bilalstar ] bonjour;j'ai defini deux class et deux fonctions  comme la suivant;private type  t1.........end typeprivate type t2...........end typeprivate function


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.