Opération entre plusieurs textbox (addition et multiplication)

  • Initiateur de la discussion Initiateur de la discussion davidp
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

davidp

XLDnaute Occasionnel
Bonjour le forum,

merci d'avance à celui ou celle qui pourra m'aider à cette heure matinale.


je cherche à réaliser l'opération suivante entre différentes TEXTBOX.

TEXTBOX6=CDbl(TextBox1.Value) + CDbl(TextBox2.Value) * 100 / CDbl(TextBox3.Value) + CDbl(TextBox4.Value)

Pour exemple le résultat devrait être :

ex: Textbox6= (10 + 10)*100 / (50 + 50 ) = 20

Il doit y avoir une subtilité.

Merci d'avance pour votre aide

Bonne journée

DAVIDP
 
Re : Opération entre plusieurs textbox (addition et multiplication)

Bonjour DavidP 🙂,
Effectivement, il y a plusieurs subtilités :
1) Les textboxs vides ne sont pas assimilés à 0
2) Tu divises par 0 si 3 et 4 sont vides
Teste ce code à adapter, et tu comprendras mieux
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TEXTBOX6 = CDbl(TextBox1.Value) + CDbl(TextBox2.Value) * 100 / (CDbl(TextBox3.Value) + CDbl(TextBox4.Value))
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TEXTBOX6 = CDbl(TextBox1.Value) + CDbl(TextBox2.Value) * 100 / (CDbl(TextBox3.Value) + CDbl(TextBox4.Value))
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TEXTBOX6 = CDbl(TextBox1.Value) + CDbl(TextBox2.Value) * 100 / (CDbl(TextBox3.Value) + CDbl(TextBox4.Value))
End Sub
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TEXTBOX6 = CDbl(TextBox1.Value) + CDbl(TextBox2.Value) * 100 / (CDbl(TextBox3.Value) + CDbl(TextBox4.Value))
End Sub
Private Sub UserForm_Initialize()
TextBox1 = 0
TextBox2 = 0
TextBox3 = 1
TextBox4 = 1
End Sub
D'un autre côté, tu as intérêt à vérifier que tes textbox sont des nombres, et bien avec une "," et non un "."... Quelques tests en perspective 😛! Utilise par exemple un Replace sur l'événement Change pour remplacer les ".".
Bonne journée 🙂
 
Re : Opération entre plusieurs textbox (addition et multiplication)

Bonjour davidp, JNP 🙂

Comme ça, le matin ça réveille :

Code:
Private Sub CommandButton1_Click()
Dim d As Double
d = Val(Replace(TextBox3, ",", ".")) + Val(Replace(TextBox4, ",", "."))
If d = 0 Then d = 1
TextBox6 = (Val(Replace(TextBox1, ",", ".")) + Val(Replace(TextBox2, ",", "."))) * 100 / d
End Sub

3 subtilités :

- remplacer les virgules dans les TextBox par un point et utiliser Val, on obtient ainsi toujours des nombres

- quand le dénominateur est nul, le remplacer par 1 pour éviter la division par 0 (VBA n'aime pas)

- mettre des parenthèses au bon endroit.

A+
 
Re : Opération entre plusieurs textbox (addition et multiplication)

Bonjour Job75 et JNP,

Tout d'abord un Grand Merci car je ne risquais pas de trouver la solution tout seul.

je suis maintenant au travail , et je vais tester ce soir .

Je vous tiens au courant

A ce soir

Un GRAND MERCI .....
DAVID P
 
Re : Opération entre plusieurs textbox (addition et multiplication)

Bonjour davidp, le fil, le forum,

Un petit complément pour obliger l'entrée d'une valeur numérique dans une TextBox :

Code:
Private Sub TextBox1_Change()
If Not (IsNumeric(Replace(TextBox1, ",", ".")) _
  Or IsNumeric(Replace(TextBox1, ".", ","))) Then TextBox1 = ""
End Sub

Fonctionne quel que soit le séparateur décimal utilisé par l'ordi.

A+
 
Re : Opération entre plusieurs textbox (addition et multiplication)

Bonjour Job75,JNP ,le forum

Désolé pour le retard, un Grand Merci, j'ai adapté tout ceci dans mon programme.

Tout fonctionne à merveille.

Dommage que je ne dispose de pas + de temps car on apprend énormément grace à ce forum.

A Bientôt et Merci

DavidP
 
Re : Opération entre plusieurs textbox (addition et multiplication)

bonsoir a tous
pour revenir aux petits probleme de math il est normal que tu ne trouves pas le bon resultat
tu ecris:
TEXTBOX6=CDbl(TextBox1.Value) + CDbl(TextBox2.Value) * 100 / CDbl(TextBox3.Value) + CDbl(TextBox4.Value)

Pour exemple le résultat devrait être :

ex: Textbox6= (10 + 10)*100 / (50 + 50 ) = 20

or ta combinaison permet de trouver le resultat 60.002

il faut penser a respecter les priorités arithmetiques
si je me fie a ton exemple, pense a mettre des parentheses

TEXTBOX6=(CDbl(TextBox1.Value) + CDbl(TextBox2.Value)) * 100 / (CDbl(TextBox3.Value) + CDbl(TextBox4.Value))

bonne continuation
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
960
Retour