Problème sur boucle Do While Infinie

Signaler
Messages postés
5
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
28 avril 2012
-
Messages postés
5
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
28 avril 2012
-
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 ! ! ! !

5 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
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
Messages postés
5
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
28 avril 2012

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
Messages postés
5
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
28 avril 2012

Hum... J'ai bien lu ce que vous m'avez dit mais... Je n'ai toujours pas compris ! ! ! Où dois-je placer le Do ? ? ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
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
Messages postés
5
Date d'inscription
mercredi 17 novembre 2010
Statut
Membre
Dernière intervention
28 avril 2012

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 ! !!