Problème sur boucle Do While Infinie

toutoune95800 Messages postés 5 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 28 avril 2012 - 28 avril 2012 à 15:37
toutoune95800 Messages postés 5 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 28 avril 2012 - 28 avril 2012 à 18:53
Bonjour, je vous présente ci-dessous mon code qui teste si les valeurs entrées sont numériques. Si ce n'est pas le cas, alors on retourne au début.
Je tenais à vous préciser que j'ai un peu de mal à comprendre le principe des boucle ! Ici, si ma variable valid1 est vrai alors on continue le code sinon, message d'erreur et on recommence :

Do
If IsNumeric(Vjours) And IsNumeric(Vmois) And IsNumeric(Vannees) And IsNumeric(Vheures) And IsNumeric(Vminutes) Then
valid1 = True
Vannees = CInt(Vannees)
Vmois = CInt(Vmois)
Vjours = CInt(Vjours)
Vheures = CInt(Vheures)
Vminutes = CInt(Vminutes)
box_jours.Text = ""
box_annees.Text = ""
box_mois.Text = ""
box_heures.Text = ""
box_minutes.Text = ""
Else
MsgBox "Merci de saisir un chiffre correct", vbOKOnly + vbExclamation, "Erreur"
box_jours.Text = ""
box_annees.Text = ""
box_mois.Text = ""
box_heures.Text = ""
box_minutes.Text = ""
End If
Loop While valid1 = False


Je suis très très satisfait d'avoir crée une boucle infinie qui plante tout mon programme ! En revanche, ce que j'aimerais, c'est comprendre POURQUOI elle est infinie ! ! !

Comment puis-je faire pour que si l'utilisateur met un caractère au lieu d'un chiffre, alors tout se remet à zero et il doit refaire sa saisie ?

Merci d'avance pour vos réponses... J'aimerais tant de comprendre le principe des boucles ! ! ! !
A voir également:

5 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 avril 2012 à 15:46
Bonjour,
parce qu'il sduffit que ta toute première condition ne soit pas vérifiée pour que le else intervienne, mettre tout à "" et que, donc et ainsi, la première condition ne soit jamais plus vérifiée .
Tu es là face à une simple question de logique !

Un indice : tu n'as absolument pas besoin d'une boucle, dans le cas que tu exposes, mais d'une simple expression conditionnelle toute bête !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
toutoune95800 Messages postés 5 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 28 avril 2012
28 avril 2012 à 16:01
Merci pour vos explications Ufoutu ! J'avais effectivement fais une boucle conditionnelle mais il est pour moi très important de maîtriser les variables, car, je ne sais pas si vous vous en souvenez, mais j'avais posé une question sur la soustraction d'heure à laquelle vous m'aviez répondu et après avoir réviser mes cours de CP, j'ai donc trouver la solution !

Seulement, quand tout sera tapé, il faudra que le décompte se fasse seconde par seconde indéfiniement jusqu'à l'arrêt de programme ou jusqu'à ce que l'utilisateur clique sur un bouton "RESET" ! Voilà pourquoi, je me défie les boucles qui sont vraiment ma bête noire en programmation ! En tout cas merci beaucoup pour votre aide
0
toutoune95800 Messages postés 5 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 28 avril 2012
28 avril 2012 à 16:07
Hum... J'ai bien lu ce que vous m'avez dit mais... Je n'ai toujours pas compris ! ! ! Où dois-je placer le Do ? ? ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 avril 2012 à 17:48
Je n'ai toujours pas compris ! ! ! Où dois-je placer le Do ? ? ?

Nulle part !
Un indice : tu n'as absolument pas besoin d'une boucle, dans le cas que tu exposes, mais d'une simple expression conditionnelle toute bête

Veut dire ce que ça veut dire : pas de boucle du tout.
Et ne vois mal ce qu'une boucle pourrait bien faire là-dedans !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
toutoune95800 Messages postés 5 Date d'inscription mercredi 17 novembre 2010 Statut Membre Dernière intervention 28 avril 2012
28 avril 2012 à 18:53
J'ai enfin réussi ! J'ai effectivement utilisé une boucle conditionnelle et tout fonctionne parfaitement. En cas de valeur fausse, un message puis un exit sub a fait l'affaire ! ! !

En tout cas, merci beaucoup ! ! !

Mais à mon avis, je pense que je reviendrais... Car il va falloir que je crée une boucle qui indéfiniment fait mon calcul pour obtenir un décompte et un compte à rebours !


Merci ! !!
0
Rejoignez-nous