Boucle vb ne fonctionne pas exactement
Résolu/Fermé
A voir également:
- Boucle vb ne fonctionne pas exactement
- Vb cable - Télécharger - Audio & Musique
- Vb - Télécharger - Langages
- Boucle cmd - Forum Programmation
- Freebox redémarre en boucle ✓ - Forum Freebox
2 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 745
5 août 2010 à 19:24
5 août 2010 à 19:24
Re-
Essaye ce code et dis moi ce que tu en penses :
Essaye ce code et dis moi ce que tu en penses :
Dim rep As String debut: rep = InputBox("quel est le jour du mois de caisse à réaliser ?", "JOUR", 0) If rep = "" Then MsgBox "Vous devez absolument saisir un nombre entre 1 et 31!" GoTo debut End If If Not IsNumeric(rep) Then MsgBox "Vous devez absolument saisir un nombre entre 1 et 31!" GoTo debut End If If CInt(rep) = 0 Then MsgBox "Vous devez absolument saisir un nombre entre 1 et 31!" GoTo debut End If If CInt(rep) < 1 Or CInt(rep) > 31 Then MsgBox "Vous devez absolument saisir un nombre entre 1 et 31!" GoTo debut End If
eriiic
Messages postés
24571
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 mai 2024
7 217
Modifié par eriiic le 5/08/2010 à 23:43
Modifié par eriiic le 5/08/2010 à 23:43
Bonsoir tout le monde,
Les goto ne sont pas une bonne habitude de programmation et sont à proscrire en fait (sauf pour les traitements d'erreur).
En utilisant application.inputbox avec le paramètre type:=1 déjà tu peux refuser toutes les saisies qui ne sont pas numériques, le cint() ne produira plus d'erreur.
Il n'y a plus qu'à tester la valeur.
ex :
eric
Les goto ne sont pas une bonne habitude de programmation et sont à proscrire en fait (sauf pour les traitements d'erreur).
En utilisant application.inputbox avec le paramètre type:=1 déjà tu peux refuser toutes les saisies qui ne sont pas numériques, le cint() ne produira plus d'erreur.
Il n'y a plus qu'à tester la valeur.
ex :
Dim ok As Boolean Do While Not ok rep = Application.InputBox("quel est le jour du mois de caisse à réaliser ?", "JOUR", Type:=1) ok = CInt(rep) >= 1 And CInt(rep) <= 31 If Not ok Then MsgBox "Nombre non valide." End If Loop
eric
eriiic
Messages postés
24571
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 mai 2024
7 217
Modifié par eriiic le 6/08/2010 à 07:02
Modifié par eriiic le 6/08/2010 à 07:02
Si l'utilisateur clique sur Annule alors rep=false
Donc:
eric
Donc:
Dim ok As Boolean Do While Not ok rep = Application.InputBox("quel est le jour du mois de caisse à réaliser ?", "JOUR", Type:=1) If rep = False Then Exit Do ok = CInt(rep) >= 1 And CInt(rep) <= 31 If Not ok Then MsgBox "Nombre non valide." End If Loop
eric
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 745
6 août 2010 à 09:04
6 août 2010 à 09:04
Salut Eriiic,
Merci du renseignement.
Les goto sont à proscrire Aurais tu plus de renseignements là dessus? C'est comme les .select ou la raison est autre?
Merci du renseignement.
Les goto sont à proscrire Aurais tu plus de renseignements là dessus? C'est comme les .select ou la raison est autre?
eriiic
Messages postés
24571
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 mai 2024
7 217
6 août 2010 à 09:31
6 août 2010 à 09:31
Salut pikaju,
Non, ce n'est pas pour une question de vitesse d'exécution.
C'est uniquement pour une raison de lisibilité du code, et qu'il reste bien structuré. Utiliser cette facilité fait qu'on arrive rapidement à un code 'spaghetti'.
Donc le mieux est de se l'interdire, à de très rares exceptions près c'est faisable.
(à part pour le 'on error goto...' où on n'a pas le choix)
eric
Non, ce n'est pas pour une question de vitesse d'exécution.
C'est uniquement pour une raison de lisibilité du code, et qu'il reste bien structuré. Utiliser cette facilité fait qu'on arrive rapidement à un code 'spaghetti'.
Donc le mieux est de se l'interdire, à de très rares exceptions près c'est faisable.
(à part pour le 'on error goto...' où on n'a pas le choix)
eric
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 745
6 août 2010 à 09:44
6 août 2010 à 09:44
Ok. merci encore
Bonne journée
Bonne journée