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 :

Petit problème avec boucle DO


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut Petit problème avec boucle DO
    Bonjour !

    J'ai un petit problème avec la boucle do que j'essaie de coder :

    Je veux incrémenter ma boucle en remplaçant à chaque nouvelle incrémentation le K0 par le Ki trouvé à l'incrémentation précédente, seulement ça en fonctionne pas, à chaque fois cela me renvoie dans la cellule un Ki égal à 0.9 soit la valeur initiale de K0.
    Je ne vois pas le problème dans mon code, j'aurais besoin d'un petit coup de pouce !

    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
    Dim CumulC As Double
      Dim K0 As Double
      Dim Ki As Double
     
      K0 = 0.9
      CumulC = 55
     
            'calcul de K
     Do
     
       CumulC = CumulC + 2
     
     
        If Range("C11").Offset(0, i).Value < 390 Then
            Ki = K0 - 0.116 * (1 / CumulC) * 2
        Else
            Ki = K0 - 1.5 * 10 ^ -4
        End If
     
            K0=Ki  
     
      Loop Until (Range("B17").Offset(0, i).Value - CumulC >= -2) And (Range("B17").Offset(0, i).Value - CumulC <= 2)
     
    Ki = Range("C5").Offset(0, i)
    Merci beaucoup

    Bonne journée à tous !

  2. #2
    Membre expérimenté Avatar de vanhoa
    Homme Profil pro
    Analyste Financier
    Inscrit en
    Octobre 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Analyste Financier
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 117
    Par défaut
    Bonjour,

    Je pense que tu as voulu faire une boucle du type For non? Car tu utilise une variable i qui n'est pas definie. Du coup, ton If ne marche pas et tu retombes sur K0=Ki. Ou peut etre que tu as oublie de copier une partie du code?

    vanhoa

  3. #3
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,


    ton code n'effectue aucune modification sur ton classeur ....

    d'ou sort ta variable i ? je ne vois aucune déclaration, aucune affectation ...

    en supposant que i = 0 ... ton Ki renvoi TOUJOURS le contenu de la cellule C5 de la feuille active ...



    En passant , n'oublie pas de rajouter en haut de toutes tes pages de codes la ligne :
    pour détecter plus facilement des problèmes de déclaration de variables...

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut
    Effectivement, il manque un bout

    A force de passer du temps sur le code on a l'impression que c'est aussi évident pour les autres que pour soi, désolé ^^

    Il y a bien une boucle For qui englobe le tout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 0 To Nb_Mois - 2
     
    'boucle do
     
    Next i
    Elle fonctionne bien par contre ça j'en suis sure

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    et donc il y as quoi dans ta cellule C5 ? et les colonnes sa droite..

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut
    Il n'y a rien dans C5, au contraire je veux copier la valeur dedans, j'ai inversé ce bout la manifestement...

    Et du coup ça a l'air de fonctionner...

    Désolé de vous avoir fait perdre votre temps, j'étais persuadée d'un problème dans la boucle et je n'ai pas du tout pensé à une erreur comme ça

    Merci d'avoir pointer ce détail

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut
    Re-bonjour!

    Je reviens vers vous car j'ai de nouveau un problème sur ma boucle :

    Lorsque je lance l'exéctution du code, excel plante quand il atteint i=1, en gros quand il exécute la partie Else de la boucle if.

    Je ne comprends pas trop d'ou ça vient, car losqu'il n'y avait pas la boucle if cela fonctionnait bien... Est ce que j'ai une erreur dans la syntax ? ou quelque chose comme ça ?

    Merci beaucoup pour votre aide, c'est pour le boulot et je ne connais pas très bien vba donc je craque un peu


    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
    For i = 0 To Nb_Mois - 2
     
     
      Dim CumulC As Double
      Dim K0 As Double
      Dim Ki As Double
     
      If i = 0 Then
     
      K0 = Range("B5")
      CumulC = 55
     
       Do
     
       CumulC = CumulC + 2
     
     
        If Range("B11") < 390 Then
            Ki = K0 - 0.116 * (1 / CumulC) * 2
        Else
            Ki = K0 - 1.5 * 10 ^ -4 * 2
        End If
     
            K0 = Ki
     
      Loop Until (Range("B17") - CumulC >= -2) And (Range("B17") - CumulC <= 2)
     
    Range("C5") = Ki
    Range("C5").NumberFormat = "0.00"
     
      Else
     
      K0 = Range("C5").Offset(0, i)
      CumulC = Range("C17").Offset(0, i)
     
     
            'calcul de K
     Do
     
       CumulC = CumulC + 2
     
     
        If Range("C11").Offset(0, i).Value < 390 Then
            Ki = K0 - 0.116 * (1 / CumulC) * 2
        Else
            Ki = K0 - 1.5 * 10 ^ -4 * 2
        End If
     
            K0 = Ki
     
      Loop Until (Range("C17").Offset(0, i).Value - CumulC >= -2) And (Range("C17").Offset(0, i).Value - CumulC <= 2)
     
    Range("D5").Offset(0, i) = Ki
    Range("D5").Offset(0, i).NumberFormat = "0.00"
     
    End If

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Je n'ai pas essayé de comprendre ce que fait ton code... mais je vois une différence pour le cas ou i = 0 tu Initialise ta variable CumulC à 55 pour les autres cas tu n'itialise pas cette variable et donc CumulC à la valeur obtenu à la fin de ta boucle précédente .... reste à savoir si ensuite tes incrémentation successives (+2) permettent d'obtenir les conditions de sortie de ta boucle while ...

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 42
    Par défaut
    Bon et bien ça a fini par fonctionner mais je en sais pas trop pourquoi.
    J'a modifié l'incrémentation suite à ta remarque, ça a fonctionné donc je pensais que c'était ça, mais finalement ça marche aussi avec + 2
    Bref mystère,

    Merci !

    Bonne soirée

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

Discussions similaires

  1. Un petit problème avec pop
    Par Paulinho dans le forum C++
    Réponses: 4
    Dernier message: 13/11/2005, 20h57
  2. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 18h39
  3. Petit problème avec Line Input
    Par GrosQuicK dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/09/2005, 12h47
  4. (Petit ?) problème avec une page contenant du Flash
    Par ologram dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/09/2005, 18h45
  5. Petit problème avec SDL
    Par Nyarlathotep dans le forum C
    Réponses: 10
    Dernier message: 01/07/2005, 09h10

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