En VBS, problème verif de InputBox

[Résolu]
Signaler
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
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

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
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
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
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
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
Tu tests d'abord avec IsNumeric(saisie)
et après tu fais le test de validité du nombre entré
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
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
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Bonjour à tous....

Merci Julien, c'est ok.
Quel est le comportement de saisie = "-1"
If IsNumeric(saisie) False Or saisie "" Then saisie = "-1"
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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