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 :

Création de Array


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Par défaut Création de Array
    Bonjour,

    Je souhaite créer une fonction qui fabriquera un array suivant des parametres mai je n'y arrive pas, voici mon code:

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Public Function CallCRR(n, p, x, k, u, d, r, T)
    Dim TMP As Double
     
    TMP = 0
     
    Dim Cours(0 To n, 0 To n) As Double
     
        For i = LBound(Cours) To UBound(Cours)
            Cours(i, 0) = x
          For j = LBound(Cours) To UBound(Cours)
                    If (Rnd * 1) + 1 > p Then
                        Cours(i, j) = Cours(i, j - 1) * u
                    Else
                        Cours(i, j) = Cours(i, j - 1) * d
                    End If
          Next j
        Next i
     
     
     
    Dim Cmax(0 To n) As Double
     
     
     
     
    For l = LBound(Cmax) To UBound(Cmax)
            Cmax(l) = x
    Next l
     
    For l = LBound(Cmax) To UBound(Cmax)
         For i = LBound(Cours) To UBound(Cours)
            For j = LBound(Cours) To UBound(Cours)
                If Cours(i, j) >= Cmax(l) Then
                    Cmax(l) = Cours(i, j)
                End If
            Next j
        Next i
    Next l
     
     
     
     
    For j = 0 To n
        TMP2 = Cmax(j) - k
        If (TMP2 > 0) Then
            TMP = TMP + (Fact(n) / Fact(n - j) / Fact(j) * (p ^ j) * ((1 - p) ^ (n - j)) * TMP2)
        End If
     
    Next j
     
    CallCRR = TMP * Exp(-r * T)
     
    End Function
     
     
    Public Function Fact(n)
    F = 1
    If n > 1 Then
    For i = 2 To n
        F = F * i
    Next i
    End If
    Fact = F
    End Function
    Il s'agit de créer un Pricer de Call pour une option(option price lookback).

    Si vous avez des solutions merci d'avance.

  2. #2
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut
    avant de dire le premier element , le deuxieme =...
    donc avant d'assigner une valeur dans un tableau qui est de dimention inconnue tu dois par exemple et si tu veux garder les valeur tu dois faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    redim preserv Mytable(1,2)
    voila par contre , avec un redim preserv tu ne peux modifier que ta derniere dimention.

    Voila deja l'un des problemes que j'ai vu. attend quelqu'un d'autre ou ce soir

    Bonne chance

  3. #3
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut
    Si tu recherches toujours , dis moi demain , je ne coimprend pas trop d'utilite d'une fonction de cox ross , sur ce genre de produit, tu es obligé ou tu as le choix? car la black scholes est plus facile a gerer, elle correspond au model continue , donc de la meme facon que tu le ferais en matlab , tu peux creer un vecteur de valeur que tu decoupe . Enfin si tu dois utiliser cox Ross eventuellement reposte demain .
    Je balise ton message ! sinon personne va le lire
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Public Function CallCRR(n, p, x, k, u, d, r, T)
    Dim TMP As Double
     
    TMP = 0
     
    Dim Cours(0 To n, 0 To n) As Double
     
    For i = LBound(Cours) To UBound(Cours)
    Cours(i, 0) = x
    For j = LBound(Cours) To UBound(Cours)
    If (Rnd * 1) + 1 > p Then
    Cours(i, j) = Cours(i, j - 1) * u
    Else
    Cours(i, j) = Cours(i, j - 1) * d
    End If
    Next j
    Next i
     
     
     
    Dim Cmax(0 To n) As Double
     
     
     
     
    For l = LBound(Cmax) To UBound(Cmax)
    Cmax(l) = x
    Next l
     
    For l = LBound(Cmax) To UBound(Cmax)
    For i = LBound(Cours) To UBound(Cours)
    For j = LBound(Cours) To UBound(Cours)
    If Cours(i, j) >= Cmax(l) Then
    Cmax(l) = Cours(i, j)
    End If
    Next j
    Next i
    Next l
     
     
     
     
    For j = 0 To n
    TMP2 = Cmax(j) - k
    If (TMP2 > 0) Then
    TMP = TMP + (Fact(n) / Fact(n - j) / Fact(j) * (p ^ j) * ((1 - p) ^ (n - j)) * TMP2)
    End If
     
    Next j
     
    CallCRR = TMP * Exp(-r * T)
     
    End Function
     
     
    Public Function Fact(n)
    F = 1
    If n > 1 Then
    For i = 2 To n
    F = F * i
    Next i
    End If
    Fact = F
    End Function

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

Discussions similaires

  1. création Numeric.array et d'une liste de liste
    Par leila95 dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 19/05/2010, 22h32
  2. Problème avec la création d'un objet array
    Par QAYS dans le forum Langage
    Réponses: 3
    Dernier message: 22/09/2007, 23h34
  3. [PHP-JS] Création array javascript dans un while en php
    Par D_ident_1 dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2007, 11h16
  4. [CR] Création d'array
    Par ptitsoleil87 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/07/2006, 12h00
  5. création de tableaux avec Array() et élément 'fantome'
    Par Talieth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/11/2005, 09h49

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