XL 2016 Calcul entre textbox

murainesouspatate

XLDnaute Occasionnel
Bonjour à tous,

Je reviens vers vous car je souhaiterais créer une calculette à TGC (Taxe générale sur la consommation) que nous avons en Nouvelle Calédonie.
J'ai créé un fichier avec un userForm, j'usque la tout allait bien.
L'orsque je souhaite afficher dans la textbox4 le prix HT en fonction de la TGC contenue dans la TextBox3, je ne sais pas trop comment le formuler en VBA.
C'est la 1ère fois que je dois faire un calcul dans une TextBox avec la valeur de deux autres TextBox et je me casse un peu le nez dessus.

Pourriez-vous me donner un petit coup de main ?
Je joint mon fichier en pièce-jointe afin que vous puissiez voir le code que j'ai mis et ainsi me corriger en m'expliquant.

Merci par avance et bonne journée.
 

Pièces jointes

  • Calculette TGC.xlsm
    18.2 KB · Affichages: 27

jmfmarques

XLDnaute Accro
Bonjour
Je n'ai pas ouvert ton classeur. Je n'ouvre jamais un classeur tiers.
Il m'est aisé de deviner ton problème, qui est celui du type (string) des données de tes textboxes.
Si tu veux utiliser ces données dans des calculs, il convient de les convertir en type numérique. C'est ce à quoi servent les fonctions de conversions (Cint, Csng, Clng, Cdbl et Val) de Vba. Je t'invite à les consulter (ton aide interne VBA) et les utiliser.
 

Pounet95

XLDnaute Occasionnel
Bonjour ( ou bonsoir suivant heure en Nouvelle Calédonie)
Pour pouvoir faire les calculs il faut que les objets TextBox soient "préfixés" avec le nom de leur USF.
Ainsi, avec 3 USF ;
USF1.TextBox1 = uSF2.TextBox3 - USF4.TextBox1

Ca devrait faire !
 

murainesouspatate

XLDnaute Occasionnel
Bonjour ( ou bonsoir suivant heure en Nouvelle Calédonie)
Pour pouvoir faire les calculs il faut que les objets TextBox soient "préfixés" avec le nom de leur USF.
Ainsi, avec 3 USF ;
USF1.TextBox1 = uSF2.TextBox3 - USF4.TextBox1

Ca devrait faire !
Bonsoir, merci mais je ne comprends pas pourquoi avoir 3 userform et que les objets TextBox soient "préfixés" .
Cordialement
 

murainesouspatate

XLDnaute Occasionnel
Bonsoir, merci mais je ne comprends pas pourquoi avoir 3 userform et que les objets TextBox soient "préfixés" .
Cordialement
Mon code fonctionne qu'avec une ligne (3%)

"TextBox4.Value = Format(CDbl(TextBox2.Value) / 1.03, "#,##0") 'si la valeur de la TGC est 3%"

par contre si j'ai une autre valeur, je ne sais pas faire les conditionnels pour :

TextBox4.Value = Format(CDbl(TextBox2.Value) / 1.11, "#,##0") 'si la valeur de la TGC est 11% et
TextBox4.Value = Format(CDbl(TextBox2.Value) / 1.22, "#,##0") 'si la valeur de la TGC est 22%.
 

jmfmarques

XLDnaute Accro
La encore (relire ce que j'ai dit dans mon 1er message), je ne peux qu'essayer de deviner.
Et je devine que tu fais tes calculs sur la base de différentes textboxes, dont l'une qui définit un pourcentage.

Il n'est pas adroit de formater tes saisies. Cela ne fait que compliquer l'utilisation de tes valeurs lors de calculs.
Je suis prêt à parier que tes "1.1", etc... sont des valeurs saisies dans une textbox (appelons-la toto)
Et dans ce cas :
VB:
TextBox4.Value = Format(CDbl(TextBox2.Value) / 1.11, "#,##0")
est à écrire ainsi, si le séparateur décimal utilisé est "," :
VB:
TextBox4.Value =cdbl(TextBox2.Value) / cdbl(toto.value)
ou ainsi, si le séparateur décimal utilisé est le ".":
VB:
TextBox4.Value =val(TextBox2.Value) / val(toto.value)
As-tu lu, comme je t'y ai invité, ton aide interne VBA (sur les différentes fonctions que je t'ai signalées) ?
 

murainesouspatate

XLDnaute Occasionnel
La encore (relire ce que j'ai dit dans mon 1er message), je ne peux qu'essayer de deviner.
Et je devine que tu fais tes calculs sur la base de différentes textboxes, dont l'une qui définit un pourcentage.

Il n'est pas adroit de formater tes saisies. Cela ne fait que compliquer l'utilisation de tes valeurs lors de calculs.
Je suis prêt à parier que tes "1.1", etc... sont des valeurs saisies dans une textbox (appelons-la toto)
Et dans ce cas :
VB:
TextBox4.Value = Format(CDbl(TextBox2.Value) / 1.11, "#,##0")
est à écrire ainsi, si le séparateur décimal utilisé est "," :
VB:
TextBox4.Value =cdbl(TextBox2.Value) / cdbl(toto.value)
ou ainsi, si le séparateur décimal utilisé est le ".":
VB:
TextBox4.Value =val(TextBox2.Value) / val(toto.value)
As-tu lu, comme je t'y ai invité, ton aide interne VBA (sur les différentes fonctions que je t'ai signalées) ?
 

murainesouspatate

XLDnaute Occasionnel
bonsoir,
j'ai bien lu ton post, et avec ce code cela fonctionne très bien :
" TextBox4.Value = Format(CDbl(TextBox2.Value) / 1.03, "#,##0") 'si la valeur de la TGC est 3% "
j'ecris dans la textbox3 la valeur de la TGC, ici " 3 " et je fais le calcul divisé par 1,03.
Maintenant, si j'écris une autre valeur de TGC, je ne sais pas formuler la condition.
J'ai trois valeur de TGC, 3%, 11% et 22%.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

[aparté]
Un p'tit coup Miguel De Cervantes, le dimanche matin, entre croissants et café
(ca peut pas faire de mal)
"Que personne ne dise : Fontaine, je ne boirai pas de ton eau."
Bonjour
Je n'ai pas ouvert ton classeur. Je n'ouvre jamais un classeur tiers.

L'examen de ce classeur (que j'ai exceptionnellement ouvert) n'a fait que me conforter...
;)
[/aparté]
 

Staple1600

XLDnaute Barbatruc
Re, Bonjour jmfmarques, mapomme

[aparté bis- avec miettes de croissant dedans]
=>jmfmarques
Ce n'était qu'un trait d'humour dominical ;)
Et cela m'a permis de citer Cervantes (une première pour moi)
Sinon, m'est avis qu'il y a plus de risque à utiliser un browser
(qu'à ouvrir un *.xlsx ( les *.xlsm, je les ouvre toujours sans activer les macros) )
Le plus gros risque restant d'allumer un PC tournant sous Windows ;)
(cf BBIWY :eek: ! )
[/aparté bis- avec miettes de croissant dedans]

=>mapomme
Une faveur, c'est possible ?
 
Dernière édition:

Discussions similaires

Réponses
19
Affichages
570

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo