Stopper une boucle while....

Résolu
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. Modérateur
    Bonjour,

    Il faut que tu mettes
    valide = True
    à un moment...
    1. 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. 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!