Valeur textbox si unautre TextBox est vide [Résolu]

avyrex1926 360 Messages postés dimanche 3 décembre 2006Date d'inscription 3 janvier 2012 Dernière intervention - 13 janv. 2007 à 22:27 - Dernière réponse : mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention
- 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? 
Afficher la suite 

12 réponses

Répondre au sujet
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 14 janv. 2007 à 11:11
+3
Utile
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"
<!--
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de mortalino
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 13 janv. 2007 à 22:37
0
Utile
Bonsoir,
Suffit de faire un test sur tes textboxes avant de faire tes calculs.

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

++
Commenter la réponse de cs_Willi
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 13 janv. 2007 à 22:37
0
Utile
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"
<!--
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 13 janv. 2007 à 22:38
0
Utile
Salut Willy,

1 secondes, je capitule 

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 13 janv. 2007 à 22:40
0
Utile
Salut Mortalino,
Lol c'est parce que j'ai été moins bavard ;)
Commenter la réponse de cs_Willi
avyrex1926 360 Messages postés dimanche 3 décembre 2006Date d'inscription 3 janvier 2012 Dernière intervention - 13 janv. 2007 à 22:52
0
Utile
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
Commenter la réponse de avyrex1926
avyrex1926 360 Messages postés dimanche 3 décembre 2006Date d'inscription 3 janvier 2012 Dernière intervention - 13 janv. 2007 à 23:10
0
Utile
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
Commenter la réponse de avyrex1926
avyrex1926 360 Messages postés dimanche 3 décembre 2006Date d'inscription 3 janvier 2012 Dernière intervention - 14 janv. 2007 à 15:15
0
Utile
Merci,

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

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

Désolé, tous fonctionne.  Merci 
Commenter la réponse de avyrex1926
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 14 janv. 2007 à 15:22
0
Utile
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"
<!--
Commenter la réponse de mortalino
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 14 janv. 2007 à 15:24
0
Utile
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...)
Commenter la réponse de jmfmarques
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 14 janv. 2007 à 15:38
0
Utile
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"
<!--
Commenter la réponse de mortalino

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.