Bonjour à tous,

Je souhaite créer un Userform classique qui alimente les données d'un tableau. L'une des colonnes de ce tableau se nomme "Taux Horaire". Comme son nom l'indique les valeurs inscrites dans cette colonne doivent être des nombres avec deux décimales maximum.

L'utilisateurs saisira donc le taux horaire en question à travers une Texbox. Cette TextBox vérifie si les valeurs saisies sont des chiffres, notamment grâce à ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub tx_horaire1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 
'Vérifie si le tx horaire est bien un nombre, avec des décimales, et opère aux modification le cas contraire
 Select Case KeyAscii
 
        'seulement des chiffres
        Case 48 To 57
 
        'virgule et point, séparateur décimal
        Case 44, 46
 
            'seulement la virgule
            If KeyAscii = 46 Then KeyAscii = 44
 
            'seulement une fois
            If InStr(tx_horaire1.Text, Chr(KeyAscii)) <> 0 Then KeyAscii = 0
 
            'interdit le séparateur décimal en premier
            If tx_horaire1.Text = "" Then If KeyAscii = 44 Then KeyAscii = 0
 
    Case Else
 
            tx_horaire1.Value = Null
            MsgBox "Seulement numérique ! Deux décimales maximum."
 
        End Select
 
End Sub

Cependant, je rencontre un problème dont j'ignore totalement l'origine. Lorsque je saisie un nombre ayant plus de 2 décimales, le nombre récupéré par la cellule n'est pas le même d'une manière bien étrange.


Exemple :


  • Si je saisi 50,50 dans ma textbox, aucun soucis je me retrouve avec 50,50 dans la cellule.


  • Si saisi 50,505 dans ma textbox, là je me retrouve avec 50 505,00 dans la cellule.


A priori, l'origine du problème ne se trouve pas dans le code ci-dessous ; puisque j'ai essayé sans et le problème persiste.

Avez-vous une idée de ce que cela peut être ?

Bien à vous !