IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Macros et VBA Excel Discussion :

Probleme programme Maxdrawdown


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 5
    Par défaut Probleme programme Maxdrawdown
    Bonjour à tous

    Je suis en train de travailler sur un calcul de maximum drawdown : un instrument financier permettant de calculer la perte maximum si on avait investi au plus mauvais moment

    L'idée c'est d'avoir une plage de valeur et de calculer le maxDD via une fonction VBA

    Mon code doit pas etre loin d'être bon mais j'ai une erreur #Valeur!, pouvez vous me dire si vous reperer quelque chose qui cloche car là je ne vois pas très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Option Explicit
     
    Function Maxdrawdown(TheRange As Range) As Double
     
    Dim i, n As Integer
    Dim diff, maximum As Double
     
    Maxdrawdown = 0
    i = 0
    maximum = TheRange(1, 1)
    n = TheRange.Rows.Count
     
    For i = 0 To n - 1
     
        If TheRange(i + 1, 1) > maximum Then
            maximum = TheRange(i + 1, 1)
        End If
     
        diff = (maximum - Range(i + 1, 1)) / maximum
     
        If (diff > Maxdrawdown) Then
            Maxdrawdown = diff
        End If
     
    Next i
     
    End Function
    Merci beaucoup d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    peut être la déclaration de la variable diff

    en déclarant diff comme tu l'as fait diff est un variant et non un double.
    Il faut écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim diff as double, maximum as double
    ensuite la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diff = (maximum - Range(i + 1, 1)) / maximum
    ne s'écrirait pas comme ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diff = (maximum - TheRange(i + 1, 1)) / maximum

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Ou comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function Maxdrawdown(TheRange As Range) As Double
    Dim i As Integer
    Dim Diff As Double, Maximum As Double, MaxTemp As Double
     
    For i = 1 To TheRange.Rows.Count
        Maximum = Application.Max(Maximum, TheRange(i, 1))
        Diff = IIf(Maximum <> 0, (Maximum - TheRange(i, 1)) / Maximum, Diff)
        MaxTemp = Application.Max(MaxTemp, Diff)
    Next i
    Maxdrawdown = MaxTemp
    End Function

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 5
    Par défaut
    Merci beaucoup pour vos réponses

    Cependant je ne comprends pas le problème de déclaration de mon diff as double ?

    Effectivement quand je le déclare en Variant le programme tourne très bien.

    Merci encore

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme programme d'une Liaison RS232 Série en C
    Par dawud dans le forum Réseau
    Réponses: 4
    Dernier message: 02/03/2009, 22h08
  2. Probleme programme java
    Par G4uthier dans le forum Applets
    Réponses: 4
    Dernier message: 13/01/2008, 08h50
  3. probleme programme C
    Par space_56 dans le forum C
    Réponses: 24
    Dernier message: 14/11/2007, 00h08
  4. probleme programme structuré.
    Par argon dans le forum C
    Réponses: 10
    Dernier message: 31/01/2007, 10h11
  5. Slider problème programmation
    Par Bizarroide63 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 27/07/2006, 03h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo