OVH Cloud OVH Cloud

Contrôle de saisie

3 réponses
Avatar
Franck
Bonjour =E0 tous et =E0 toutes,

Ci joint le d=E9but de mon code

Sub test ()

Dim x

D1:
x=3DInputbox("Combien de lignes ?","Param=E8tre")
On Error GoTo D1

etc...

Probl=E8me : si une personne saisit "aa" comme valeur pour x=20
la Inputbox ne se recharge pas, on a le message de=20
d=E9bogage classique et VB s'ouvre. Comment faire pour dire=20
en gros que si x n'est pas un num=E9rique, la macro doit=20
reprendre en D ?

Merci

3 réponses

Avatar
Vincent.
Bonjour,
Tout d'abord, la ligne On Error GoTo D1 doit être placée
avant que l'erreur puisse arrivé donc, au choix, juste
après le Sub, soit juste parès D1:, soit... en tous cas
avant le InputBox.
Ensuite, je te suggères de lire attentivement l'aide
disponible sur les InputBox appliqués à l'objet
Application. Tu y verras en particulier que :

x = Application.InputBox("Combien de lignes ?", _
"Paramètre", , , , , , 1)

gère automatiquement le fait que la valeur à saisir est un
nombre (entier, je ne sais plus ?!...)

Pour plus de précisions, n'hésite pas à revenir !
A+

V.

-----Message d'origine-----
Bonjour à tous et à toutes,

Ci joint le début de mon code

Sub test ()

Dim x

D1:
x=Inputbox("Combien de lignes ?","Paramètre")
On Error GoTo D1

etc...

Problème : si une personne saisit "aa" comme valeur pour
x

la Inputbox ne se recharge pas, on a le message de
débogage classique et VB s'ouvre. Comment faire pour dire
en gros que si x n'est pas un numérique, la macro doit
reprendre en D ?

Merci
.



Avatar
AV
Une...

Sub test()
Dim x As Long
D1:
On Error Resume Next
x = InputBox("Combien de lignes ?", "Paramètre")
If Err.Number <> 0 Or x > 65536 Then GoTo D1:
If x = "" Then Exit Sub
'la suite
End Sub

AV

"Franck" a écrit dans le message news:
10c001c3b42b$29d69cf0$
Bonjour à tous et à toutes,

Ci joint le début de mon code

Sub test ()

Dim x

D1:
x=Inputbox("Combien de lignes ?","Paramètre")
On Error GoTo D1

etc...

Problème : si une personne saisit "aa" comme valeur pour x
la Inputbox ne se recharge pas, on a le message de
débogage classique et VB s'ouvre. Comment faire pour dire
en gros que si x n'est pas un numérique, la macro doit
reprendre en D ?

Merci
Avatar
Nicolas B.
Salut,

Une solution (parmi plein d'autres) sans utiliser les On Error Goto :

Dim x
While Not IsNumeric(x) Or x = ""
x = InputBox("Nombre ?")
Wend


A+
--
Nicolas B.

Adresse @adresse.bidon.com invalide,
E-mail : www.cerbermail.com/?gAAILfkPsC


Bonjour à tous et à toutes,

Ci joint le début de mon code

Sub test ()

Dim x

D1:
x=Inputbox("Combien de lignes ?","Paramètre")
On Error GoTo D1

etc...

Problème : si une personne saisit "aa" comme valeur pour x
la Inputbox ne se recharge pas, on a le message de
débogage classique et VB s'ouvre. Comment faire pour dire
en gros que si x n'est pas un numérique, la macro doit
reprendre en D ?

Merci