Saisie obligatoire de chiffre? [Résolu]

Signaler
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
-
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
-
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

Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
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.
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
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
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
4
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 ....
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
12
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
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
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