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 :

Boucle et stockage des résultats


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
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut Boucle et stockage des résultats
    Bonjour, je voudrais créer une boucle dans un programme d'évaluation d'option afin de refaire le programme 100 fois, mais j'aurais également aimé que chacun des résultats (100) soient stockés au fur et a mesure dans la 2e feuille excel.....

    Merci d'avance pour votre aide (voir programme en question ci bas)

    =========================
    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
    Sub simopt()
    'Début de boucle ici
    Range("d4:iv6000").ClearContents
    Range("option1").ClearContents
    Dim iopt1, s1, x1, rf1, q1, t1, sigma1, nsigma1, pas
    Dim rnmutg, sigtg, sumg, randnsg, S1g, payoff1g, sigsum, sigmoyenne
    Dim i As Integer
    Dim j As Integer
    iopt1 = -1
    s1 = 79
    x1 = 86
    rf1 = 0.05
    q1 = 0
    t1 = 1
    sigma1 = 0.27
    pas = 100
    nsimg1 = 115
    rnmutg = (rf1 - q1 - 0.5 * sigma1 ^ 2) * (t1 / pas)
    sigtg = sigma1 * Sqr(t1 / pas)
    sumg = 0
    For i = 1 To nsimg1
        S1g = s1
        sigsum = 0
        For j = 1 To pas
            Randomize
            randnsg = Application.NormSInv(Rnd)
            S1g = S1g * Exp(rnmutg + randnsg * sigtg)
            'Range("prix1").Offset(j - 1, i - 1) = S1g
            sigsum = sigsum + S1g
        Next j
        sigmoyenne = sigsum / pas
        'Range("prix").Offset(i - 1, 0) = sigmoyenne
        payoff1g = Application.Max(iopt1 * (sigmoyenne - x1), 0)
        'Range("cash").Offset(i - 1, 0) = payoff1g
        sumg = sumg + payoff1g
    Next i
    option1 = Exp(-rf1 * t1) * sumg / nsimg1
    Range("option1").Value = option1                                                (Résultat à stocker)
    'Fin de boucle
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bonjour Golden, bienvenue sur le forum.
    Quelle variable te donne le résultat à stocker ? S1g, payoff1g ou sumg ? ou les trois ? Y a-t-il un libellé ?
    A+

    NB - Pense à indenter ton code pour le mettre sur le forum (tel qu'il était il était illisible) ainsi qu'à le baliser

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Bonjour Golden, bienvenue sur le forum.
    Quelle variable te donne le résultat à stocker ? S1g, payoff1g ou sumg ? ou les trois ? Y a-t-il un libellé ?
    A+

    NB - Pense à indenter ton code pour le mettre sur le forum (tel qu'il était il était illisible) ainsi qu'à le baliser

    Daccord (quelle est la différence entre identer et baliser?) merci

    variable = Range("option1").Value = option1

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 683
    Par défaut
    bonjour golden 7B, et bienvenu sur DVP
    je peux te proposer cette méthode (en fin de code à la place du:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("option1").Value = option1
    je mettrais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Range("A" & Worksheets("Feuil2").Range("A65000").Row +1).Value = option1
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    bonjour golden 7B, et bienvenu sur DVP
    je peux te proposer cette méthode (en fin de code à la place du:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("option1").Value = option1
    je mettrais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil2").Range("A" & Worksheets("Feuil2").Range("A65000").Row +1).Value = option1

    daccord, merci je vais essayer ca, et pour la boucle j'en fais une normal : ex.:
    For e = 1 to 100, etc..?

    merci

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par Golden7B
    Quelle est la différence entre identer et baliser?
    Indenter revient à placer une marge dans ton code situé à l'intérieur d'une boucle. Je l'ai fait pour toi dans la boucle For... Next, jète un oeil
    Baliser ton code permet de le reproduire tel qu'il est dans ton module. En mode d'édition, quand tu rédiges ton message, il y a plein de boutons en dessus de la zone de texte. Pour baliser ton code, tu le sélectionnes et tu fais un clic sur l'icône #. Pour citer une réponse, soit tu utilises le bouton "Citer" en bas de la réponse que l'on t'a donnée, soit tu encadres la copie de la partie de la réponse que tu veux citer des balises [ QUOTE ] et [ /QUOTE ] (sans espace) icône texte dans une bulle.
    Ne t'inquiète pas, ça vient vite

    Pour la réponse précédente, je doute... Je n'ai pas vu que tu voulais placer le résultat à partir de la ligne 65000

    A part ça, je n'ai pas vu de réponse à mes questions

    Enfin, quand tu fais "variable = Range("option1").Value = option1" tu veux une réponse Vrai ou faux ? variable est un boolean ?
    A+

  7. #7
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message

    Pour la réponse précédente, je doute... Je n'ai pas vu que tu voulais placer le résultat à partir de la ligne 65000
    Non effectivement, je veux que ce soit dans les cellules A1 à A100 (bref, 100 résultats indépendants....)

    Citation Envoyé par ouskel'n'or Voir le message
    A part ça, je n'ai pas vu de réponse à mes questions
    La seul variable qui m'intéresse est vraiment la valeur de "option1"

    Citation Envoyé par ouskel'n'or Voir le message
    Enfin, quand tu fais "variable = Range("option1").Value = option1" tu veux une réponse Vrai ou faux ? variable est un boolean ?
    A+
    Je suis désolé, je ne sais pas ce qu'est un boolean, mais je veux la valeur de option 1 (un chiffre) et par la suite, réinitialiser le programme au complet.... donc refaire le programme 100 fois indépendamment des résultats donnés.......(pour par la suite créer une distribution des résultats trouvés....)

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 683
    Par défaut
    elle le prend déjà en compte, mais si tu as déjà une valeur dans la cellule A151, tu vas l'écraser à chaque fois, le principe étant de partir d'une valeur très grande pour être sur de ne pas finir par écraser les cellules.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut
    Citation Envoyé par jpcheck Voir le message
    elle le prend déjà en compte, mais si tu as déjà une valeur dans la cellule A151, tu vas l'écraser à chaque fois, le principe étant de partir d'une valeur très grande pour être sur de ne pas finir par écraser les cellules.
    Ok, mais moi, techniquement, je voudrais n'avoir qu'à rouler mon programme une seule fois et par la suite, retrouver 100 résultats dans les cellules A1 à A100...

    Merci

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

Discussions similaires

  1. Calcul avec la boucle for et stockage des résultats
    Par Wel Kol dans le forum MATLAB
    Réponses: 5
    Dernier message: 02/04/2014, 11h21
  2. stockage des résultats dans un fichier texte
    Par nizar_triki dans le forum C++
    Réponses: 4
    Dernier message: 16/04/2012, 15h24
  3. Réponses: 5
    Dernier message: 30/06/2008, 14h43
  4. [Preferences] Stockage des options
    Par Yan83 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 03/05/2004, 10h38
  5. Réponses: 3
    Dernier message: 18/05/2003, 00h16

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