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 :

Prb Boucle infinie


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 39
    Par défaut Prb Boucle infinie
    Bonjour,

    j'ai fait deux boucle Do ... Loop

    il se trouve que je n'arrive pas à en sortir.
    il doit y avoir un critère manquant...


    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
     
    Dim Nbpoints as Variant
    Dim rep as Boolean
     
    Do
    Do
    Nbpoints = InputBox("Combien de points voulez-vous créer? ", "TRAPRO DESIGN", "Entrer le nombre de points ici")
    If StrPtr(Nbpoints) = 0 Then
        rep = MsgBox("Souhaitez-vous quitter l'application?", vbExclamation + vbMsgBoxSetForeground + vbYesNo, "TRAPRO DESIGN")
        If rep = True Then
            'MsgBox "Procédure annulée"
            ActiveWorkbook.Close
            Exit Sub
        End If
    End If
    Loop While Nbpoints = ""
     
    If Not IsNumeric(Nbpoints) Then
        MsgBox "La saissie : " & Nbpoints & " est invalide!", vbExclamation, "TRAPRO DESIGN"
    End If
     
    If IsNumeric(Nbpoints) And Nbpoints <= 0 Then
        MsgBox "La saissie : " & Nbpoints & " est invalide! Il ne peut y avoir un nombre nul ou négatif de points.", vbExclamation, "TRAPRO DESIGN"
    End If
     
    If IsNumeric(Nbpoints) And Nbpoints > 50 Then
        MsgBox "La saissie : " & Nbpoints & " est invalide! Le maximum est de 50 points.", vbExclamation, "TRAPRO DESIGN"
    End If
    Loop While IsNumeric(Nbpoints) And 0 < Nbpoints <= 50
    Merci d'avance de votre aide!!

    JB

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour,
    Quand tu définis ta boucle il faut définir la condition de sortie
    Code Exemple : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub test()
    Dim i As Integer
    Do Until i = 5 ' Until i = 5 condition de sortie
        i = i + 1
    Loop
     
    Do
        i = i + 1
    if i=5 then exit do
    Loop
     
    Do While IsNumeric(Nbpoints) And 0 < Nbpoints <= 50
       'Code....
    Loop
    End Sub

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Ecrit plutôt.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Rep As VbMsgBoxResult
    Rep = msgbox ...
    If Rep = vbOK Then
    Aussi,
    StrPtr(Nbpoints) = 0 correspond à VbNullString, préfère VbNullString, parce que tu ne manipule pas de pointeur ce qui est toujours préférable.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 39
    Par défaut
    merci Nouveau2 c'est modifié

    rdurupt
    quand la boucle se sera effectuée 5 fois on la fermera que la valeur de Nbpoints soit bonne ou pas. Je me trompe?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Si i= 5 alors on sort de la boucle dans mon exemple on passe 5 fois.
    autre exemple ou on ne passe pas dans la boucle!
    Code on ne passe pas dans la boucle! : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
    Dim i As Integer
    i = 5
    Do Until i = 5 ' Until i = 5 condition de sortie
        i = i + 1
    Loop

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 39
    Par défaut
    donc avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do Until IsNumeric(Nbpoints) And 0 < Nbpoints <= 50
    se sera bon?

  7. #7
    Invité
    Invité(e)
    Par défaut
    oui mais tout dépend si la valeur est acquise avant la boucle ou dans la boucle!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'si la valeur est acquise dans la boucle et si la condition n'est pas rempli avant d'entrer dans la boucle comme dans l'exemple précédent:
    'i = 5
    'Do Until i = 5 ' Until i = 5 condition de sortie
    Do Until IsNumeric(Nbpoints) And 0 < Nbpoints <= 50
    si non un peut comme tu as fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Do
    if  IsNumeric(Nbpoints) And 0 < Nbpoints <= 50 then exit do
    Loop

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

Discussions similaires

  1. [Boucle Infinie] pour un menu
    Par NhyMbuS dans le forum C++
    Réponses: 5
    Dernier message: 20/07/2005, 09h14
  2. symptome de la boucle infinie dans une requete
    Par ouam81 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 27/05/2005, 12h10
  3. Réponses: 15
    Dernier message: 24/05/2005, 08h34
  4. [Socket] Pb de boucle infinie
    Par Myogtha dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 10/06/2004, 14h10
  5. [C#] Comment eviter les boucles infinies ?
    Par Thomas Lebrun dans le forum C#
    Réponses: 12
    Dernier message: 09/06/2004, 00h04

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