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 :

Stopper une boucle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 32
    Par défaut Stopper une boucle
    Bonjour,

    J'ai un petit souci avec une boucle FOR je ne sais pas comment en sortir.
    Je remplis un formulaire qui dispose d'un bouton OK et d'un ANNULER et le valide en cliquant sur OK et a ce moment la je rentre dans ma boucle FOR qui verifie toutes les entrees de mon formulaire : si je me suis trompe quelque part il y a une MsgBox qui me demande de corriger etc. jusqu'a ce que ce soit tout bon.
    Cependant, si je clique une premiere fois sur OK ca suffit pour qu'il rentre dans la boucle, et si par la suite je veux arreter la saisie et revenir a zero, je vais donc cliquer sur ANNULER. Ca me ramene bien au debut mais ca ne me fait pas sortir de la boucle du OK et du coup celle la engendre des erreurs. Voila un bout de code :

    Quand je clique sur ANNULER :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub Cancelar_Click()
         Ropa.Hide 'Ca me sort du formulaire que je suis en train de remplir
         Designacion.Inic_Desi_Entrada 'Mise a zero du formulaire precedent
         Designacion.Show 'Montre le formulaire precedent
    End Sub
    Quand je clique sur OK :
    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
     
    Sub Validar_Click()
     
         Ropa.Hide
         Registrar_entrada.Inic_entrada
         Dim i as Integer
         Dim art as String
         Dim Cant as Integer
         Dim Num as Integer
         Num = Ropa.Selec_ropa.ListCount
     
        'La je vais rentrer dans ma boucle. Ropa.Controls("Cant" & i + 1) c'est le
        'champ ou j'ai rentre la quantite de l'article i, et que je veux verifier avant
        'de passer au formulaire suivant
        For i = 0 to Num - 1
              art = Ropa.Selec_ropa.List(i,0)
              If Not IsNumeric(Ropa.Controls("Cant" & i + 1).Value) Then
                    MsgBox ("Verifica la cantidad del articulo: " + art + ".")
                    Ropa.Controls("Cant" & i + 1).Value = Empty
                    Ropa.Controls("Cant" & i + 1).SetFocus
                    Ropa.Show
              End If
              Cant = Ropa.Controls("Cant" & i + 1).Value
              Registrar_entrada.Detalle_des.AddItem art
              Registrar_entrada.Detalle_cant.AddItem Cant
              Registrar_entrada.Detalle_fec.AddItem "--"
         Next i
     
    End Sub
    Voila donc le truc c'est que je sais pas si je dois mettre qqchose dans le code de OK pour dire que si je click sur ANNULER je sors de la boucle (et si je dois le faire je ne sais pas comment), ou si plutot je devrais faire qqchose pr que ANNULER soit prioritaire (idem, je ne sais pas comment...)

    Merci beaucoup de votre aide !
    Carole

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Par défaut
    hola!

    tu peux rajouter à ton msg box vbokcancel, et mettre un élément string devant la message box, qui contiendra la réponse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strReponse = msgbox("lquhqlm", vbokcancel)
    if strReponse = vbcancel then... ou goto...

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Il te suffit de jouer avec une variable booléenne Arret déclarée avant toutes tes procédures et fonctions

    Il te faut alors simplement passer cette booléenne à True en cliquant sur annuler.
    Dans ta boucle For : pointer vers cette variable et si elle est à True :
    1) la repasser à False
    2) quitter ta boucle (exit For) ou ta procédure (exit sub) selon ce que tu veux.

    Ne pas utiliser de Goto, s'il te plait (inutile et peu recommandable)
    Bonne continuation...

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    oui, en effet Exit for est plus approprié

  5. #5
    Membre averti
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 32
    Par défaut
    OK super merci beaucoup de votre aide ca marche impec

    A bientot
    Carole

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Utilises la valeur retournée par la msgbox


    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
     
    Sub Validar_Click()
     
         Ropa.Hide
         Registrar_entrada.Inic_entrada
         Dim i as Integer
         Dim art as String
         Dim Cant as Integer
         Dim Num as Integer
     
         'Ajout Variable Reponse
         Dim Reponse As Integer
     
         Num = Ropa.Selec_ropa.ListCount
     
        'La je vais rentrer dans ma boucle. Ropa.Controls("Cant" & i + 1) c'est le
        'champ ou j'ai rentre la quantite de l'article i, et que je veux verifier avant
        'de passer au formulaire suivant
        For i = 0 to Num - 1
              art = Ropa.Selec_ropa.List(i,0)
              If Not IsNumeric(Ropa.Controls("Cant" & i + 1).Value) Then
                    Reponse = MsgBox ("Verifica la cantidad del articulo: " + art + ".")
     
                    If Reponse = vbCancel Then
                         goto Sortir 
                    End If                
     
                   Ropa.Controls("Cant" & i + 1).Value = Empty
                    Ropa.Controls("Cant" & i + 1).SetFocus
                    Ropa.Show
     
              End If
              Cant = Ropa.Controls("Cant" & i + 1).Value
              Registrar_entrada.Detalle_des.AddItem art
              Registrar_entrada.Detalle_cant.AddItem Cant
              Registrar_entrada.Detalle_fec.AddItem "--"
         Next i
     
    sortir:
     
    End Sub

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

Discussions similaires

  1. Stopper une boucle
    Par Cliffe dans le forum Langage
    Réponses: 5
    Dernier message: 03/02/2012, 10h38
  2. Stopper une boucle while
    Par Emotion dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/01/2010, 09h57
  3. Stopper une boucle
    Par jocqfd dans le forum MATLAB
    Réponses: 5
    Dernier message: 07/01/2008, 11h34
  4. N'arrive pas a stopper une boucle
    Par Mac Twist dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 16/07/2007, 12h25
  5. stopper une boucle en attendant un evenement
    Par Psykorel dans le forum Langage
    Réponses: 4
    Dernier message: 08/01/2006, 23h08

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