|
Publicité | |||||||||||||||||||||||
|
|
#1 |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 271 ![]() |
Bonjour à tous,
voilà, j'ai une feuille Excel (Excel 2003, en englais) très complexe (c'est pas moi qui l'ai fait). Il y a des formules dans tous les sens, et le code VB correspondant est énorme. Au final j'ai une cellule qui contient le résultat final de tous les calculs. Lorsque je veux voir les entrailles de ces calculs, j'ouvre l'éditeur VB et je débuggue pas à pas, ça fonctionne bien. Jusqu'ici donc, tout va bien. Tout va bien, jusqu'à ce que j'esaie de modifier une cellule qui est de type date: le VB me renvoie une erreur au lieu du résultat (dans la cellule résultat j'ai: #VALUE!). Donc bon une erreur, ok, je vais débugger le code VB pour voir ce qu'il se passe (l'aide Excel - le petit icone avec le point d'exclamation - ne m'apprends rien). Là le debugger de VB est devenu fou: il exécute la fonction principale, s'arrête en plein milieu et jamais au même endroit, puis recommence (alors que ce n'est pas une boucle). Du coup je reviens à ma feuille Excel, je fais ctrl+z pour anuler la modif de ma date. La date reviens bien à sa valeur initiale, mais l'erreur persiste: j'ai toujours #VALUE! dans ma cellule de résultat et le debugger VB est toujours dans les choux. Avez-vous une idée de ce qu'il peut bien se passer? Les symptômes que je vous décris ici vous donnent-ils une idée de la maladie? J'espère que mon explication est claire, mais comme je n'y connais rien à Excel, j'imagine que ça doit être un peu flou. Demandez-moi des précisions sinon. note: Cette feuille Excel a été faite avec Excel 2003 en anglais, et mon Excel a moi est également un 2003 en anglais. |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : novembre 2009 Messages : 134 ![]() |
Sans le classeur en question, difficile d'aider
![]() Peut-être afficher les quelques lignes de code ou se situe la première erreur sous VBA ? |
|
|
00
|
|
|
#3 |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 271 ![]() |
Oui je me doute bien, mais je n'ai pas le droit de la montrer
Le problème c'est que le debuggueur VB devient fou, et il est impossible de savoir où est l'erreur. |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : novembre 2009 Messages : 134 ![]() |
Alors fait du pas à pas depuis le départ (F8).
|
|
|
00
|
|
|
#5 |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 271 ![]() |
|
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : novembre 2009 Messages : 134 ![]() |
Tu lances comment ton fichier ?
(PS : utiliser une dynamque à la BS pour simuler des actifs c'est un peu trivial non ? une vol stochastique peut-être ? |
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : novembre 2009 Messages : 134 ![]() |
Aucun évènement n'est lié au lancement de tes macros ?
Comment tu les lances du coup ? J'attends ta réponse :sifle: |
|
|
00
|
|
|
#8 |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 271 ![]() |
|
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Inscription : novembre 2009 Messages : 134 ![]() |
Je viens de piger ton problème
![]() Dans ta cellule associée à ValDate, la valeur de celle-ci est "=startdate". Donc cette cellule va prendre la valeur de la cellule nomée "stardate" qui est celle juste en dessous. Il faut modifier la cellule associée à StartDate pour modifier ta cellule associée à ValDate |
|
|
00
|
|
|
#10 | |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 271 ![]() |
Citation:
![]() Moi ces histoires d'actifs, instruments, montecarlo chépakoi, j'y comprends rien . Je dois juste traduire le code VB en C++.
|
|
|
|
00
|
|
|
#11 | |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 271 ![]() |
Citation:
|
|
|
|
00
|
|
|
#12 |
|
Membre habitué
![]() Inscription : novembre 2009 Messages : 134 ![]() |
Ben non justement, tu rentres ta date initiale et date finale, et ValDate va forcément partir de ta date initiale...
|
|
|
00
|
|
|
#13 |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 271 ![]() |
Oui mais il me faut simuler tous les cas, et donc les cas où la date de valoration (valdate) est supérieure à la date initiale.
|
|
|
00
|
|
|
#14 | |
|
Membre habitué
![]() Inscription : novembre 2009 Messages : 134 ![]() |
Citation:
Tu dois rentrer la date d'aujourd'hui (avec la valeur du spot aujourd'hui, la valeur du taux d'intêret actuelle, etc.) la date d'échéance du dérivé, et tu lances ta fonction que te donne le prix du produit évalué à la date d'aujourd'hui (ou à la limite à une date antérieure). |
|
|
|
00
|
|
|
#15 | |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 271 ![]() |
Citation:
En gros, d'après ce que j'ai compris, il y a deux "branches" dans ce pricer. Si startdate > valdate, alors il fait un truc, et si startdate < valdate, alors il fait autre chose. C'est donc que l'on peut avoir un cas ou valdate est supérieur et donc, c'est une sorte de prédiction qu'on fait non? Même si effectivement ce n'est pas l'idée normalement, c'est pas possible un pricer qui fasse de la prédiction? En fait, moi je ne veux pas comprendre ces trucs-là (je fais même un effort pour ne pas les comprendre), parce que sinon ils vont m'envoyer chez le client et je n'en sortirai plus. Et je ne veux pas finir mes jours dans une banque. |
|
|
|
00
|
|
|
#16 |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 271 ![]() |
Ou alors, ce n'est pas de la prédiction mais c'est qu'on peut bosser, par exemple, sur une startdate d'hier, mais effectuant la valoration pour aujourd'hui. On a donc bien, dans ce cas, valdate différent de startdate.
|
|
|
00
|
|
|
#17 |
|
Membre habitué
![]() Inscription : novembre 2009 Messages : 134 ![]() |
ta startdate correspond à la date à laquelle tu veux pricer ton produit. Tu peux tout à fait le pricer à une date passée oui, mais pas future. Dans le cas de la date passée, tu pars encore de la date initiale, donc valdate=stardate.
Je ne sais pas pourquoi cette case est là, elle est facultative, ce n'est juste qu'un raccourci vers la case d'en dessous. |
|
|
00
|
|
|
#18 |
|
Nouveau Membre du Club
![]() Inscription : avril 2009 Messages : 30 ![]() |
Bonjour r0d, HAL-9000 et le forum,
Je pense que l'erreur vient de la formule Excel (en Anglais) EDATE. Elle correspond en français à MOIS.DECALER (il faut impérativement rajouter la macro complémentaire Utilitaire d'analyse via le menu Outils). Il suffit alors de faire un remplacer de EDATE par MOIS.DECALER dans les formules pour que cela marche. EDIT : Oups, j'avais pas vu que tu avais un Excel en Anglais. EDATE devrait donc marcher, mais as-tu bien ajouté l'Add-In Utilitaire d'analyse ? Dernière modification par zenpbb ; 17/03/2010 à 14h24. |
|
|
00
|
|
|
#19 |
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 015 ![]() |
1er question:
ta cellule est au format date elle n'est pas bloquer par une limitation dans les données de validation ? 2eme question as tu suivi les dépendants de ta cellule et le ascendant de l'erreur ( sur la feuille pas le code ) il est fort possible que ce qui n'est pas digéré soit dans une autre formule 3eme question as tu regardé si une macro évènementielle ne traficoter pas tes valeurs
__________________
Cordialement Daranc |
|
|
00
|
|
|
#20 |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 271 ![]() |
re,
je vous remercie infiniment pour votre aide, mais finalement je laisse tomber. J'étais parvenu à modifier ce que je voulais, puis après 2 heures de boulot, je sauvegarde, et là tout part en vrille comme au début (les formules qui retournent des erreurs, etc.). Je laisse tomber ce client. De toutes façons, j'en peux plus de bosser pour ces banques, c'est du grand n'importe quoi... je pourrai écrire un livre... 'fin bref. Encore merci à vous, et pardon pour le dérangement. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com