Textbox avec clavier numerique seulement et virgule vb 2005 [Résolu]

cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 3 avril 2007 à 19:11 - Dernière réponse : Whismeril 11949 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 10 août 2018 Dernière intervention
- 20 juil. 2018 à 14:39
Bonjour,
Comment determiner rien que l'appuis des touches numeriques et transformer le point en virgule avec VB 2005 EXPRESS ?
Avant j'avais avec VB6 :
Private Sub TEXT1_KeyPress(KeyAscii As Integer)
    '8 = TOUCHE RET ARR ; 46 TOUCHE POINT DECIMAL ;44 TOUCHE VIRGULE
    If KeyAscii <> 8 And (KeyAscii < 48 Or KeyAscii > 57) Then
    If KeyAscii = 44 Then
        If InStr(1, Text1.Text, ",") Then KeyAscii = 0
    ElseIf KeyAscii = 46 Then
        If InStr(1, Text1.Text, ",") Then
            KeyAscii = 0
        Else
            KeyAscii = 44
        End If
    Else
        KeyAscii = 0
    End If
End If
Merci.
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - 4 avril 2007 à 08:42
3
Merci
Bonjour Hvb,


ça fonctionne très bien .



'remplacement du point par une virgule



If
Asc(e.KeyChar) = 46

Then
e.KeyChar =

","

'si c'est une virgule et qu'il y en a déja une dans le textbox, ou qu'elle est tappé en premier caractère, on annule la saisie

If
Asc(e.KeyChar) = 44

And
(

CType
(sender, TextBox).Text.IndexOf(

","
) > 0

Or



CType
(sender, TextBox).Text =

""
)

Then
e.Handled =

True

'si le caractere n'est pas un chiffre, back ou une virgule, on annule

If



Char
.IsDigit(e.KeyChar) =

False



And
Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back

And
Asc(e.KeyChar) <> 44

Then
e.Handled =

True

Merci,bonne journée.

Merci cs_Sipat 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 81 internautes ce mois-ci

Commenter la réponse de cs_Sipat
hvb 961 Messages postés vendredi 25 octobre 2002Date d'inscription 27 janvier 2009 Dernière intervention - 3 avril 2007 à 21:03
0
Merci
dans ton evenement keypress :

If Asc(e.KeyChar) = 46
Then e.KeyChar =
","

If Asc(e.KeyChar) = 44
Then

If
CType(sender, TextBox).Text.IndexOf(
",") > 0
Or
CType(sender, TextBox).Text =
""
Thene.Handled =

True

End
If

End
If

If
Char.IsDigit(e.KeyChar) =
False _

And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back _

And Asc(e.KeyChar) <> 44 _

Then e.Handled =
True

Hvb aka Batto
bato.ltd at gmail.com
Commenter la réponse de hvb
hvb 961 Messages postés vendredi 25 octobre 2002Date d'inscription 27 janvier 2009 Dernière intervention - 3 avril 2007 à 21:10
0
Merci
erg la mise en page...

'remplacement du point par une virgule

If Asc(e.KeyChar) = 46
Then e.KeyChar =
","

'si c'est une virgule et qu'il y en a déja une dans le textbox, ou qu'elle est tappé en premier caractère, on annule la saisie

If Asc(e.KeyChar) = 44
And (
CType(sender, TextBox).Text.IndexOf(
",") > 0
Or
CType(sender, TextBox).Text =
"")
Then e.Handled =
True

'si le caractere n'est pas un chiffre, back ou une virgule, on annule

If
Char.IsDigit(e.KeyChar) =
False _

And Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back _

And Asc(e.KeyChar) <> 44 _

Then e.Handled =
True

Hvb aka Batto
bato.ltd at gmail.com
Commenter la réponse de hvb
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 3 avril 2007 à 21:12
0
Merci
Bonjour,
Dans l'événement KeyPress de ton objet TextBox:

If
Char.IsNumber(e.KeyChar)
Then
    e.Handled =
False
ElseIf
e.KeyChar =
"."
Then
   e.KeyChar = ","
   e.Handled =
False
Else
   e.Handled =
True
End
If

Question déjà vue sur le forum, faire une recherche la prochaine fois.
++
Commenter la réponse de cs_Willi
hvb 961 Messages postés vendredi 25 octobre 2002Date d'inscription 27 janvier 2009 Dernière intervention - 3 avril 2007 à 21:51
0
Merci
willi : ta procédure est mieux structuré que mes if qui se répetent mais la gestion des multiples virgules est indispensable pour ce cas

