[Catégorie modifiée VB6 -> VBA] VBA- Limiter la saisie d'un seul point OU virgul

[Résolu]
Signaler
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
-
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
-
Bonjour a tous,

Nouveau probleme dans mon projet.

Voila, dans un USF sous Excel, j'ai plusieurs TextBox que j'ai limite uniquement aux numeriques, a la virgule et au point. J'ai aussi limite la saisie a deux chiffres apres la virgule ou le point

Maintenant mon probleme est le suivant:
je voudrais limiter mes TextBox pour ne pourvoir ecrire seulement un point ou une virgule.

Voici mon code actuel pour une des TextBox:

Private Sub TextBox1_change()
If Right(TextBox1, 1) "." Or Right(TextBox1, 1) "," Then TextBox1.MaxLength = Len(TextBox1) + 2
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim allowedKeys As String
allowedKeys = "0123456789,." & Chr(8)
If InStr(allowedKeys, Chr(KeyAscii)) 0 Then KeyAscii 0
End Sub

Merci de votre aide

5 réponses

Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
1
coucou,

merci pour ta réponse et ton aide. Donc avec la parenthese cela fonctionne tres bien. cependant j'ai change le code pour mettre de cette facon. En effet, avec ce que tu m'avais envoye, on pouvait ecrire a la fois une virgule et un point. Alors que moi je desire soit l'un ou soit l'autre:

Dim TestKey As Byte
Dim TestKey2 As Byte
TestKey = Asc(".")
TestKey2 = Asc(",")

If KeyAscii TestKey And (InStr(1, TextBox1, Chr$(TestKey)) > 0 Or InStr(1, TextBox1, Chr$(TestKey2)) > 0) Then KeyAscii 0
If KeyAscii TestKey2 And (InStr(1, TextBox1, Chr$(TestKey2)) > 0 Or InStr(1, TextBox1, Chr$(TestKey)) > 0) Then KeyAscii 0

ce code fonctionne a merveille grace a tes conseils

Bonne soiree ou plutot bonne nuit et encore merci
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bon...

Je préfère, plutôt que d'essayer, à chaque pas que tu vas tenter de faire, t'inviter à aller VOIR CETTE SOURCE qu'a déposée mon frère jumeau.
Tu y trouveras tout cela et plus encore.
Elle est parfaitement et très facilement adaptable en VBA.
Cela m'évitera de devoir comprendre, au fur et à mesure de ton avancement différent, de savoir quels sont les autres tenants et aboutissants que tu aurais pu modifier (car forcément, dans ce genre d'acrobatie, tout a des conséquences sur tout)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
78
Salut

Dim TestKey As Byte
TestKey = Asc(".")
If KeyAscii TestKey And Instr(1, TextBox1, Chr$(TestKey) > 0 Then KeyAscii 0
TestKey = Asc(",")
If KeyAscii TestKey And Instr(1, TextBox1, Chr$(TestKey) > 0 Then KeyAscii 0

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
24
Date d'inscription
jeudi 4 août 2011
Statut
Membre
Dernière intervention
24 août 2011
1
Bonjour a vous 2,

merci de vos reponses. ucfoutu, je n'ai pas compris le lien que tu m'as envoye, je suis desolee.

jack, j'ai teste ton code et il il y a une erreur de compilation (Attendu : separateur de syntaxe) sur les lignes :

If KeyAscii TestKey And Instr(1, TextBox1, Chr$(TestKey) > 0 Then KeyAscii 0

j'ai insere ce morceau de code dans le miens de cette facon:

Private Sub TextBox1_Change()
If Right(TextBox1, 1) "." Or Right(TextBox1, 1) "," Then TextBox1.MaxLength = Len(TextBox1) + 2
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim allowedKeys As String
allowedKeys = "0123456789,." & Chr(8)
If InStr(allowedKeys, Chr(KeyAscii)) 0 Then KeyAscii 0

Dim TestKey As Byte
TestKey = Asc(".")
If KeyAscii TestKey And Instr(1, TextBox1, Chr$(TestKey) > 0 Then KeyAscii 0
TestKey = Asc(",")
If KeyAscii TestKey And Instr(1, TextBox1, Chr$(TestKey) > 0 Then KeyAscii 0
End Sub


Voila,
Merci de votre aide
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
78
Oui, en effet : il manque une parenthèse de fermeture devant les > 0
(tapé de tête, désolé)