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 :

Comparaison de variables dans boucles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut Comparaison de variables dans boucles
    Bonjour,

    je suis débutant en VBA, et j'ai quelques soucis dans la création d'un programe de simulation.

    Dans ce programme il est nécessaire de définir un nombre de boucle bien définit, qui va conditionner la durée de la simulation. "Au bout de x boucles, arrêt de la simulation" (avec x définit par une variable)

    Or je n'arrive pas à imposer à une boucle do.., ou for.. une variable à atteindre pour s'arrêter.

    Pourriez vous m'aider ?

    Ex conceptuel de la boucle

    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
    Private Sub Test_button_Click()
     
    Dim A
    Dim B
     
    A = 0
    B = Box_B
     
    Do until A > B
     
    A = A + 1
     
    Loop
    MsgBox "Fin de la simulation"
    End Sub

    J'ai le même soucis avec les boucles conditionnelles.. Cela marche très bien lorsque je mets une condition variable vs nombre , mais je n'arrive pas à réaliser ma condition variable vs variable. Sachant que ces varaibles sont rattachées à des valeurs dans les text_box

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If A>B Then
    msgbox "A>B"
    End if

    Merci d'avance

  2. #2
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 155
    Par défaut
    Salut,

    Tu ne rentres jamais dans la boucle parce que A>B où A=0 ne va pas être vraie très souvent (pour pas dire jamais). Si tu changes > par < comme ci-dessous, ça devrait aller mieux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Test_button_Click()
    Dim A
    Dim B
    A = 0
    B = Box_B
     
    Do until A < B
        A = A + 1
    Loop
    MsgBox "Fin de la simulation"
    End Sub
    Ce n'était donc pas un problème VBA, mais une question de logique on dirait

  3. #3
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    Citation Envoyé par AnneCa Voir le message
    Tu ne rentres jamais dans la boucle parce que A>B où A=0 ne va pas être vraie très souvent (pour pas dire jamais). Si tu changes > par < comme ci-dessous, ça devrait aller mieux.
    avec un Do Until A<B, je doute que ce soit beaucoup mieux !

    MAis peut-être qu'avec un Do While ....

  4. #4
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 155
    Par défaut
    ooooh, la honte !! Merci thierryAim d'avoir relu mon commentaire.

    benoit.r, voici une correction (soufflée par Thierry).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Test_button_Click()
    Dim A
    Dim B
    A = 0
    B = Box_B
    debug.print B 
    Do While A < B
        A = A + 1
    Loop
    MsgBox "Fin de la simulation"
    End Sub
    Dans ton premier message, tu disais avoir des soucis avec variable vs variable. Es-tu certain que A et B sont tous les 2 numériques?

  5. #5
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    la honte n'a jamais tué personne !
    (sinon, je serais mort depuis longtemps )

    Citation Envoyé par AnneCa Voir le message
    Es-tu certain que A et B sont tous les 2 numériques?
    Ca, par contre c'est judicieux

    Parce que avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim A
    Dim B
    A = 0
    B = Box_B
    il va y avoir des couacs !! (car je pense bien que B = Box_B est le contenu d'un TextBox, la propriété Text étant celle par défaut, sauf que c'est une String !)

    Mais j'attendais la suite des tests de benoit

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut
    dsl pour la logique, effectivement je me suis trompé dans mon exemple...

    Merci de m'avoir mis sur la voie pour la déclaration des variables "as string", çà marche correctement désormais.


    Merci pour vos réponses rapides.

    J'ai aussi une autre question au sujet de la duplication d'un code en fonction d'une variable, mais je vais reposter un autre post à ce sujet.

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

Discussions similaires

  1. Comparaison de dates dans boucle
    Par gubix dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/08/2010, 09h58
  2. Récupération de variables dans boucle
    Par crughon dans le forum Langage
    Réponses: 10
    Dernier message: 04/03/2010, 16h45
  3. Problème avec variable dans boucle DO WHILE
    Par bandit_debutant dans le forum Langage
    Réponses: 13
    Dernier message: 25/02/2008, 16h34
  4. affecter variable dans boucle FOR batch
    Par efferalgan dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 25/10/2007, 14h25
  5. [SHELL] Variable dans boucle for
    Par magicwill dans le forum Linux
    Réponses: 6
    Dernier message: 11/08/2007, 11h31

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