Valeur textbox si unautre TextBox est vide

Résolu
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 - 13 janv. 2007 à 22:27
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 14 janv. 2007 à 15:38
Bonjour,

Je veux calculer plusieurs textBox. Par contre si le testbox 1 et 2 sont vides, ça me donne un erreur. Je voudrais que sil n'y a rien dans le textbox 1 et 2, l'orsque je clique sur addition, que le curseur revienne au testbox 1.

Voici mon code:

Private Sub CommandButton2_Click()
'Addition de tous les montants avant taxe = sous-total
TextBox25.Value = CStr(CDec(TextBox16.Value * TextBox15.Value) + CDec(TextBox18.Value * TextBox17.Value) + CDec(TextBox20.Value * TextBox19.Value) + CDec(TextBox22.Value * TextBox21.Value) + CDec(TextBox24.Value * TextBox23.Value))
'Calcul de la tps
TextBox26.Value = CStr(CDec(TextBox25.Value) * ((TextBox1.Value) / 100))
'Calcul de la tvq
TextBox27.Value = CStr(CDec(TextBox25.Value) + (TextBox26.Value)) * ((TextBox2.Value) / 100)
'Grand total
TextBox28.Value = CStr(CDec(TextBox25.Value) + CDec(TextBox26.Value) + CDec(TextBox27.Value))
End Sub

Comment faire? 

12 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 janv. 2007 à 11:11
Salut,

oui, je suis resté sur l'objet range au lieu de textbox, désolé. Il faut utiliser SetFocus :
TextBox1.SetFocus

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
3
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
13 janv. 2007 à 22:37
Bonsoir,
Suffit de faire un test sur tes textboxes avant de faire tes calculs.

if len(textbox25.value)>0 then textbox25.value="0"
.....

++
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
13 janv. 2007 à 22:37
Re,

pour tout ce qui est TextBox, afin de savoir si c'est nul :
If TextBox1.Text vbNullString And TextBox2.Text vbNullString Then
    TextBox1.Select
Else
    ... tes calculs
End If

Pour infos, je vois que tu fais des calculs pour la TVA, j'ai un snippet, vois (sait-on jamais) si ça peut t'intéresser :

Function
 MontantTTC(ByVal dPrice As Double, Optional dTVA As Double = 19.6, Optional iFloat As Integer = 2) As Double
    MontantTTC = Round(dPrice + dPrice * dTVA / 100, iFloat)
End Function
Function MontantHT(ByVal dPrice As Double, Optional dTVA As Double = 19.6, Optional iFloat As Integer = 2) As Double
    MontantHT = Round(dPrice / (1 + dTVA / 100), iFloat)
End Function

Sub Exemple_Utilisation()
    Debug.Print MontantTTC(100)
    Debug.Print MontantHT(100, 5.5) 'si tu veux autres choses que 19.6%, rajoute le
End Sub

Sub
 Exemple_Utilisation_Avec_TextBox()
    MsgBoxMontantTTC(CDbl(TextBox1.Text))
    MsgBox

MontantHT(CDbl(TextBox1.Text)
+ CDbl(TextBox2.Text)
)

End Sub

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
13 janv. 2007 à 22:38
Salut Willy,

1 secondes, je capitule 

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
13 janv. 2007 à 22:40
Salut Mortalino,
Lol c'est parce que j'ai été moins bavard ;)
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
13 janv. 2007 à 22:52
Salut mortalino,

Contrairement à la TVA applicable chez vous, nous au Québec, nous avons 2 taxes (Fédérale et Provinciale = TPS (6%) et TVQ (7%)
).
Ma problématique est que la TVQ qui est calculée en second, doit  se calculer après avoir additionner le sous-total et la TPS.

Exemple:
Montant    100.00

TPS              6.00
TVQ             7.95

Total         113.95
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
13 janv. 2007 à 23:10
re-bonjour,

j'ai mis ce code:
Private Sub CommandButton2_Click()If TextBox1.Text vbNullString And TextBox2.Text vbNullString Then
TextBox1 .Select
Else
    'Addition de tous les montants avant taxe = sous-total
TextBox25.Value = CStr(CDec(TextBox16.Value * TextBox15.Value) + CDec(TextBox18.Value * TextBox17.Value) + CDec(TextBox20.Value * TextBox19.Value) + CDec(TextBox22.Value * TextBox21.Value) + CDec(TextBox24.Value * TextBox23.Value))
'Calcul de la tps
TextBox26.Value = CStr(CDec(TextBox25.Value) * ((TextBox1.Value) / 100))
'Calcul de la tvq
TextBox27.Value = CStr(CDec(TextBox25.Value) + (TextBox26.Value)) * ((TextBox2.Value) / 100)
'Grand total
TextBox28.Value = CStr(CDec(TextBox25.Value) + CDec(TextBox26.Value) + CDec(TextBox27.Value))
End If
End Sub

parcontre il me donne un erreur sur:

TextBox1.Select
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
14 janv. 2007 à 15:15
Merci,

 il ny a plus d'erreur et ça fonctionne, parcontre le curseur ne revient pas dans le textbox1 pour ajouter les %

.
0
avyrex1926 Messages postés 360 Date d'inscription dimanche 3 décembre 2006 Statut Membre Dernière intervention 3 janvier 2012 3
14 janv. 2007 à 15:19
Non je m'excuse, le problème est que j'avais oublié d'enllever le signe '
avant le code.

Désolé, tous fonctionne.  Merci 
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 janv. 2007 à 15:22
Que veux-tu faire exactement, une fois que le contrôle à le focus ?
Pour infos, si tu souhaites placer le curseur à la fin de la valeur saisie dans un textbox, il faut faire ceci :
TextBox1.SelStart = Len(TextBox1.Text)

Et si tu veux rajouter le sigle %, il faut faire ceci :
TextBox1.Text = TextBox1.Text & "%"

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
14 janv. 2007 à 15:24
coucou, Mortalino,

le fait qu'avyrex a écrit plus haut :
TextBox1.Value (parmi d'autres)...
donne à penser qu'il travaille sous VBA et pas VB...

Si c'est bien celà : ce n'est pas toi qui m'a dit ailleurs que SetFocus n'était pas connu sous VBA ?

(n'y voir que de l'amitié et aucune forme d'ironie, s'il te plait... car il n'y en a pas...)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 janv. 2007 à 15:38
Salut jmfmarques,

aucun problème
En fait, la méthode (ou procédure) SetFocus existe pour les contrôle en VBA, malheureusement, ce sont les évènements LostFocus et GotFocus des contrôles qui viennent à manquer.

Concernant le .Value, c'est effectivement typique à VBA, mais .Value et .Text c'est pareil pour un contrôle.
Là où ça diffère (quelque fois, je n'arrive pas à le reproduire, c'est peut-être qu'avec Office 2000), c'est pour une cellule : admettons que dans A1, tu aies 1 formule, MsgBox Range("A1").Text te retournera la valeur affichée, alors que MsgBox Range("A1").Value te retournera la formule

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
Rejoignez-nous