OVH Cloud OVH Cloud

Pourquoi Val("20.15") renvois 2015 ?

2 réponses
Avatar
Philou
Bonjour,
La procédure suivante ne fait pas ce que je désire, sans que j'arrive à
savoir pourquoi :(
j'ai un TextBox dans lequel je ne veux pouvoir saisir qu'une somme, mais
avec possibilité de nombre à virgule.
j'ai écrit la procédure ci-dessous mais ça ne fonctionne pas.
si je saisie 321.15 elle remet en place 32115 GRrrrrr...... et ça....ben ça
m'énerve....

Si QQun a une idée, merci d'avance.


Private Sub Montant_du_Préavis_Non_Travaillé_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)
If KeyAscii < 46 Or KeyAscii > 57 Then
KeyAscii = 0
Else
Montant_du_Préavis_Non_Travaillé.Value =
Val(Montant_du_Préavis_Non_Travaillé.Value)
End If
End Sub

2 réponses

Avatar
denis P
Bonjour Philou,

Au lieu de contrôler caractères par caractète, si le contenu de ton textbox
utilise et une valeur num, utilise On Err et CDbl, voir l'exemple qui
suit...



Denis P.




Private Sub CommandButton1_Click()
Dim valeur As Double
On Error Resume Next
valeur = CDbl(TextBox1.Text)
If Err Then
MsgBox "une valeur numérique SVP"
TextBox1.Text = ""
TextBox1.SetFocus
End If
On Error GoTo 0

End Sub



"Philou" a écrit dans le message de
news:
Bonjour,
La procédure suivante ne fait pas ce que je désire, sans que j'arrive à
savoir pourquoi :(
j'ai un TextBox dans lequel je ne veux pouvoir saisir qu'une somme, mais
avec possibilité de nombre à virgule.
j'ai écrit la procédure ci-dessous mais ça ne fonctionne pas.
si je saisie 321.15 elle remet en place 32115 GRrrrrr...... et ça....ben
ça

m'énerve....

Si QQun a une idée, merci d'avance.


Private Sub Montant_du_Préavis_Non_Travaillé_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)
If KeyAscii < 46 Or KeyAscii > 57 Then
KeyAscii = 0
Else
Montant_du_Préavis_Non_Travaillé.Value > Val(Montant_du_Préavis_Non_Travaillé.Value)
End If
End Sub





Avatar
Philou
Merci pour le code et tu as raison c'est beaucoup plus simple à mettre en
place.
je vais exploiter ça ;)

@mic Philippe

"denis P" a écrit dans le message de news:

Bonjour Philou,

Au lieu de contrôler caractères par caractète, si le contenu de ton
textbox

utilise et une valeur num, utilise On Err et CDbl, voir l'exemple qui
suit...



Denis P.




Private Sub CommandButton1_Click()
Dim valeur As Double
On Error Resume Next
valeur = CDbl(TextBox1.Text)
If Err Then
MsgBox "une valeur numérique SVP"
TextBox1.Text = ""
TextBox1.SetFocus
End If
On Error GoTo 0

End Sub



"Philou" a écrit dans le message de
news:
Bonjour,
La procédure suivante ne fait pas ce que je désire, sans que j'arrive à
savoir pourquoi :(
j'ai un TextBox dans lequel je ne veux pouvoir saisir qu'une somme, mais
avec possibilité de nombre à virgule.
j'ai écrit la procédure ci-dessous mais ça ne fonctionne pas.
si je saisie 321.15 elle remet en place 32115 GRrrrrr...... et ça....ben
ça

m'énerve....

Si QQun a une idée, merci d'avance.


Private Sub Montant_du_Préavis_Non_Travaillé_KeyPress(ByVal KeyAscii As
MSForms.ReturnInteger)
If KeyAscii < 46 Or KeyAscii > 57 Then
KeyAscii = 0
Else
Montant_du_Préavis_Non_Travaillé.Value > > Val(Montant_du_Préavis_Non_Travaillé.Value)
End If
End Sub