UserForm n'acceptant pas les "." à la saisie

Bonjour à tous!

Je suis entrain de réaliser une petite calculatrice pour mes collègues.

Cette calculatrice doit les aider à calculer différents facteurs tel que des % et des Ø.

Problème? La calculatrice fonctionne à merveille lorsque l'on utilise une virgule à la saisie des chiffres non-entier mais si l'on met un point (beaucoup plus pratique et dans les habitudes des opérateurs), alors le résultat est faux...

avec virgule avec point

J'ai essayé à la base de faire remplacer les "." par des ",". Sans succès.

J'ai ensuite tenté de faire enregistrer les données en les m'assurant que l'attribut soit en chiffre et non en texte (peut être est-ce le problème) mais je n'y parviens pas non plus.

Une idée?

Merci d'avance!!

Bonjour toutes et tous,

J'ai testé cela à l'air de fonctionner pour l'userform4

NOTE: que l'on saisisse au clavier la touche '.' du pavé numérique se place systématiquement en ','

à placer au début :

Option Explicit

Const entrees_decimales_permises = ".,0123456789" & vbCr & vbBack
Const Point = "."
Const Virgule = ","

-pour les textbox(s) 1, 2, 3 et 4 de ton usf4

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = Asc(Point) Then
        If InStr(TextBox1, Virgule) = 0 Then
            KeyAscii = Asc(Virgule)
        Else
            KeyAscii = 0
        End If
    ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
    ElseIf InStr(TextBox1, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
        KeyAscii = 0
    End If
End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = Asc(Point) Then
        If InStr(TextBox2, Virgule) = 0 Then
            KeyAscii = Asc(Virgule)
        Else
            KeyAscii = 0
        End If
    ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
    ElseIf InStr(TextBox2, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
        KeyAscii = 0
    End If
End Sub

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = Asc(Point) Then
        If InStr(TextBox3, Virgule) = 0 Then
            KeyAscii = Asc(Virgule)
        Else
            KeyAscii = 0
        End If
    ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
    ElseIf InStr(TextBox3, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
        KeyAscii = 0
    End If
End Sub

Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = Asc(Point) Then
        If InStr(TextBox4, Virgule) = 0 Then
            KeyAscii = Asc(Virgule)
        Else
            KeyAscii = 0
        End If
    ElseIf InStr(entrees_decimales_permises, Chr(KeyAscii)) = 0 Then
        KeyAscii = 0
    ElseIf InStr(TextBox4, Virgule) > 0 And KeyAscii = Asc(Virgule) Then
        KeyAscii = 0
    End If
End Sub

et faire ceci pour les autres usfs de text textbox en n'oubliant pas de mettre option explicit et const...

crdlt,

André

Bonjour Grexcel,

Pour ma part, le résultat est identique avec point et virgule.

Etant également sous excel 2010 :

As-tu essayé de décocher "utiliser les séparateurs système" dans options avancées ?

Cordialement,

EDIT: Bonjour Andre13, pas vu que tu avais déjà répondu,

Hey! super impressionnant! Merci à toi!

Oups! Du coup j'ai testé la solution d'André qui fonctionne et j'ai failli rater ton message!

J'ai testé mais non, ça ne corrige pas le problème...

Je vais appliquer la méthode d'André mais merci pour ton temps!

Re

coucou Xorsankukai

tiens-nous au courant Grexcel en espérant que cela fonctionne et ne fausse pas les données

Edit: ci-joint le fichier

crdlt,

André

C'est tout bon!

Merci encore!

Rechercher des sujets similaires à "userform acceptant pas saisie"