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 :

Problème de boucle FOR


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Par défaut Problème de boucle FOR
    Bonjour,

    Il s'agit d'un petit programme de débutant et j'éprouve quelques difficultées avec la boucle For de mon programme. Comme j'ai de la difficulté à trouver les mots afin que vous compreniez bien mon problème, je vais mettre mon code ici et j'aimerais bien que vous essayeriez mon code afin de comprendre son ambiguité: (Ma question se retrouve a la fin)

    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
    Public Sub NewtonRaphson()
     
    'Déclaration des variables utilisées par notre programme
    Dim ValeurNominale As Double
    Dim ValeurDeRemboursement As Double
    Dim TauxIntérêtCoupons As Double
    Dim DuréeDeVieObligation As Double
    Dim PrixObligation As Double
    Dim TauxIntérêtEstimé As Double
    Dim RendementObligation As Double
    Dim Itération As Integer
     
     
    'Permet la saisie de données nécessaire afin d'exécuter le programme correctement
    ValeurNominale = InputBox("Veuillez entrer la valeur nominale de votre obligation. Par exemple: 100")
    ValeurDeRemboursement = InputBox("Veuillez entrer la valeur de remboursement de votre obligation. Par exemple: 100")
    TauxIntérêtCoupons = InputBox("Veuillez entrer le taux d'intérêt de vos coupons. Par exemple: 0.08")
    DuréeDeVieObligation = InputBox("Veuillez entrer la durée de vie de votre obligation. Par exemple: 6")
    PrixObligation = InputBox("Veuillez entrer le prix de votre obligation. Par exemple: 90")
     
    'k
    'Permet de calculer le "rendement" de l'obligation
    RendementObligation = (PrixObligation - ValeurDeRemboursement) / ValeurDeRemboursement
     
    'i0
    'Notre première valeure du taux d'intérêt estimée
    'Notez que le numérateur correspond à la portion moyenne d'intérêt dans chaque coupon
    'Notez que le dénominateur correspond au montant moyen investi à chaque période
    TauxIntérêtEstimé = (TauxIntérêtCoupons - (RendementObligation / DuréeDeVieObligation)) / (1 + (((DuréeDeVieObligation + 1) * RendementObligation) / (2 * DuréeDeVieObligation)))
     
     
    'Itération de Newton
    For Itération = 0 To 250
     
        'Ecrit le numéro de l'itération dans la feuille de calcul
        Range("A1").Offset(Itération, 0) = Itération
     
     
        'Ecrit le TauxIntérêtEstimé dans la feuille de calcul
        Range("B1").Offset(Itération, 0) = TauxIntérêtEstimé * (1 + (((TauxIntérêtCoupons * ((1 - ((1 + TauxIntérêtEstimé) ^ (-DuréeDeVieObligation))) / (TauxIntérêtEstimé))) + ((1 + TauxIntérêtEstimé) ^ (-DuréeDeVieObligation)) - (PrixObligation / ValeurDeRemboursement)) / (((TauxIntérêtCoupons * ((1 - ((1 + TauxIntérêtEstimé) ^ (-DuréeDeVieObligation))) / (TauxIntérêtEstimé))) + (DuréeDeVieObligation * (TauxIntérêtEstimé - TauxIntérêtCoupons) * ((1 + TauxIntérêtEstimé) ^ (-(DuréeDeVieObligation + 1))))))))
     
     
    Next Itération
     
    End Sub
    ---> Alors j'aimerais que vous regarder sur la feuille Excel dans la colonne B. Mes chiffres de B0, B1 sont bons malheureusement dès B2 ils ne le sont plus simplement car je dois trouver une facon que mon programme utilise le TauxIntérêtEstimé precedent ( Ainsi, pour avoir le bon taux d'interet pour B2, il faudrait que j'utilise le taux trouver a la cellule B1 mais je ne sais pas comment faire )pour le calcul qui suit les mots suivant Range("B1").Offset(Itération, 0) = .....

    Alors si quelqu'un peut m'aider, cela serait grandement apprecier.

    Merci beaucoup de votre aide

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Bonjour bryan

    Je ne sais pas trop si j'ai bien compris ta demande !
    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
    Application.ScreenUpdating = False
    'Itération de Newton
    For itération = 1 To 251
    
    'Ecrit le numéro de l'itération dans la feuille de calcul
    Cells(itération, 1) = itération
    
    
    'Ecrit le TauxIntérêtEstimé dans la feuille de calcul
    report = tauxintérêtestimé * (1 + (((TauxIntérêtCoupons * ((1 - ((1 + tauxintérêtestimé) ^ (-DuréeDeVieObligation))) / (tauxintérêtestimé))) + ((1 + tauxintérêtestimé) ^ (-DuréeDeVieObligation)) - (PrixObligation / ValeurDeRemboursement)) / (((TauxIntérêtCoupons * ((1 - ((1 + tauxintérêtestimé) ^ (-DuréeDeVieObligation))) / (tauxintérêtestimé))) + (DuréeDeVieObligation * (tauxintérêtestimé - TauxIntérêtCoupons) * ((1 + tauxintérêtestimé) ^ (-(DuréeDeVieObligation + 1))))))))
    
    tauxintérêtestimé = report
    Cells(itération, 2) = report
    Next itération
    
    Application.ScreenUpdating = True
    Application.screen.... fige l'écran pendant le déroulement de la macro => gain de temps, confort

    range("A1").offset(itération,0) est remplacé par cells(itération,1) plus économe et rapide. la valeur initiale de "itération" est donc passée à 1

    en espérant que...

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Par défaut
    Bonjour,
    Merci pour votre aide. Malheureusement, cela n'est pas ce que je recherche. Je dois admettre que je n'ai pas été le plus clair...sait pourquoi je vais essayer d'expliquer de facon plus comprehensible.

    -->Si on prends le programme initial que j'ai écrit, On remarque que les valeurs trouver dans la colonne B ne convergent pas( ils devraient tendre vers le meme nombre quelque part). Cela est du au fait qu'il faudrait que la variable TauxIntérêtEstimé ( qui se retrouve dans la boucle FOR) prenne la valeur precedente calculer dans la colonne B. Voici un Exemple:

    Disons que mon programme aurait trouver ce taux initialement
    TauxIntérêtEstimé = 0.01

    alors dans la boucle FOR, il faut que TauxIntérêtEstimé ait comme valeur 0.01 pour l'iteration 0. Cette valeur se retrouvera dans la case B1. Par la suite lors de la l'iteration 1, il faudrait que TauxIntérêtEstimé ait comme valeur la case B1. Par la suite, il faudrait que TauxIntérêtEstimé ait comme valeur B2 pour l'iteration 2 et ainsi de suite...

    Malheureusement, je ne suis pas capable de faire changer le TauxIntérêtEstimé dans ma boucle FOR et sait pourquoi je n'arrive pas a faire converger les chiffres.

    J'espere que cela est plus clair ainsi.

    Merci et desole de ne pas mettre d'accent dans mon message, sait que je dois utiliser le code ASCII a chaque fois.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Re,

    Ben, je crois que c'est ce que j'ai fait avec la variable report qui change la valeur de 'tauxinteretestimé' pour la prochaine itération
    cette nouvelle valeur est bien inscrite dans la colonne B par 'cells(iteration,2)'

    ou alors, j'ai rien compris, ce qui ne m'étonnerait pas d'ailleurs

    Michel

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Par défaut
    Alors, semble-t-il qu'il y a quelque chose que je fais de pas correct...Je vais travailler la dessus et si jamais je n'y arrive pas je vous enverrai un petit MP.

    Merci

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    RE,
    Tu es nouveau, d'accord, mais la règle de tout forum est de ne pas utiliser les messages personnels pour des questions techniques.

    A+
    Michel

  7. #7
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 15
    Par défaut
    Re,
    Hey oui, je suis nouveau sur ce forum ainsi que dans mon apprentissage de VBA...Je voulais vous remercier car, grace a votre aide, j'ai reussi a concevoir le programme que je voulais.

    Bonne journee,

    Bryan

  8. #8
    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
    Hein ? Quelqu'un a parlé des règles ?
    Citation Envoyé par Michel_M
    RE,
    Tu es nouveau, d'accord, mais la règle de tout forum est de ne pas utiliser les messages personnels pour des questions techniques.

    A+
    Michel
    Ça c'est bien ! Bon ! Je peux retourner à ma sieste alors !

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Citation Envoyé par ouskel'n'or
    Hein ? Quelqu'un a parlé des règles ?Ça c'est bien ! Bon ! Je peux retourner à ma sieste alors !
    Bonjour,

    Message posté hier à 18,41h !!!! c'est plus une sieste, çà, c'est encore de l'hibernation !!!

    amicalement
    Michel

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

Discussions similaires

  1. [ActionScript] Problème avec boucle 'FOR'
    Par BnA dans le forum Flash
    Réponses: 7
    Dernier message: 02/11/2006, 09h26
  2. [VBS][Débutant] Problème syntaxe boucle For
    Par _alex_ dans le forum VBScript
    Réponses: 2
    Dernier message: 26/07/2006, 14h26
  3. problème dans boucle for de lecture de fichier ini
    Par chourmo dans le forum Delphi
    Réponses: 3
    Dernier message: 06/07/2006, 09h31
  4. [batch]inventaire réseau-problème de boucle "for"
    Par mathieu_r dans le forum Windows
    Réponses: 1
    Dernier message: 23/06/2006, 20h17
  5. [Eval] Problème de boucle for sur des tableaux
    Par battle_benny dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/01/2006, 23h55

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