Problème de saisie de la virgule dans un Textbox

Résolu
LANGAZOU Messages postés 100 Statut Membre -  
LANGAZOU Messages postés 100 Statut Membre -
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 13513 Statut Modérateur 2 763
 
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 100 Statut Membre
 
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 17413 Statut Membre 1 715 > LANGAZOU Messages postés 100 Statut Membre
 
Re,

voir:

pijaku - 23 févr. 2015 à 08:18
0
pijaku Messages postés 13513 Statut Modérateur 2 763 > LANGAZOU Messages postés 100 Statut Membre
 
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 100 Statut Membre > pijaku Messages postés 13513 Statut Modérateur
 
Merci beaucoup pikaju :))
Bonne journée.
0
f894009 Messages postés 17413 Statut Membre 1 715
 
0
pijaku Messages postés 13513 Statut Modérateur 2 763
 
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 17413 Statut Membre 1 715 > pijaku Messages postés 13513 Statut Modérateur
 
Bonjour,

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