![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: août 2006
Messages: 138
|
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 |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: août 2007
Localisation: Vosges _______ Seven - Excel 2007
Messages: 2 610
|
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 ! Utilise par exemple un Replace sur l'événement Change pour remplacer les ".".Bonne journée
__________________
« Donnez-moi un point d'appui et je soulèverai le monde » Archimède « L'important, ce n'est pas de savoir se servir des outils, c'est de savoir que les outils existent » JNP http://jnp63.labrute.fr |
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 869
|
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 - 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+ |
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: août 2006
Messages: 138
|
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 |
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: mai 2008
Localisation: Paris
Messages: 4 869
|
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 A+ |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: août 2006
Messages: 138
|
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 |
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Occasionel
Date d'inscription: novembre 2005
Localisation: ile de beauté
Messages: 456
|
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 |
|
|
|
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| multiplication dans textbox | gds35 | Forum Excel | 16 | 11/12/2008 13h27 |
| Opération sur plusieurs textbox | benoua | Forum Excel | 5 | 28/07/2008 17h54 |
| multiplication dans textbox | brewen | Forum Excel | 2 | 23/09/2007 23h31 |
| Bug pour addition de plusieurs textbox | psykofab | Forum Excel | 3 | 18/11/2005 14h27 |
| Opération sur textbox | titou | Forum Excel Downloads - Archives | 2 | 06/08/2003 18h46 |