Saisie obligatoire de chiffre? [Résolu]

Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
- - Dernière réponse : 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.
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
2
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de js8bleu
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
0
Merci
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
Commenter la réponse de cs_petchy
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
0
Merci
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 ....
Commenter la réponse de jmf0
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
0
Merci
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
Commenter la réponse de cs_ghuysmans99
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
0
Merci
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
Commenter la réponse de cs_petchy