Hvb aka Batto
bato.ltd at gmail.com
Commenter la réponse de hvb
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 3 avril 2007 à 21:55
0
Merci
lol juste besoin de rajouter un test if e.KeyChar = "," Then e.Handled = False. Non ? pas trop compris ta remarque désolé.
Commenter la réponse de cs_Willi
hvb 961 Messages postés vendredi 25 octobre 2002Date d'inscription 27 janvier 2009 Dernière intervention - 3 avril 2007 à 22:03
0
Merci
ben c'est moi qui ne comprend pas, j'avais déja répondu de façon complete, mais tu as posté ton message qui n'ajoute rien au mien.
et non; il faut tester si une virgule est déja presente dans la textbox, et si c'est le cas, mettre la propriété Handled à True. C'est certes simple mais c'est ce qu'il demandait...

Bref, n'y voit aucune offense, mais je soutiens juste ce que je disais.

Hvb aka Batto
bato.ltd at gmail.com
Commenter la réponse de hvb
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 3 avril 2007 à 22:08
0
Merci
Si caractère = , alors on laisse passer (.Handle = False)
Sinon y a pas de soucis j'étais sur la page et ai répondu beaucoup de plus tard donc pas vu tes réponses
Commenter la réponse de cs_Willi
hvb 961 Messages postés vendredi 25 octobre 2002Date d'inscription 27 janvier 2009 Dernière intervention - 3 avril 2007 à 22:31
0
Merci
je ne comprend pas ton "Si caractère , alors on laisse passer (.Handle False)"
mais je propose de laisser tomber, on ne va nulle part ^^

have fun :)

Hvb aka Batto
bato.ltd at gmail.com
Commenter la réponse de hvb
cs_Sipat 71 Messages postés mardi 26 octobre 2004Date d'inscription 15 avril 2007 Dernière intervention - Modifié par NHenry le 21/07/2018 à 13:12
0
Merci
Bonsoir,
Pour recapituler il faut mettre quoi Willi alors ?
IfChar.IsNumber(e.KeyChar) 
Then
    e.Handled = 
False
ElseIf
e.KeyChar = "."
Then
   e.KeyChar = ","

   e.Handled = 
False
Else
   e.Handled = 
Trueif e.KeyChar <bold>"," Then e.Handled</bold> False
End
If

ou Hvb pour recapituler :






'remplacement du point par une virgule




If
 Asc(e.KeyChar) = 46 

Then
 e.KeyChar = 

","





'si c'est une virgule et qu'il y en a déja une dans le textbox, ou qu'elle est tappé en premier caractère, on annule la saisie





If
 Asc(e.KeyChar) = 44 

And
 (

CType
(sender, TextBox).Text.IndexOf(

","
) > 0 

Or



CType
(sender, TextBox).Text = 

""
) 

Then 
e.Handled = 

True







'si le caractere n'est pas un chiffre, back ou une virgule, on annule





If



Char
.IsDigit(e.KeyChar) = 

False
 

And
 Asc(e.KeyChar) <> System.Windows.Forms.Keys.Back 

And
 Asc(e.KeyChar) <> 44 th

en
 e.Handled = 

True




C'est comme ça qu'il faut faire ?


Bonne soirée et merci.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
mais comment effacer ou si toutes les autres touches ne fonctionne pas
Whismeril 11949 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 10 août 2018 Dernière intervention > kkkk - 20 juil. 2018 à 14:39
BONJOUR kkkk, quand on débarque dans une discussion, un peu de politesse ça fait pas de mal.

Je n'ai pas testé le code, mais il me semble qu'il laisse passer backspace, donc tu peux supprimer avec cette touche.
Sinon, tu ajoutes suppr dans la condition
Commenter la réponse de cs_Sipat
hvb 961 Messages postés vendredi 25 octobre 2002Date d'inscription 27 janvier 2009 Dernière intervention - Modifié par NHenry le 21/07/2018 à 13:10
0
Merci
Sipat : Peut-être qu'à defaut d'essayer de comprendre ce que l'on t'a proposé, tu pourrais tester non? ^^
Je n'ai rien modifié au code que je t'ai proposé hormis la mise en page, donc oui "c'est ce qu'il faut faire." 

Hvb aka Batto
Commenter la réponse de hvb
hvb 961 Messages postés vendredi 25 octobre 2002Date d'inscription 27 janvier 2009 Dernière intervention - Modifié par NHenry le 21/07/2018 à 13:10
0
Merci
ahah, en general on place le "reponse acceptée" sur la reponse de la personne qui t'a aidé, et pas sur ton propre message.
=)

Hvb aka Batto
Commenter la réponse de hvb

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.