Problème de saisie de la virgule dans un Textbox

Résolu
LANGAZOU Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   -  
LANGAZOU Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un textbox dans lequel je saisie uniquement des valeurs numériques. j'ai ajouté récemment sous l'événement textbox change () le séparateur de millier. par conséquent je ne pourrais plus taper la virgule. ci dessous mes deux codes:

Private Sub TextBox1_Change()
 TextBox1 = Format(TextBox1, "# ### ##0")
End Sub


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then
KeyAscii = 0: Beep
End If



Merci pour votre réponse.
A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Pourquoi ne pas le placer dans l'événement Exit?
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 TextBox1 = Format(TextBox1, "# ### ##0.00")
End Sub


0
LANGAZOU Messages postés 95 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
c'est parfait ! Merci :)
Juste une dernière question: ya t-il un moyen de prendre en compte le point sous le module keypress et le changer en virgule automatiquement ?

Merci pour votre suivi.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > LANGAZOU Messages postés 95 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

voir:

pijaku - 23 févr. 2015 à 08:18
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > LANGAZOU Messages postés 95 Date d'inscription   Statut Membre Dernière intervention  
 
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("1234567890,.-", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep: Exit Sub
    Dim sep As String, Autre As String
    sep = Application.International(xlDecimalSeparator)
    Autre = IIf(sep = ",", ".", ",")
    TextBox1 = Replace(TextBox1, Autre, sep)
End Sub
0
LANGAZOU Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   > pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention  
 
Merci beaucoup pikaju :))
Bonne journée.
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut f894009,

Je ne suis pas à 100% ok avec la version de kiki29.
Il utilise le "." et la "," indépendamment du séparateur décimal de l'ordinateur...
Je préfère quelque chose comme ceci :

Dim sep As String, Autre As String
sep = Application.International(xlDecimalSeparator)
Autre = IIf(sep = ",", ".", ",")
TextBox1 = Replace(TextBox1, Autre, sep)


A ajouter à la proposition de kiki29, bien sur...
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713 > pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention  
 
Bonjour,

Tout a fait, j'en prends note
0
LANGAZOU Messages postés 95 Date d'inscription   Statut Membre Dernière intervention   > pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention  
 
re bonjour,
je suis débutant en VBA, j'ai pas su combiner votre proposition avec celle de kiki.
Merci.
0