Multiplication entre deux TextBox dans Userform

Bonjour le team,

voilà j'ai un userform teste dans ce sujet, et je voudrai multiplier deux valeurs dans mes deux text Box1 et Text Box2 que je saisis

manuellement et le résultat devrait s'afficher automatiquement dans ma text Box3.

peut-on saisir des valeurs avec virgule dans les textbox exemple 1.368 € pour le prix du carburant et pareil pour les litres?

Merci d'avance pour votre aide les amis

150multiplication.xlsm (12.74 Ko)

Bonjour Zed,

Peut-être un truc comme ça

Public V1 As Double, V2 As Double

Private Sub TextBox1_Change()
V1 = CDbl(Me.TextBox1)
Me.TextBox3 = V1 + V2
End Sub

Private Sub TextBox2_Change()
V2 = CDbl(Me.TextBox2)
Me.TextBox3 = V1 * V2
End Sub

Cordialement

Bonjour,

ci-joint exemple

347multiplication1.xlsm (22.74 Ko)

Bonjour à tous,

Une autre version :

Private Sub TextBox1_AfterUpdate()
   If Me.TextBox1.Value = "" Or Me.TextBox2.Value = "" Then Exit Sub
   Me.TextBox3 = CDec(Me.TextBox1) * CDec(Me.TextBox2)
End Sub

Private Sub TextBox2_AfterUpdate()
   If Me.TextBox1.Value = "" Or Me.TextBox2.Value = "" Then Exit Sub
   Me.TextBox3 = CDec(Me.TextBox1) * CDec(Me.TextBox2)
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   'TRANSFORMER LE POINT PAR UNE VIRGULE
   If KeyAscii = 46 Then KeyAscii = 44
   If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   'TRANSFORMER LE POINT PAR UNE VIRGULE
   If KeyAscii = 46 Then KeyAscii = 44
   If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Private Sub TextBox3_Change()
   Me.TextBox3 = Format(Me.TextBox3.Value, "# ##0.00 €")
End Sub

ric

Bonjour les tout le monde

merci à tous pour votre réactivité et pour vos réponses, j'ai pu tester les trois versions et celle qui marche bien sur mon fichier est le code proposé par ric

@ ddetp88 : j'ai testé ton code mais malheuresement ça ne me donnait pas le résultat voulu, et j'ai un renvoi d'erreur. merci pour ta proposition

@ thev : Merci pour ta réponse et ton code fonctionne pour des calculs numérique sans virgule pour ceux qui veulent des calculs sans virgules.

Toujours efficace les gens sur ce forum

un tout dernier souci quand je saisie dans mon formulaire le chiffre exemple 1,399 dans ma textBox ça l'affiche correctement, mais quand je cliquer sur le bouton Ajouter dans le tableau de mon Userform j'ai ça dans mon tableau : 1399.00 au lieu de 1,399

y a-t-il une solution à celà svp ?

ycciycol

Bonjour,

2 points :

1- quel est le format de ces cellules dans la feuille ?

2- quel est le code du bouton du formulaire pour écrire dans la feuille ?

ric

Bonjour à tous,

Si le format des cellules est monétaire ...

Worksheets("Feuil1").Range("F5") = CDec(TextBox3.Value)

Adapter la cible selon ton code ...

ric

Bonjour,

Dans le même esprit que ric mais avec la fonction "Evaluate()" et le contrôle du nombre de séparateur décimal (1 seul accepté) avec récup du séparateur décimal régional. Pour le test, la valeur obtenue après calcul est insérée en C6 au format monétaire :

Dim Sep As String

Private Sub UserForm_Initialize()
    Sep = Format(0, ".")
End Sub

Private Sub TextBox3_Change()
    'pour le test, inscrit le résultat monétaire en C6
    Range("C6").Value = CCur(TextBox3.Value)
End Sub

Private Sub TextBox1_AfterUpdate()
   If Me.TextBox1.Value = "" Or Me.TextBox2.Value = "" Then Exit Sub
   Me.TextBox3 = Evaluate(Me.TextBox1 * Me.TextBox2)
End Sub

Private Sub TextBox2_AfterUpdate()
   If Me.TextBox1.Value = "" Or Me.TextBox2.Value = "" Then Exit Sub
   Me.TextBox3 = Evaluate(Me.TextBox1 * Me.TextBox2)
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Controle TextBox1, KeyAscii
End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Controle TextBox2, KeyAscii
End Sub

Private Sub Controle(Ctrl As MSForms.TextBox, ByVal KeyAscii As MSForms.ReturnInteger)

    Select Case KeyAscii

        Case 44, 46
            KeyAscii = Asc(Sep) 'affecte le bon séparateur
            If InStr(Ctrl.Text, Sep) <> 0 Then KeyAscii = 0 'seulement 1 séparateur

        Case 48 To 57 'ne rien faire !
        Case Else: KeyAscii = 0

    End Select

