Stopper une boucle while....

Résolu/Fermé
Mohbk Messages postés 1 Date d'inscription dimanche 8 février 2015 Statut Membre Dernière intervention 8 février 2015 - Modifié par KX le 8/02/2015 à 13:18
 mohbeka - 9 févr. 2015 à 02:51
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

KX Messages postés 16740 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 26 mai 2024 3 016
8 févr. 2015 à 13:20
Bonjour,

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