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 :

Imbrication de boucles if, do et for


Sujet :

Macros et VBA Excel

  1. #21
    Invité
    Invité(e)
    Par défaut
    tu as testé ce code uniquement sans rien d'autre?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
    Dim x As Integer
     For x = -2 To 9
        Debug.Print x 'Affiche le résulta dans la fenêtre d'exécution [CTRL]  + [G]
    Next
    end sub
    Dernière modification par AlainTech ; 13/05/2014 à 07h48. Motif: Suppression de la citation inutile

  2. #22
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Citation Envoyé par eliamat Voir le message
    […] ce qui fait que j'ai infiniment A2<B
    Donc la logique est bien en cause :
    le code a dû être attaqué sans réflexion couchée sur papier afin de résoudre la problématique, non ?

    Et si tel est le cas, une fois cette réflexion menée, la solution n'en sera que plus évidente …

    __________________________________________________________________________________________
    If you can’t explain it simply, you don’t understand it well enough … (Albert Einstein)

  3. #23
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 87
    Points : 44
    Points
    44
    Par défaut
    Merci à vous
    rdurupt je ne sais pas exactement à quoi correspond le sub donc je n'ai pas testé...cependant j'ai résolu mon problème de curseur mais un autre problème est apparu ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    If A <B Then
      Do Until A2 >= B 'les conditions de mon problème ont changé comparé à mon message d'hier ou je devais avoir A=B
        For x = -2.17 To 9.22       
         (mes instructions pour calculer A2)
        Next
     If A2 >=B Then Exit Do
      Loop
    End If
    rdurupt , tu avais mentionné dans tes précédents post le if...then Exit Do..j'avais oublié d'ajouter ça à mon code, Merci.
    Seulement en mettant cette condition, le calcul (que jai vérifié pas à pas) continue quand même lorsque A2>B..

  4. #24
    Invité
    Invité(e)
    Par défaut
    (mes instructions pour calculer A2) ou tu modifies A2?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
     A2 = 1
     B = 5
     
      Do While A2 < B 'les conditions de mon problème ont changé comparé à mon message d'hier ou je devais avoir A=B
        For x = -2.17 To 9.22 Step 0.01 'Je défini le pas de l'incrémentation
     
         '(mes instructions pour calculer A2)
        Next
      A2 = Round(x, 2) - 0.01
      Loop
    End Sub
    Dernière modification par AlainTech ; 13/05/2014 à 07h50. Motif: Suppression de la citation inutile

  5. #25
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 87
    Points : 44
    Points
    44
    Par défaut
    oulaa désolée mais je n'ai absolument pas compris le code..
    Pour répondre à ta question dans un premier temps je calcule A avec une valeur de x que je pose par hypothèse. Ensuite si et seulement si A<B je fais varier l'un des paramètres intervenant dans le calcul de A: ce paramètre c'est x. je connais les limites de ce x : -2.17 et 9.22. Je calcule le nouveau A que j'appelle A2 pour ne pas écraser la valeur dans A. Et donc des que j'obtiens un x qui me permet d'avoir A>=B (la condition a changé, au départ je voulais uniquement A=B mais peu importe maintenant) la boucle Do doit s'arrêter..

    rdurupt : en fait en mettant do while A2<B j'ai pas besoin de ce exit for non? mais visiblement je suis vraiment nulle parce que j'ai testé cette méthode et pourtant la boucle continue!

  6. #26
    Invité
    Invité(e)
    Par défaut
    si tu fais une boucle du type For x = -2.17 To 9.22 x va prendre la valeur -2.17 puis -1.17, 0.17 1.17.
    toi tu veux de -2.17 à 9.22 si je définis un pas de 0.01 step 0.01 ton compteur de x est -2.17,-2.18,-2.19.....,9.20,9.21,9.22.

    Citation Envoyé par eliamat Voir le message
    rdurupt : en fait en mettant do while A2<B j'ai pas besoin de ce exit for non? mais visiblement je suis vraiment nulle parce que j'ai testé cette méthode et pourtant la boucle continue!
    le problème est que je ne vois physiquement si A2 change ta condition de sortie est elle conforme si je ne le vois pas je peux pas répondre!
    dans notre cas la condition de sortie est la contre partie de do while A<B donc A>=B OK?
    Dernière modification par AlainTech ; 13/05/2014 à 07h51. Motif: Fusion de 2 messages

  7. #27
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 87
    Points : 44
    Points
    44
    Par défaut
    oui merci pour cette indication j'ai changé dans mon programme
    mais je comprends vraiment pas pourquoi lorsque le while n'est plus respecté la boucle continue

  8. #28
    Invité
    Invité(e)
    Par défaut
    Vois tu A2 être plus grand ou égale B.
    ton traitement ce fait dans la même sub ou un autre?
    Dernière modification par AlainTech ; 13/05/2014 à 21h41. Motif: Suppression de la citation inutile

  9. #29
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 87
    Points : 44
    Points
    44
    Par défaut
    oui je te joins une capture écran:

    Ni2 correspond au A2 en fait.
    J'ai Ni2=11.82 alors que Ne=10...
    Images attachées Images attachées  

  10. #30
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 87
    Points : 44
    Points
    44
    Par défaut
    Après moult essais depuis plus d'une heure j'ai enfin réussi! Voilà ce que ça donne si ça en intéresse quelques uns:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    If A < B Then
      Do
        For x = -2.17 To 9.22 'Step 0.1
    (mes instrcutions permettant de calculer A2)
    A2=...
    If A2 >=B Then
    Exit Do
    End If
        Next
       Loop While Ni2 < Ne
    End If

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Imbrication de boucles For
    Par dominos dans le forum Débuter
    Réponses: 4
    Dernier message: 03/04/2010, 18h53
  2. Imbrication de boucles
    Par vega95 dans le forum Général Python
    Réponses: 10
    Dernier message: 14/12/2009, 08h35
  3. [MySQL] Imbrication de boucle if /else et while
    Par jmtrivia dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/04/2009, 13h11
  4. imbrication de boucle (exemple :d'upload)
    Par new-dmx dans le forum Langage
    Réponses: 2
    Dernier message: 01/09/2008, 16h18
  5. Encore problème d'imbrication de boucles
    Par flora806 dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2008, 16h25

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