En VBS, problème verif de InputBox

Résolu
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 1 mars 2006 à 22:19
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 2 mars 2006 à 11:42
Bonsoir à tous....

En VBS, je n'arrive pas à controler la saisie d'une inputbox.
Je voudrais que l'utilisateur saisisse un mois (01 ou 1 à 12).
Il faut surement un Do While ou Do Loop
Mon 1er controle "while IsNumeric(Saisie) = False" marche.
Mais dans le second, comment vérifier que la saisie soit un chiffre de 1 à 12.

Je suppose que c'est hyper simple, mais là, c'est moi qui boucle !!!!

while Isnumeric(Saisie) = False
cpt = cpt + 1
Saisie = InputBox(vbCrLf&vbCrLf&"Edition de la feuille 'Rotation S-DLT Sauvegarde'" _
&vbCrLf&vbCrLf&vbCrLf&"Ca fait déjà " & cpt & " fois que vous vous tromper !!!!"&vbCrLf&_
"Saisissez des chiffres de 1 à 12"&vbCrLf&"Vous pouvez modifier le mois",_
"Rotation Valises Sauvegardes", wMM)
MsgBox "Saisie n est pas compris entre 1 et 12 " & Saisie
wend

while Saisie > 12
cpt = cpt + 1
Saisie = InputBox(vbCrLf&vbCrLf&"Edition de la feuille 'Rotation S-DLT Sauvegarde'" _
&vbCrLf&vbCrLf&vbCrLf&"Ca fait déjà " & cpt & " fois que vous vous tromper !!!!"&vbCrLf&_
"Saisissez des chiffres de 1 à 12"&vbCrLf&"Vous pouvez modifier le mois",_
"Rotation Valises Sauvegardes", wMM)
MsgBox "Saisie > 12 " & Saisie
wend

10 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
2 mars 2006 à 11:12
Salut,

Et si tu rajoutais un test juste apres.

While IsNumeric(saisie) = False Or CInt(saisie) < 1 Or CInt(saisie) > 12
cpt = cpt + 1
saisie = InputBox(vbCrLf & vbCrLf & "Edition de la feuille 'Rotation S-DLT Sauvegarde'" _
& vbCrLf & vbCrLf & vbCrLf & " Ca fait déjà " & cpt & " fois que vous vous tromper !!!!" & vbCrLf & _
"Saisissez des chiffres de 1 à 12" & vbCrLf & "Vous pouvez modifier le mois", _
"Rotation Valises Sauvegardes")
If IsNumeric(saisie) False Or saisie "" Then saisie = "-1"

Wend

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
3
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
1 mars 2006 à 22:31
bonsoir,

dim saisie as string
saisie=inputbox(".........")

if (cint(saisie)<1) or cint(saisie)>12) then
msgbox "erreur dans le numéro du mois"
en if

voila
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
1 mars 2006 à 22:31
arf j'ai oublié une parenthèse

if (cint(saisie)<1) or (cint(saisie)>12) then
msgbox "erreur dans le numéro du mois"
en if
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
1 mars 2006 à 23:07
Bonsoir,

Willi,

Le test non numérique n'est pas effectué dans ce cas.

while cint(Saisie < 1) or cint(saisie > 12)
cpt = cpt + 1
Saisie = InputBox(vbCrLf&vbCrLf&"Edition de la feuille 'Rotation S-DLT Sauvegarde'" _
&vbCrLf&vbCrLf&vbCrLf&"Ca fait déjà " & cpt & " fois que vous vous tromper !!!!"&vbCrLf&_
"Vous avez saisi un chiffre différent de 1 à 12"&vbCrLf&vbCrLf&_
"Votre Saisie erronée: " & Saisie &vbCrLf&vbCrLf&_
"Saisissez un chiffre de 1 à 12"&vbCrLf&"Vous pouvez modifier le mois",_
"Rotation Valises Sauvegardes", wMM)
MsgBox "Saisie > 12 " & Saisie
wend
0

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

Posez votre question
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
1 mars 2006 à 23:14
Tu tests d'abord avec IsNumeric(saisie)
et après tu fais le test de validité du nombre entré
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
1 mars 2006 à 23:25
Re....

Si saisie1 = 18 (numérique=oui mais différent de 1 à 12)
ok pour numérique, je passe au test du numérique (1 à 12)
Si saisie2 = 3 c'est ok mais
Si saisie2 = "ABCDE", le test numérique n'est plus effectué.

Il faut trouver la bonne boucle
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
1 mars 2006 à 23:46
Et de cette manière en testant tout d'un seul coup

dim saisie
dim cpt


saisie =""
cpt=0


Saisie = InputBox(vbCrLf&vbCrLf&"Edition de la feuille 'Rotation S-DLT Sauvegarde'" _
&vbCrLf&vbCrLf&vbCrLf&"Ca fait déjà " & cpt & " fois que vous vous tromper !!!!"&vbCrLf&_
"Saisissez des chiffres de 1 à 12"&vbCrLf&"Vous pouvez modifier le mois",_
"Rotation Valises Sauvegardes", wMM)


while ((IsNumeric(saisie)=false) or (cint(saisie)<1) or (cint(saisie)>12))
cpt = cpt + 1
Saisie = InputBox(vbCrLf&vbCrLf&"Edition de la feuille 'Rotation S-DLT Sauvegarde'" _
&vbCrLf&vbCrLf&vbCrLf&"Ca fait déjà " & cpt & " fois que vous vous tromper !!!!"&vbCrLf&_
"Saisissez des chiffres de 1 à 12"&vbCrLf&"Vous pouvez modifier le mois",_
"Rotation Valises Sauvegardes", wMM)
wend
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
2 mars 2006 à 06:11
Bonjour à tous....

saisie = "15" ....marche,
saisie = "" ou saisie= "A3A" provoque une erreur sur Type incompatible CInt

while IsNumeric(Saisie) = False Or CInt(saisie) < 1 Or CInt(Saisie) > 12
cpt = cpt + 1
Saisie = InputBox(vbCrLf&vbCrLf&"Edition de la feuille 'Rotation S-DLT Sauvegarde'" _
&vbCrLf&vbCrLf&vbCrLf&"Ca fait déjà " & cpt & " fois que vous vous tromper !!!!"&vbCrLf&_
"Saisissez des chiffres de 1 à 12"&vbCrLf&"Vous pouvez modifier le mois",_
"Rotation Valises Sauvegardes", wMM)
wend
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
2 mars 2006 à 11:35
Bonjour à tous....

Merci Julien, c'est ok.
Quel est le comportement de saisie = "-1"
If IsNumeric(saisie) False Or saisie "" Then saisie = "-1"
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
2 mars 2006 à 11:42
Salut,

En fait j' ai fait ca car si par exemple l'utilisateur tape sur OK sans rien taper, Saise = ""

Et bien Cint("") = erreur

Si L'utilisateur tape A32A (Cint("A32A) = erreur )

Donc je remplace la valeur (je met -1) pour que le CINT ne pete pas.

Note: Si l'utilisateur tape 50000 par exemple, ca va peter aussi, alors peu etre devrais tu te proteger par un CDBL ou autre chose

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
Rejoignez-nous