Problème virgule dans textbox

britchouleloup

XLDnaute Junior
Bonjour,

Voici ma démarche :
1- saisie dans une textbox d'un montant décimal ou non, j'ai associé à ce textbox trois procédures :

additionner les textbox dans un autre textbox en "direct" et afficher le total dedans

Private Sub mttrec1_Change()
totmttrec = Format(calc, "# ##0.00")
End Sub


beforeupadate : vérifier qu'il s'agit d'un nombre

Private Sub mttrec1_beforeupdate(ByVal cancel As MSForms.ReturnBoolean)
If IsNumeric(mttrec1) = False Then
MsgBox "Merci de saisir un montant valide !"
cancel = True
End If
End Sub


afterupdate : AFFICHER 2 chiffres après virgule même si entier

Private Sub mttrec1_AfterUpdate()
mttrec1.Value = Format(mttrec1.Value, "00.00")


End Sub

2- La validation de l'userform balance le montant des textbox dans des cellules au format comptabilité comme suit :

If mttrec1 <> Empty Then
Range("d" & ligne) = CDbl(mttrec1)
End If


PROBLEME
Le total textbox se fait parfaitement si je mets un point pour séparer décimale mais je peux pas changer de textbox du fait de mon beforeupdate. Par contre si je mets une virgule, il me fait plus l'addition des décimales correctement, mais me valide mon beforeupdate.

Comment faire???
:eek:Je suis un peu perdu:confused:, pourriez vous m'aider.:)

Merci par avance.
 

Pierrot93

XLDnaute Barbatruc
Re : Problème virgule dans textbox

Bonjour,

regarde peut être le code ci-dessous, il devrait pouvoir t'aider :

Code:
Dim x As Double
x = Val(Replace(TextBox1.Value, ",", ".")) + Val(Replace(TextBox2.Value, ",", "."))

bon après midi
@+
 

britchouleloup

XLDnaute Junior
Re : Problème virgule dans textbox

merci je ne connaissais pas comme simple manip' , comme dit je ne sais plus quel Xldnaute "Plus je sais, plus je sais que je ne sais rien.";)

voici le fichier réduit à mort, mais si mon problème est résolu pour ces deux textbox, il me suffira de décliner..:)

merci par avance encore et encore une fois
 

Pièces jointes

  • Classeur2.zip
    19 KB · Affichages: 75
  • Classeur2.zip
    19 KB · Affichages: 72
  • Classeur2.zip
    19 KB · Affichages: 86

Pierrot93

XLDnaute Barbatruc
Re : Problème virgule dans textbox

Bonjour,

rajoute le code ci-dessous dans le module de ton usf, remplacera automatiquement les virgules par des points lors de la saisie :

Code:
Private Sub mttrec1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 44 Then KeyAscii = 46
End Sub
Private Sub mttrec2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 44 Then KeyAscii = 46
End Sub

bonne journée
@+
 

britchouleloup

XLDnaute Junior
Re : Problème virgule dans textbox

merci pour ta réponse pierrot, j'avais aussi cette possibilité avec une fonction "replace" que j'ai trouvé sur le forum

replace(mttrec1,",",".")

du coup pas de problème pour remplacer les éventuelles virgules qui pourraient être saisies par des points. Le souci vient plus du controle "IsNumeric". Du coup avec un point, la valeur que prend un textbox qui inclue un point du type : 12.45, n''est pas reconnue comme étant un ismuneric. Il me faudrait un controle qui accepte les . comme étant un séparateur de décimale et donc les montants contenant un . comme des isnumeric.

J'ai pensé à autre chose, mon beforeupadate pourrait vérifier que les caractères avant le point sont bien des nombres et que les caractères après le point (seulement 2) en plus sont bien des nombres. Mais là, j'aurais besoin d'un peu d'aide encore.

Merci
 

Pierrot93

XLDnaute Barbatruc
Re : Problème virgule dans textbox

Re,

chez moi pas ce problème, mais mon séparateur de décimale est le point dans les paramètres régionaux windows. Sinon pour éviter d'utiliser la fonction "isnumeric", tu peux aussi contrôler et interdire la saisie des caractères non numériques....

Code:
Private Sub mttrec1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

@+
 

britchouleloup

XLDnaute Junior
Re : Problème virgule dans textbox

merci beaucoup,

j'avais vu cette sub quelque part mais je n'arrivais pas à la décliner. ça marche nickel pour empecher d'avoir des valeurs non numériques.

Regarde un truc chelou, ça valide mes valeurs avec un point mais au moment de passer sur le champ suivant mon after update à l'air de tout compliqué. Je voulais par ce afterupdate que le chifrre saisi ex: 15.2 se transforme en 15.20 histoire d'affichage et d'uniformité.
Mais là dès que je mets moins ou 2 chiffres à gauche de la virgule ça me fait un truc bizarre.

je joins le fichier avec ta dernière modif appliqué et le nouveau "bug"

merci
 

Pièces jointes

  • Classeur2bis.zip
    19.3 KB · Affichages: 81
  • Classeur2bis.zip
    19.3 KB · Affichages: 86
  • Classeur2bis.zip
    19.3 KB · Affichages: 84

Pierrot93

XLDnaute Barbatruc
Re : Problème virgule dans textbox

Re, bonjour Papou

chez moi si je tape 1,24 j'ai 124.00 qui s'affiche, normal puisque le caractère de la virgule n'est pas pris en compte :

Code:
    If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0

@+
 

Discussions similaires