Boucle vb ne fonctionne pas exactement
Résolu
benoit
-
benoit -
benoit -
Bonjour,
j'ai un problème dans mon code, je voudrai qu'il s'exécute c le cas mais il y a des bug, si je commence par taper 0 dans mon inputBox sa marche mais ensuite si je tape une valeur non numérique il y a un bug, ce que j'aimerai c qu'a chaque fois que je rentre une valeur dans mon inputBox il vérifie mes conditions et que temps qu'elles sont pas toutes respectées me redemander de taper le jour
Dim rep As String, Lig As Integer, Col As Integer
rep = InputBox("quel est le jour du mois de caisse à réaliser ?", "JOUR", 0)
retry = 0
Do While retry = 0
If rep = "" Then
MsgBox "Référence introuvable!"
rep = InputBox("quel est le jour du mois de caisse à réaliser ?", "JOUR", 0)
Else: retry = 1
End If
Loop
retry = 0
Do While retry = 0
If Not IsNumeric(rep) Then
MsgBox "Référence introuvable!"
rep = InputBox("quel est le jour du mois de caisse à réaliser ?", "JOUR", 0)
Else: retry = 1
End If
Loop
retry = 0
Do While ret = 0
If CInt(rep) < 1 Or CInt(rep) > 31 Then
MsgBox "Référence introuvable!"
rep = InputBox("quel est le jour du mois de caisse à réaliser ?", "JOUR", 0)
Else: retry = 1
End If
Loop
merci d'avance
j'ai un problème dans mon code, je voudrai qu'il s'exécute c le cas mais il y a des bug, si je commence par taper 0 dans mon inputBox sa marche mais ensuite si je tape une valeur non numérique il y a un bug, ce que j'aimerai c qu'a chaque fois que je rentre une valeur dans mon inputBox il vérifie mes conditions et que temps qu'elles sont pas toutes respectées me redemander de taper le jour
Dim rep As String, Lig As Integer, Col As Integer
rep = InputBox("quel est le jour du mois de caisse à réaliser ?", "JOUR", 0)
retry = 0
Do While retry = 0
If rep = "" Then
MsgBox "Référence introuvable!"
rep = InputBox("quel est le jour du mois de caisse à réaliser ?", "JOUR", 0)
Else: retry = 1
End If
Loop
retry = 0
Do While retry = 0
If Not IsNumeric(rep) Then
MsgBox "Référence introuvable!"
rep = InputBox("quel est le jour du mois de caisse à réaliser ?", "JOUR", 0)
Else: retry = 1
End If
Loop
retry = 0
Do While ret = 0
If CInt(rep) < 1 Or CInt(rep) > 31 Then
MsgBox "Référence introuvable!"
rep = InputBox("quel est le jour du mois de caisse à réaliser ?", "JOUR", 0)
Else: retry = 1
End If
Loop
merci d'avance
A voir également:
- Boucle vb ne fonctionne pas exactement
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
- Faites en sorte que la cellule a1 affiche exactement ce qui est montré sur cette image - Forum Excel
2 réponses
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
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
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
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