Saisie obligatoire de chiffre?

Résolu
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 - 31 oct. 2009 à 02:04
js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 - 1 nov. 2009 à 23:52
Bonjour,

j'ai un champ salaire (txtsal) et j'aimerai contrôler le fait que seule la saisie de chiffre peut être accepter dans ce champ. Voici mon code qui marche assez bien mais malheureusement même si je saisi un chiffre dans le champ, si j'appuie la touche entrée il m'affiche le message comme quoi ce n'est pas un nombre. Voici mon code :


Private Sub txtsal_KeyPress(KeyAscii As Integer)
If KeyAscii <> 8 Then
If Not IsNumeric(Chr(KeyAscii)) Then
KeyAscii = 0
MsgBox "Veuillez entrer un nombre SVP!", vbInformation
End If
End If
End Sub


Quelqu'un pourrait-il m'aider s'il vous plaît?

Merci d'avance.

Cordialement.

5 réponses

js8bleu Messages postés 576 Date d'inscription samedi 14 octobre 2006 Statut Membre Dernière intervention 27 janvier 2014 2
1 nov. 2009 à 23:52
Bonjour et Merci petchy, jmfO et ghuysmans99 pour votre aide à tous. J'ai pu résoudre mon problème par le code suivant :



If KeyAscii = 13 Then

'si on appuie sur la touche backspace et del
ElseIf KeyAscii 8 Or KeyAscii 46 Then

Traitement

ElseIf KeyAscii <> 8 Then

If Not IsNumeric(Chr(KeyAscii)) Then
KeyAscii = 0
MsgBox "Veuillez entrer un nombre SVP!", vbInformation
End If

End If


Merci encore et excellente soirée.

Cordialement.
3
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
31 oct. 2009 à 04:16
bonjour
essaye se code
Private Sub txtsal_KeyPress(KeyAscii As Integer)
'Pour ne rentrer que des chiffres
If InStr("0123456789" & Chr(8), Chr(KeyAscii)) = 0 Then
Check = MsgBox("les caractères numériques sont acceptés !", vbExclamation + vbOKOnly, "Attention")
KeyAscii = 0
End If
End Sub

@ plus
petchy
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
31 oct. 2009 à 06:59
Bonjour,

Ton code, petchy, ne me parais pas traiter/accepter la touche ENTER ...

A js8bleu : la touche ENTER (keyascii = 13) doit elle aussi être acceptée ? donc (avec ton code) :
If KeyAscii <> 8 And keyascii <> 13 Then ....
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
31 oct. 2009 à 09:34
Tu peux aussi utiliser les APIs, il te suffira d'appeler une fonction en VB pour limiter un champ à des chiffres :
Option Explicit

Private Const GWL_STYLE As Long = -16
Public Const ES_NUMBER As Long = &H2000&

Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public Sub RestrictTextboxToNumbers(txt As TextBox)
    SetWindowLong txt.hwnd, GWL_STYLE, GetWindowLong(txt.hwnd, GWL_STYLE) Or ES_NUMBER
End Sub
---
VB.NET is good ... VB6 is better
0

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

Posez votre question
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
1 nov. 2009 à 09:02
exact jmf0,j'ai oublier de mettre Chr(13)

Private Sub txtsal_KeyPress(KeyAscii As Integer)

If InStr("0123456789" & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then
Check = MsgBox("Seul les caractères numériques sont acceptés !", vbExclamation + vbOKOnly, "Attention")
KeyAscii = 0
End If
End Sub

@ plus
petchy
0
Rejoignez-nous