Textbox, saisie utilisateur avec gestion d'erreur [Résolu]

Signaler
Messages postés
295
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
21 mai 2008
-
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007
-
Re la communauté,

Voilou j'ai un textbox qui va contenir une saisie utilisateur, celui-ci doit saisir un nombre entre 1 et 100, si c'est pas bon: msgbox("erreur"), or je ne sais pas comment gerer ceci pour qu'il recommence, en effet, avec un:
while textbox.text < 1 or textbox.text > 100
   msgbox("erreur recommencer")
wend
je suis en boucle infini car ma declaration du sub est: Private Sub TextBox1_Change() ! donc si il tape 0 ca foire, et la boiboite n'attend pas que l'on retape quelque chose pour mettre les msgbox a l'infini!

-- Comment faire pour gerer cette erreur et permettre à l'utilisateur de resaisir sa réponse correctement...? j'ai aussi tester avec un sub textbox_update()

Merci d'avance

ps: j'espere que vous avez compris

3 réponses

Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Salut, c'est pas du VB6 ça, plutôt du VBA non ?


En VB, essaie ça :
Private Sub Text1_KeyPress(KeyAscii As Integer)
  'permettre uniquement la saisie de chiffres et des touches flèches, backspace, suppr,....
  If KeyAscii > 31 And KeyAscii < 48 Or KeyAscii > 57 Then
    KeyAscii = 0
    Exit Sub
  End If
End Sub


Private Sub Text1_Validate(Cancel As Boolean)
  If CInt(Text1.Text) = 0 Or CInt(Text1.Text) > 100 Then
    MsgBox "Saisissez un nombre de 1 à 100 S.V.P. !"
    Cancel = True
  End If
End Sub


En VBA :
Private Sub TextBox1_KeyPress(KeyAscii As Integer)
  'permettre uniquement la saisie de chiffres et des touches flèches, backspace, suppr,....
  If KeyAscii > 31 And KeyAscii < 48 Or KeyAscii > 57 Then
    KeyAscii = 0
    Exit Sub
  End If
End Sub


Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
  If CInt(TextBox1.Text) = 0 Or CInt(TextBox1.Text) > 100 Then
    MsgBox "Saisissez un nombre de 1 à 100 S.V.P. !"
    Cancel = True
  End If
End Sub


 
Messages postés
295
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
21 mai 2008

Oui c'est du VBA autant pour moi, l'ahbitude de poster pour du VB désolé ^^
Mais je ne vois pas de différence entre VB et VBA en fait ???!!!
Merci pour ton code, je l'essai demain et je te dirais ce qu'il en retourne
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Bah, pour ce qui est de la base, les 2 sont du basic mais il y a plein de différences au niveau d'abord des noms de controles par défaut (Text1 en VB6 TextBox1 en VBA, ...), des noms d'évènements (Validate en VB6, BeforUpdate en VBA, ...), de nombreuses fonctions de VB6 inexistantes en VBA, etc ... Sans parler quon peut faire un EXE avec VB mais pas avec VBA.
En fait, tout dépend de ce qu'on veut faire et choisir le langage en fonction de ça.