End Sub

Merci pour ta réponse et ton code fonctionne pour des calculs numérique sans virgule pour ceux qui veulent des calculs sans virgules

Le code fonctionne pour des calculs avec virgule !

Bonjour,

2 points :

1- quel est le format de ces cellules dans la feuille ?

2- quel est le code du bouton du formulaire pour écrire dans la feuille ?

ric

Bonjour ric :

1- le format dans la cellule de la feuille est monétaire .

2- le code du bouton pour ajouter les données du userform dans le tableau :

Private Sub CommandButton1_Click()
    Dim numLigneVide As Integer

    Worksheets("Feuil1").Activate

   numLigneVide = ActiveSheet.Columns(3).Find("").Row

    If TextBox1.Text = "" Then
        MsgBox "Veuillez remplir la date du jour", vbCritical, "Champs manquant"
        TextBox1.SetFocus
    ElseIf TextBox2.Text = "" Then
        MsgBox "Veuillez remplir le nom de votre station", vbCritical, "Champs manquant"
        TextBox2.SetFocus
    Else

        ActiveSheet.Cells(numLigneVide, 3) = CDate(TBox_Date) 'TextBox1.Text
        ActiveSheet.Cells(numLigneVide, 4) = TextBox2.Text
        ActiveSheet.Cells(numLigneVide, 5) = TextBox3.Text
        ActiveSheet.Cells(numLigneVide, 6) = TextBox4.Text
        ActiveSheet.Cells(numLigneVide, 7) = TextBox5.Text

        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""
        TextBox5.Text = ""

        TextBox1.SetFocus
        TextBox2.SetFocus
    End If
End Sub

je te joins le fichier sur lequel je dois intégré le code sans mes données si ça peut t'aider merci d'avance

69fichier-test.xlsm (543.07 Ko)

Dans le même esprit que ric mais avec la fonction "Evaluate()" et le contrôle du nombre de séparateur décimal (1 seul accepté) avec récup du séparateur décimal régional. Pour le test, la valeur obtenue après calcul est insérée en C6 au format monétaire :

Bonjour,

vu mon niveau débutant je pense pas que je serai en mesure de l'adapter tout seul je te joins mon fichier sur lequel je dois intégrer le code sans mes données si tu peux me le faire ça sera cool de ta part

25fichier-test.xlsm (543.07 Ko)

Bonjour,

Un essai ...

Quelques points ...

  • J'ai corrigé J18 dans le calendrier.
  • Dans la Feuil1 > colonne i, l'info se transforme en date > je ne connais pas [@KLM] > je ne peux donc pas corriger ce bout-là.

Qu'est-ce : [@KLM] ?

ric

Qu'est-ce : [@KLM] ?

ric

Bonjour ric

[@KLM] : désigne le nouveau kilométrage au moment du passage à la station essence pour faire un nouveau plein.

je pense que j'ai renommé la colonne.

- par contre quand je saisie par exemple 1.399€ dans le tableau il saisie 1.400€ et ce n'est pas normal.

km

Bonjour à tous,

- Dans le FormCal (calendrier), UserForm_Initialize > dernière ligne, la date courte sera sélectionnée par défaut. Sinon, mets la ligne en commentaire ou supprime-là.

- Le prix 1,399 > rendu dans la feuille > corrigé

- "KLM fait avec le plein" > qui passait en date > corrigé

Je reste à l'écoute.

ric

Je reste à l'écoute.

ric

Bonsoir ric

c'est exactement ce que je cherchais comme résultats et ça fonctionne très bien, et tu as solutionné mon problème

* Tu as assuré comme un maître je te remercie beaucoup

ric

Bonjour thev ^^

mais quand je fait le test j'ai ça et je n'obtient pas le résultat :

Apparemment, tu mets un point et non une virgule.

Mais si ton problème est résolu, c'est parfait.

Bonsoir Thev ^^ je viens de regarder et effectivement ton code fonctionne parfaitement quand je saisie des chiffre avec virgule, exemple 1,368 €,

sinon quand je saisie avec un point exemple 1.368 € là il nous renvoie le message "prix au litre non numérique".

Merci à toi pour ta proposition je confirme ça fonctionne aussi.

moi j'ai pas pensé a tester avec virgule ou point, le code est bon.

vous êtes trop fort les gars

Apparemment, tu mets un point et non une virgule.

Bonsoir Thev ^^ je viens de regarder et effectivement ton code fonctionne parfaitement quand je saisie des chiffre avec virgule, exemple 1,368 €,

sinon quand je saisie avec un point exemple 1.368 € là il nous renvoie le message "prix au litre non numérique".

Merci à toi pour ta proposition je confirme ça fonctionne aussi.

moi j'ai pas pensé a tester avec virgule ou point, le code est bon.

vous êtes trop fort les gars

[/quote]

Rechercher des sujets similaires à "multiplication entre deux textbox userform"