Faire un calcul meme si textbox vide [Résolu]

Signaler
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
-
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
-
bonjour
j'ai se code dans un textbox pour calculer un prix.
mais comment faire le calcul meme si un des textbox et vide,car la ça me fait des erreurs
de calcul

PrivateSub txbPrixR‚el_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txbPrixR‚el.TextlblPrixtot.Text = CDbl(txbPrixR‚el.Text) - CDbl(txbCommune.Text) - CDbl(txbAutreCE.Text) - CDbl(txbCafBV.Text) - CDbl(txbMSA.Text) & " ?"

EndSub

merci
petchy

7 réponses

Messages postés
7
Date d'inscription
mercredi 10 octobre 2007
Statut
Membre
Dernière intervention
3 février 2009

Il me semble que le principal problème soit que ta condition s'active lorsque le texte de ton textbox change, or ici tu le laisse vide. Malgré tout si cela marche, je vois deux solution:

 - tu met 0 en valeur par défaut de ton textbox
 - contrôle : if tonTextBox .text is nothing   (ou tonTextBox.text = "") then
                        tonTextBox.text = 0
                  end if

dernière chose: vérifie que tu puisse calculer à partir de valeur "string", si ce n'est pas le cas Float est ton ami !

Stevbzh
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
ou l'inverse hein....





    Function mCDbl(ByRef sString As String) As Double
        If


sString


.Length = 0 Then
            Return 0.0#
        Else
            Return Convert.ToDouble(


sString)




        End If
    End Function
Messages postés
7
Date d'inscription
mercredi 10 octobre 2007
Statut
Membre
Dernière intervention
3 février 2009

je m'excuse je n'avais pas vu le Cdbl, reste sur la première idée !
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
salut,
CDBL ne fonctionne pas sur un vide, seul VAL sait le faire mais ne prend pas les décimaux

tu peux donc te faire ta fonction perso

    Function mCDbl(ByRef oTBox As TextBox) As Double
        If (oTBox Is Nothing) OrElse (oTBox.Text.Length = 0) Then
            Return 0.0#
        Else
            Return Convert.ToDouble(oTBox.Text)
        End If
    End Function

plus qu'à remplacer :
lblPrixtot.Text = String.Format("{0} €", mCDbl(txbPrixR, el.Text) - mCDbl(txbCommune.Text) - mCDbl(txbAutreCE.Text) - mCDbl(txbCafBV.Text) - mCDbl(txbMSA.Text))

ps : tu es sûr que tu as un control nommé

txbPrixR,el

  ?...


Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
Re


PCPT j'essaye d'appliquer ton code,car cela m'éviterais de mettre du code en plus,en mettant "if textbox ="" then........."
mais j'ai une erreur








Une valeur de type


'String' ne peut pas etre convertie en 'System.Windows.Forms.TextBox'.

petchy
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
41
oups ma faute oui, j'ai voulu aler trop vite. çà saute aux yeux pourtant

dans ta ligne d'appel (

lblPrixtot.Text =...

), enlève tous les ".text"
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
super,merci
@ plus
petchy