Interdir la saisie alphabetique dans une boite de saisie

cs_SkyrOu Messages postés 3 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 26 novembre 2005 - 26 nov. 2005 à 19:58
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 - 27 nov. 2005 à 03:30
Bonjour, je suis novice et j'aurai besoin d'aide pour un projet.

Voilà le contexte :

- Je saisie une valeur dans une boite de saisie (dll crée par mon professeur d'algo).
- Les valeurs autre que celles d'un dé à 6 faces sont interdite (0,7,8,9,...).
- Le résultat de ma saisie est stocké dans une variable (Entier, car des opérations suivent)

Je voudrais interdire la saisie de caractère alphabétique et donc afficher un message d'erreur si un caractère alphabétique étais saisie.

Merci pour votre aide.

7 réponses

cs_SkyrOu Messages postés 3 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 26 novembre 2005
26 nov. 2005 à 19:59
Je précise qu'il ne faut pas utiliser le KeyPress.
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
26 nov. 2005 à 20:12
Je fais le code en vitesse comme ca :



dim Pom as string, value as long 'Pom est l'entrée de texte, value la valeur une

'fois qu'on a vérifié qu'elle était valable...



if str(val(Pom))=Pom and Val(Pom)>0 and Val(Pom)<7 and Val(Pom)=Int(Val(Pom)) then

'Ok, bonne entrée

value=val(pom)

else

'Mauvais

msgbox "Mauvaise entrée..."

end if



Alors, les vérifications dans l'ordre:



- Est-ce que la transformation en texte de la valeur numérique de pom = l'originale ?

car val("2a") renvoie 2... mais str(val("2a")) = "2" et <> "2a"

- Pom >0

- Pom <7

- Pom est-il entier ? si pom est pas entier, son arrondi est différent de lui-même, sinon c'est un entier...



Julien.
0
cs_SkyrOu Messages postés 3 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 26 novembre 2005
26 nov. 2005 à 20:17
Merci pour ta réponse mais j'ai omi de préciser que l'option Strict est ON ce qui rend impossible la possibilité de convertion.
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
26 nov. 2005 à 20:33
Lol, ben déclare value comme Double à la place de Long et ça marche non ? C'est la seule conversion implicite que je vois...



Julien.
0

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

Posez votre question
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
26 nov. 2005 à 20:36
Mais si j'ai bonne mémoire de la fonction Str, j'ai fais une autre
erreur : str(val()) rajoute un espace, remplace donc str(val()) par
trim(str(val()))



Julien.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 nov. 2005 à 21:38
salut,
VB6 ?

voici un exemple facile à comprendre


Option Explicit
'
'
Private Sub Command1_Click()
' explication
Dim sAlerte As String
sAlerte = ""

' saisie
Dim sRep As String
sRep = InputBox("Saisissez votre chiffre", "exo")
If sRep "" Then sAlerte "Réponse vide": GoTo SubExit

' entier
On Error GoTo ErrHandler
Dim iNumber As Integer
iNumber = Val (sRep) \ 1
On Error GoTo 0 '*FGE*

' test
If iNumber < 1 Then sAlerte = "Valeur trop petite": GoTo SubExit
If iNumber > 6 Then sAlerte = "Valeur trop grande": GoTo SubExit

' ok
MsgBox "ok, valeur conservée = " & iNumber, 32, ":-Þ"

SubExit:
If sAlerte <> "" Then MsgBox sAlerte, 32, "non valide!!"
Exit Sub

ErrHandler:
Err.Clear
MsgBox "Valeur totalement stupide", 32, "non valide!!"
End Sub


<SMALL> Coloration syntaxique automatique [AFCK]</SMALL>


PCPT [AFCK]
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
27 nov. 2005 à 03:30
Bonsoir, (plustôt Bonne nuit)

Un exemple VB6 avec un textBox (Il y a surement moyen de racourcir le code.)





Private Sub Text1_Change()

Dim i

i = Array("1", "2", "3", "4", "5", "6")

On Error Resume Next

If Text1 = "" Then

Text1.SetFocus

Exit Sub

End If

If Text1 <> i(0) Then

If Text1 <> i(1) Then

If Text1 <> i(2) Then

If Text1 <> i(3) Then

If Text1 <> i(4) Then

If Text1 <> i(5) Then

MsgBox " vous devez tapper une valeur entre 1 et 6", vbCritical, "Mauvaise entrée !"

Text1 = ""

End If

End If

End If

End If

End If

End If

End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
0
Rejoignez-nous