Textbox numérique et somme dans textbox

Bonjour le forum,

Voici mon soucis du moment, je n'ai pas pu trouver mon bonheur sur les différents forum jusqu'à présent, j'espère que vous l'avez pour moi.

Dans un Userform, j'ai une série de texbox dans lesquels je ne veux :

  • que du numérique 0 1 2 3 4 5 6 7 8 9
  • une séparation millier du genre : 123 456 789
  • deux décimale après la virgule, même si chiffre entier : 12 345,00 12 345,67
  • le "-" (moins) est accepté : -123 456,78
  • si on met un point "." ou une "," il s'affiche une ","
  • tout les autres caractères sont interdit, ils ne s'afficheront pas et un msgbox "caractère non autorisé" s'affichera

Dans la dernière textbox la somme des textbox s'affiche sous le même format

Si une texbox est vide, elle a la valeur 0

Voici joint mes exemples

exemple test numerique

Par la suite je vais rajouter un bouton valider pour incrémenter une liste dans une autre page excel, ça sera une autre histoire

Bonjour

Modifie les deux codes dans l'USF comme ceci :

Private Sub TextBox1_Change()
If ok = True Then Exit Sub
On Error Resume Next
If Not IsNumeric(TextBox1) Then
    ok = True
    MsgBox "veuillez introduire des chiffres uniquement"
    TextBox1 = ""
    Exit Sub
End If
TextBox1.Value = Format(TextBox1.Value, "###0,00")
TextBox3.Value = (CDbl(TextBox1.Value) + CDbl(TextBox2.Value))
TextBox3 = Format(TextBox3, "# ##0.00 €")
End Sub

Idem pour le code de la textbox2 mais en modifiant Textbox1 par textbox2

Si ok, en répondant merci de cloturer le fil en cliquant sur le V vert à coté du bouton EDITER

Cordialement

Merci Dan,

le truc avance, mais le résultat escompté n'est pas complètement parfait.

1 - Lorsque je tape le 1er chiffre, dans une des 2 textbox j'ai : 001 ou 008 ... je souhaite afficher, une fois que je tape "entrée" 1,00 ou 8,00

2 - je ne peux pas utiliser le "." (point) du clavier numérique, ni la "," (virgule) pour entrer une décimale, ni le "-" (moins) pour une valeur négative

3 - lorsque je tape sur un caractère interdit (hors 0123456789-,.), j'ai le message (c'est super), mais je ne veux pas que l'utilisateur ait une textbox vide, et doive retaper son montant, mais plutôt que la dernière frappe (caractère interdit) ne s'affiche même pas

Pour le reste, c'est cool j'ai avancé, si tu as le ou les derniers trucs pour arriver à mes fins avec ces textbox ce serait top

Bonjour

Votre fichier en retour pour test

Cordialement

Bonjour

le plus simple et de jouer avec les KeyPress

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If InStr("1234567890.", Chr(KeyAscii)) = 0 Then KeyAscii = 0: MsgBox "veuillez introduire des chiffres uniquement"
End Sub

Private Sub TextBox1_Change()
   TextBox3.Value = Val(TextBox1.Value) + Val(TextBox2.Value)
End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If InStr("1234567890.", Chr(KeyAscii)) = 0 Then KeyAscii = 0: MsgBox "veuillez introduire des chiffres uniquement"
End Sub

Private Sub TextBox2_Change()
   TextBox3.Value = Val(TextBox1.Value) + Val(TextBox2.Value)
End Sub

A+

Maurice

Merci Dan pour tes propositions, malheureusement la solution de Archer fonctionne bien mieux.

Ta version ne permet pas les décimales et lorsque l'on reviens sur un des textbox, la correction dans le total ne se fait pas.

Il y a ici des subtilités de programmation que je ne comprends pas encore tout à fait.

Merci beaucoup Dan

Merci à toi Archer, tu as effectivement la bonne solution

Voici ce que ça donne in fine : ça accepte les décimales, les "-" et puis en revenant dans une textbox le total suit la modif, et en plus les arrondis sont de la partie.

Dernier détail à régler pour moi, pour une meilleure lisibilité des montants que l'on rentre j'aimerais pouvoir, lorsque l'on quitte une textbox que le résultat s'affiche en marquant un " " (séparateur de millier) et 2 décimale après le "." (virgule du clavier numérique). D'ailleurs une "," affiché à la place du "." (virgule du clavier numérique) serait plus sympas.

J'ai essayé un code de ce type : TextBox1 = Format(TextBox1, "#,##0.00") mais c'est très loin d'être top, bien au contraire

sans titre

bonjour

tu en fait quoi de ton total ?

car la sa pose un problème pour la nette dans un Range

A+

Maurice

Bonjour Maurice,

In fine, je veux créer une base de donnée qui va aller en s'incrémentant.

Je suis en train de créer un userform "création de Bon de Commande", je souhaite donc, lors de la saisie qu'un calcul se fasse dans l'userform, et ensuite, en validant, je stocke mon bon de commande dans une page excel, et ainsi de suite.

Par la suite, Bon de livraison, facture.

Mon total (je ne vais pas garder "€HT") sera donc stocké.

Il devra, comme les autres infos, être rappelable pour visualisation, et pour pouvoir être rapproché aux BL et factures.

Il me semble que tu soupçonnes un problème à venir que je ne perçois pas encore ...

Aie

++

Fred

Bonjour le fil, bonjour le forum,

Une proposition avec un module de classe...

bonjour

voila un modèle avec un bouton valide

a toi de voir si ca te va

bon je te laisse a toi de jouer

A+

Maurice

Merci Maurice

Bonjour le fil, bonjour le forum,

Oppps ! j'ai vais prendre une douche moi... Je dois sentir le pâté ?!...

Rechercher des sujets similaires à "textbox numerique somme"