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

VB 6 et antérieur Discussion :

VB6 Arret boucle FOR NEXT par appui sur un bouton


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 41
    Points : 29
    Points
    29
    Par défaut VB6 Arret boucle FOR NEXT par appui sur un bouton
    Bonjour,

    J'effectue une boucle FOR NEXT permettant l'acquisition de données, par contre, le sampling des mesures s'effectue à intervales réguliers.

    Je saisis le nombre d'enregistrements voulus, puis appui sur démarrer et les mesures s'effectuent.

    Cependant, durant l'execution, le programme ne répond pas, et plus ennuyant, il est impossible d'arrêter la boucle en appuyant sur le bouton Arret.

    Voici mon bout de programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      row = 2
      For boucleval = 0 To spl
      DoEvents
     
      If main.arret.value=true Then
      Exit Sub
      End If
      Sleep 1000
    .
    .
    .
    .
    Next
    Pourriez vous me dire, SVP ce qui ne va pas ?

    Je vous en remercie par avance,


    Cdt

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Ben, sortir d'une bouble for avant son terme se fait par un exit for, pas un exit sub

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 41
    Points : 29
    Points
    29
    Par défaut
    Merci pour votre réponse,

    j'ai essayé, en remplacant Exit Sub par Exit For, mais il doit y avoir qque chose d'autre qui ne va pas car la boucle ne s'arrête toujours pas.


    Merci

  4. #4
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Bonjour,

    A la place de ton Exit For mets donc un msgbox et vérifie que le traitement passe bien par la msgbox comme ça tu sauras si la condition est validée.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 41
    Points : 29
    Points
    29
    Par défaut
    J'ai remplacé par une msgbox, mais la condition ne semble pas remplie.

    Le problème doit provenir de main.arret.value=true

    Est ce que cette commande est valable ?

    (ce que je souhaite c'est arreter la boucle lorsque le bouton Arret est appuyé)

    Merci par avance,


    Cdt

  6. #6
    Expert éminent sénior


    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
    Points : 20 040
    Points
    20 040
    Par défaut
    Peu-être une erreur sur un nom de variable , as tu mis la ligne

    en haut de ton code ?

  7. #7
    Membre régulier Avatar de hi-wave
    Inscrit en
    Décembre 2009
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 136
    Points : 114
    Points
    114
    Par défaut
    en espérant que cela puisse t'aider.
    essai de déclarer une variable globale au programme (de portée générale) de type boolean.
    ensuite a chaque tour de la boucle lit la valeur de la variable (false par exemple)
    et a l'événement clic du bouton change la propriété value de la variable.
    et en principe lorsque avant la fin de la boucle on clique sur le bouton, la propriété value de la variable est changée et cela doit influer sur le déroulement de la boucle.
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if varbool.value = true then  'le bouton a été cliqué
    exit for
    end if
    essais dis nous ce que tu obtiens.
    merci

  8. #8
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 417
    Points : 5 816
    Points
    5 816
    Par défaut
    Si tu es sûr que le problème vient de "main.arret.value=true", il est possible de le contourner en ajoutant un TextBox nommé TextOK par exemple de propriété Visible = False et initialisé avec .text vide
    Dans l'évènement Click du bouton arret tu mets ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Private Sub Arret_Click()
       TextOK.Text = 1
     ...................
     ...................
     ..................
     'suite de ton code
    End Sub
    Maintenant, dans ton bout de code envoyé tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     row = 2
      For boucleval = 0 To spl
      DoEvents
     
          If CInt(main.TextOK.Text)=1 Then Exit For
     
      Sleep 1000
    .
    .
    .
    Next
    C'est un peu détourné mais cela peut aboutir !

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

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    La fonction Sleep n'est surement pas la meilleure chose à faire dans ce cas

    Utilise un Timer

Discussions similaires

  1. boucle FOR NEXT et remplacer chiffres par lettres ou mots
    Par momoram dans le forum VBA Access
    Réponses: 6
    Dernier message: 23/12/2013, 11h02
  2. Boucle For Next infinie sur enregistrement des pieces jointes
    Par moumerico dans le forum Général VBA
    Réponses: 4
    Dernier message: 25/08/2010, 09h43
  3. faire une boucle for..next sur des textbox
    Par Actarusdu60 dans le forum VB.NET
    Réponses: 1
    Dernier message: 28/11/2008, 21h51
  4. Réponses: 3
    Dernier message: 04/04/2007, 16h22
  5. [VB6] Problème contrôle Timer et boucle For-Next ...
    Par Stéphane BEHMENBURG dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 01/12/2005, 17h36

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