Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème avec un type incompatible

3 réponses
Avatar
Simon Laramée
Salut a tous

J'ai présentement un problème dans mon petit programme de comptabilité que je suis créer, j'essaie d'entrée la fonction "not isnumeric" afin qu'un utilisateur ne puisse pas entrée des lettres a la place des chiffre mais j'ai une fenêtre d'erreur qui m'apparaît

Voici l'extrait de mon code où ca bogue

Private Sub cmdsaisie_Click(

If (CCur(txtprix.Text) >= 0) The
lblstotal2.Caption = CStr(CCur(txtprix.Text)
lbltps2.Caption = CStr(Round(((CCur(txtprix.Text) * csngTPS)), 2)
lbltvq2.Caption = CStr(Round(((CCur(txtprix.Text) + CCur(lbltps2.Caption)) * csngTVQ), 2)
lblgtotal2.Caption = CStr((Round(CCur(txtprix.Text) + CCur(lbltps2.Caption * CCur(lbltvq2.Caption)), 2))

ElseIf (Not IsNumeric(txtprix.Text)) The
MsgBox "Veuillez entrer une valeur numérique de 0 à 9", vbInformation, "Attention

End I

voilà si jamais je peux me faire aide sur ca je vous remercie d'avanc

Merci
Simon

3 réponses

Avatar
Eric
"=?Utf-8?B?U2ltb24gTGFyYW3DqWU=?="
écrivait news::

Salut a tous,

J'ai présentement un problème dans mon petit programme de
comptabilité que je suis créer, j'essaie d'entrée la fonction "not
isnumeric" afin qu'un utilisateur ne puisse pas entrée des lettres a
la place des chiffre mais j'ai une fenêtre d'erreur qui m'apparaît.

Voici l'extrait de mon code où ca bogue !

Private Sub cmdsaisie_Click()

If (CCur(txtprix.Text) >= 0) Then
lblstotal2.Caption = CStr(CCur(txtprix.Text))
lbltps2.Caption = CStr(Round(((CCur(txtprix.Text) * csngTPS)), 2))
lbltvq2.Caption = CStr(Round(((CCur(txtprix.Text) +
CCur(lbltps2.Caption)) * csngTVQ), 2)) lblgtotal2.Caption > CStr((Round(CCur(txtprix.Text) + CCur(lbltps2.Caption *
CCur(lbltvq2.Caption)), 2)))

ElseIf (Not IsNumeric(txtprix.Text)) Then
MsgBox "Veuillez entrer une valeur numérique de 0 à 9",
vbInformation, "Attention"

End If

voilà si jamais je peux me faire aide sur ca je vous remercie
d'avance

Merci !
Simon




Bonjour Simon,

Il faut que tu testes en 1er si txtPrix est numérique.
car l'erreur apparait au moment ou VB évalue l'expression CCur(txtPrix)
donc en rentrant dans le If

Tu dois mettre un truc du genre :
If Not IsNumeric(TxtPrix) then
msgbox "erreur de saisie"
Elseif (CCur(txtprix.Text) >= 0) Then
...
Else
...
End If

A+
Eric
Avatar
Zoury
Salut Simon!

lblgtotal2.Caption = CStr((Round(CCur(txtprix.Text) +


CCur(lbltps2.Caption * CCur(lbltvq2.Caption)), 2)))

à première vue il te manque une (2) paranthèse dans l'expression ci-haut :
'***
lblgtotal2.Caption = CStr((Round(CCur(txtprix.Text) + (CCur(lbltps2.Caption)
* CCur(lbltvq2.Caption)), 2)))
'***

Maintenant quelques p'tits conseils..

La fonction IsNumeric() n'est pas vraiment conseiller.. elle renvoit vrai si
une expression peut être interprété comme étant un nombre sauf qu'elle
comporte des lacunes. Voici un vieux message qui explique pourquoi et qui
propose une solide alternative :
http://groups.google.com/groups?threadm=%23C4SvfvcDHA.2296%40TK2MSFTNGP09.phx.gbl

La fonction Round() quand à elle arrondi les nombres selon un algorithme
appelée "Banking Rounding". Cet algortihme évite d'accumuler un écart
positif en arrondissant toujours au nombre pair le plus près (des fois vers
le haut, des fois vers le bas). Lit la fiche suivante pour plus de détail :
http://support.microsoft.com/default.aspx?kbid6652

La fonction Format$() serait peut-être plus approprié dans ton cas...

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
François Picalausa
Hello,

En outre, il faut éviter isnumeric pour les raisons décrites dans cet
article:
http://groups.google.com/groups?selm=%23c4VQqb4CHA.2392%40TK2MSFTNGP09.phx.gbl

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Eric" a écrit dans le message de
news:
"=?Utf-8?B?U2ltb24gTGFyYW3DqWU=?="
écrivait news::
Tu dois mettre un truc du genre :
If Not IsNumeric(TxtPrix) then
msgbox "erreur de saisie"
Elseif (CCur(txtprix.Text) >= 0) Then