Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 17/03/2010, 10h17   #1
r0d
Inscrit
 
Inscription : août 2004
Messages : 3 271
Détails du profil
Informations personnelles :
Localisation : Espagne

Informations forums :
Inscription : août 2004
Messages : 3 271
Points : 3 418
Points : 3 418
Par défaut erreur étrange dans le calcul d'une formule

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.
r0d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 10h34   #2
Membre habitué
 
Inscription : novembre 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 134
Points : 106
Points : 106
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 ?
HAL-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 10h41   #3
r0d
Inscrit
 
Inscription : août 2004
Messages : 3 271
Détails du profil
Informations personnelles :
Localisation : Espagne

Informations forums :
Inscription : août 2004
Messages : 3 271
Points : 3 418
Points : 3 418
Citation:
Envoyé par HAL-9000 Voir le message
Sans le classeur en question, difficile d'aider
Oui je me doute bien, mais je n'ai pas le droit de la montrer

Citation:
Envoyé par HAL-9000 Voir le message
Peut-être afficher les quelques lignes de code ou se situe la première erreur sous VBA ?
Le problème c'est que le debuggueur VB devient fou, et il est impossible de savoir où est l'erreur.
r0d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 10h42   #4
Membre habitué
 
Inscription : novembre 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 134
Points : 106
Points : 106
Alors fait du pas à pas depuis le départ (F8).
HAL-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 10h48   #5
r0d
Inscrit
 
Inscription : août 2004
Messages : 3 271
Détails du profil
Informations personnelles :
Localisation : Espagne

Informations forums :
Inscription : août 2004
Messages : 3 271
Points : 3 418
Points : 3 418
Citation:
Envoyé par HAL-9000 Voir le message
Alors fait du pas à pas depuis le départ (F8).
Oui c'est bien ce que je fais, mais ce qu'il se passe c'est:
tout se passe bien, pas d'erreur, jusqu'à ce qu'il revienne, sans raison, au début de la fonction.
r0d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 10h50   #6
Membre habitué
 
Inscription : novembre 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 134
Points : 106
Points : 106
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 ? )
HAL-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 10h56   #7
Membre habitué
 
Inscription : novembre 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 134
Points : 106
Points : 106
Aucun évènement n'est lié au lancement de tes macros ?
Comment tu les lances du coup ?

J'attends ta réponse :sifle:
HAL-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 11h06   #8
r0d
Inscrit
 
Inscription : août 2004
Messages : 3 271
Détails du profil
Informations personnelles :
Localisation : Espagne

Informations forums :
Inscription : août 2004
Messages : 3 271
Points : 3 418
Points : 3 418
Citation:
Envoyé par HAL-9000 Voir le message
Aucun évènement n'est lié au lancement de tes macros ?
Comment tu les lances du coup ?

J'attends ta réponse :sifle:
Ben je clique sur la cellule qui contient la formule qui donne le résultat, et j'appuie sur la touche 'entrée'.
r0d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 11h07   #9
Membre habitué
 
Inscription : novembre 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 134
Points : 106
Points : 106
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
HAL-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 11h10   #10
r0d
Inscrit
 
Inscription : août 2004
Messages : 3 271
Détails du profil
Informations personnelles :
Localisation : Espagne

Informations forums :
Inscription : août 2004
Messages : 3 271
Points : 3 418
Points : 3 418
Citation:
Envoyé par HAL-9000 Voir le message
utiliser une dynamque à la BS pour simuler des actifs c'est un peu trivial non ? une vol stochastique peut-être ?
Je comprends pas ce que tu dis
Moi ces histoires d'actifs, instruments, montecarlo chépakoi, j'y comprends rien et je ne souhaite pas y comprendre . Je dois juste traduire le code VB en C++.
r0d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 11h12   #11
r0d
Inscrit
 
Inscription : août 2004
Messages : 3 271
Détails du profil
Informations personnelles :
Localisation : Espagne

Informations forums :
Inscription : août 2004
Messages : 3 271
Points : 3 418
Points : 3 418
Citation:
Envoyé par HAL-9000 Voir le message
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
Ben oui mais moi je veux que les 2 soient différentes
r0d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 11h13   #12
Membre habitué
 
Inscription : novembre 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 134
Points : 106
Points : 106
Ben non justement, tu rentres ta date initiale et date finale, et ValDate va forcément partir de ta date initiale...
HAL-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 11h18   #13
r0d
Inscrit
 
Inscription : août 2004
Messages : 3 271
Détails du profil
Informations personnelles :
Localisation : Espagne

Informations forums :
Inscription : août 2004
Messages : 3 271
Points : 3 418
Points : 3 418
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.
r0d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 11h24   #14
Membre habitué
 
Inscription : novembre 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 134
Points : 106
Points : 106
Citation:
Envoyé par r0d Voir le message
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.
Tu veux pricer un dérivé sur actif à une date future donc... le soucis c'est qu'il va te falloir le spot du sous-jacent à cette date future, la volatilité future, etc. C'est pas le but d'un pricer, de faire de la prévision...

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).
HAL-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 11h40   #15
r0d
Inscrit
 
Inscription : août 2004
Messages : 3 271
Détails du profil
Informations personnelles :
Localisation : Espagne

Informations forums :
Inscription : août 2004
Messages : 3 271
Points : 3 418
Points : 3 418
Citation:
Envoyé par HAL-9000 Voir le message
Tu veux pricer un dérivé sur actif à une date future donc... le soucis c'est qu'il va te falloir le spot du sous-jacent à cette date future, la volatilité future, etc. C'est pas le but d'un pricer, de faire de la prévision...
Et pourtant, si tu regardes le code VB de la fonction principale (BMW_Rainbow()), il y a plusieurs tests du type
Code :
If StartDate < ValDate Then
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.
r0d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 11h42   #16
r0d
Inscrit
 
Inscription : août 2004
Messages : 3 271
Détails du profil
Informations personnelles :
Localisation : Espagne

Informations forums :
Inscription : août 2004
Messages : 3 271
Points : 3 418
Points : 3 418
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.
r0d est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 12h15   #17
Membre habitué
 
Inscription : novembre 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 134
Points : 106
Points : 106
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.
HAL-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 12h16   #18
Nouveau Membre du Club
 
Inscription : avril 2009
Messages : 30
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 30
Points : 33
Points : 33
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.
zenpbb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 15h45   #19
Membre Expert
 
Avatar de Daranc
 
Inscription : janvier 2007
Messages : 1 015
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 1 015
Points : 1 060
Points : 1 060
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
Daranc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2010, 16h18   #20
r0d
Inscrit
 
Inscription : août 2004
Messages : 3 271
Détails du profil
Informations personnelles :
Localisation : Espagne

Informations forums :
Inscription : août 2004
Messages : 3 271
Points : 3 418
Points : 3 418
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.
r0d est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 17h57.


 
 
 
 
Partenaires

Hébergement Web