Stopper une boucle while....

Résolu
Mohbk Messages postés 1 Statut Membre -  
 mohbeka -
Voici mon code
comment stpper cette boucle? Merci de m'aider

'cette fonction devrait arrêter une fois que la valeur saisie est valide (valeur entre les bornes et non nulle)
'notre fonction
Private Function saisir_nombre123(ByVal message As String, ByVal borne1 As Double, ByVal borne2 As Double) As Double
                 
 Dim nb_saisi As Variant
 Dim valide As Boolean
 valide = True

 valide = nb_saisi >= borne1 And nb_saisi <= borne2
 message = "Choisir un nombre entre les deux bornes"
 nb_saisi = Val(InputBox(message))

'si l'entrée est valide.
  If nb_saisi >= borne1 And nb_saisi <= borne2 Then
     Call MsgBox(nb_saisi)
  Else
     'cas ou c'est invalde
     While Not valide
         'si la chaine est vide, on considère que c'est invalide
         If nb_saisi = vbNullString Then
                saisir_nombre123 = -1E+21
                valide = False
        'si la chaine contient des carractères, on vérifie si la valeur qu'ils représentent
        'est dans l'intervale défini.
         Else
               If nb_saisi < borne1 Or nb_saisi > borne2 Then
                  Call MsgBox("Erreur!")
                  saisir_nombre123 = Val(InputBox(message))
                  valide = False
               End If
         End If
     Wend
  End If
 
End Function
'test notre fonction
Sub testfunction()
 Dim nb_saisi As Variant
 Dim message As String
 
 message = "Choisir un nombre entre les deux bornes"
 nb_saisi = Val(InputBox(message))

 
 Call saisir_nombre123(message, 1, 5)
End Sub

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Il faut que tu mettes
    valide = True
    à un moment...
    0
  2. Yoda
     
    Bonjour,

    Il y a quelques erreurs de programmation dans ta fonction

    valide = nb_saisi >= borne1 And nb_saisi <= borne2

    On ecrit plutot
    If nb_saisi >= borne1 And nb_saisi <= borne2 then valide=True else valide=False


     message = "Choisir un nombre entre les deux bornes"

    Inutile car message est dejà passé en argument à la faonction

    Voila comment faire:

    'cette fonction devrait arrêter une fois que la valeur saisie est valide (valeur entre les bornes et non nulle)
    'notre fonction
    Private Function saisir_nombre123(ByVal message As String, ByVal borne1 As Double, ByVal borne2 As Double) As Double

    Dim nb_saisi As Variant
    Dim valide As Boolean

    valide = False
    While not valide

    nb_saisi = Val(InputBox(message & " " & borne1 & " et " & borne2))

    If nb_saisi >= borne1 And nb_saisi <= borne2 Then
    valide = True
    Else
    'cas ou c'est invalde
    Call MsgBox("Erreur!")
    End If
    Wend

    saisir_nombre123= nb_saisi

    End Function


    'test notre fonction
    Sub testfunction()
    Dim nombre_saisi As double
    Dim message As String

    message = "Choisir un nombre entre les deux bornes"

    nombre_saisi = saisir_nombre123(message, 1, 5)

    msgbox("Nombre saisi: " & nombre_saisi)

    End Sub
    -1
    1. mohbeka
       
      Merci beaucoup Yoda, cela fonctionne très bien.
      J'apprécie beaucoup votre aide!
      Je viens de découvrir ce forum et j'en suis vraiment content.
      je remercie tout le monde.
      Bonne soirée!
      0