XL 2010 Format decimal textbox [RESOLU]

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Je tourne bourrique avec le format "monnaie" des textbox
Au début j'avais une box2 ( versé) en entier 10 20 ..etc avex une Box_change c'était nickel mais dans le réel j'ai pensé que le client pourrait donner 20.5 pour un Prix de 15.5 et là déjà en tapant juste 20. > ça plante( on peut pas mettre le 5); Je viens de passer la box en AfterUpdate mais ici pour l'exemple "rendu" > FAUX
De même si 8.5 > versé 10 rendu Faux ??
 

Pièces jointes

  • FormatPt.xlsm
    20.6 KB · Affichages: 15

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour tous @Marcel32 , @ChTi160 , @Eric C ,@cp4
Merci de votre attention , je vais regarder tout ça pour faire le tour et je vous dirais
Mais il y a un truc quand même c'est que depuis la fin de 2010 , W10 a dû évoluer mais plus MO et mon Excel Plante ( ne répond pas ) souvent en mode débug Vba , j'ai aussi Outlook qui fait des siennes aussi , ALors ??
Mais enfin delà à ce que 10-8.5 = 2 euh ?????
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bon + vite que prévu
J'ai opté la soluce de CP4 déjà il est aussi en 2010 : tout est Ok j'avais déjà testé Keypress mais Pb avec le "." là c'est mieux et je suis repassé en Box_Change
Je vais aller voir tout ça dans l'appli réel
Sinon en relançant on fichier j'avais encore le Bug du "." et Boom !!! Excel se barre et se relance avec le fichier comme avant rien perdu ?????
 

patricktoulon

XLDnaute Barbatruc
bonjour à tous
a vrai dire je ne vois pas le soucis
si ce n'est que hervé62 oublie qu'un textbox c'est du string
et que par conséquent par exemple val("1,5") =1 car le séparateur pour val est le point tandis que pour CDbl le séparateur est la virgule

conclusion:
quand on sélectionne la combo le textbox1 est en separateur "virgule" autant tout mettre en virgule et utiliser CDbl
donc a l'afterupdate du textbox2
VB:
Private Sub TextBox2_AfterUpdate()
TextBox2 = Replace(TextBox2, ".", ",")
rend = CDbl(TextBox2) - CDbl(TextBox1)
TextBox3 = Format(rend, "#,##0.00")
End Sub
il n'y aura plus de méprise que ce soit pour une version d'excel ou une autre
et aucun problème avec un éventuel résultat négatif
demo3.gif
 

TooFatBoy

XLDnaute Barbatruc
si ce n'est que hervé62 oublie qu'un textbox c'est du string
et que par conséquent par exemple val("1,5") =1 car le séparateur pour val est le point
Toutafé. C'est d'ailleurs ce que j'ai signalé hier.


En revanche, hier je me suis trompé concernant le signe du résultat : c'est en fait inversé par rapport au résultat que je m'attendais à obtenir :
- pour un truc qui vaut 10 €, si on verse 15 €, je m'attendais à voir un solde négatif de 5 €, c'est-à-dire - 5 €, mais ça affiche 5€ ;
- pour un truc qui vaut 10 €, si on verse 5 €, je m'attendais à voir un solde positif de 5 €, c'est-à-dire + 5 €, mais ça affiche -5€.
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour à tous,

Val fait très bien l'affaire mais il faut remplacer la virgule par le point :
VB:
Private Sub TextBox2_AfterUpdate()
rend = Val(Replace(TextBox2, ",", ".")) - Val(Replace(TextBox1, ",", "."))
TextBox3 = Format(rend, "#,##0.00")
End Sub
Fonctionne quel que soit le séparateur décimal de l'ordi, ce qui n'est pas le cas du post #19.

A+
 

Pièces jointes

  • FormatPt.xlsm
    22.6 KB · Affichages: 6

patricktoulon

XLDnaute Barbatruc
Bonjour à tous,

Val fait très bien l'affaire mais il faut remplacer la virgule par le point :
VB:
Private Sub TextBox2_AfterUpdate()
rend = Val(Replace(TextBox2, ",", ".")) - Val(Replace(TextBox1, ",", "."))
TextBox3 = Format(rend, "#,##0.00")
End Sub
Fonctionne quel que soit le séparateur décimal de l'ordi, ce qui n'est pas le cas du post #19.

A+
re
Bonjour @job75
c'est pareil tu passe par un replace
on parle de monétaire autant rester en nombre décimal(double)donc CDbl
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bon de toute façon mon truc fonctionne ( celui de CP4) @jean marie : c'est pour une asso et revente de jeux , généralement à 95% ce sera entier mais je voulais anticiper au cas OU !!!! et si qq donnait 10.5€ pour 8.5€ à payer par exemple ; En gros tu passes à la caisse vous payez ce que vous avez pris mon appli en registre toutes les infos .... c'est come un ticket de S Market !!!
@patricktoulon : non !!!! je sais , dans Textbox il y a TEXT !!! d'ailleurs dans mon appli j'utilise VAL à chaque fois . A la racine c'est le POINT qui me bloquait ...tout simplement

Le truc c'est que je récupère des valeurs "Nombre" et souvent avec "xx,xx €" ( 10,50 €) et sur un pavé numérique le réflexe c'est entrer 20.50 si on me donne 20€ cinquante pour rendre 10
 

patricktoulon

XLDnaute Barbatruc
re
bonjour herve62
si tu n'a pas modifié le séparateur décimal dans les options excel alors avec CDbl tu peux garder et formater tes textboxs avec " €" sans que ça gêne le calcul
le plus ennuyant c'est l'espace séparateur de millier qui est ennuyant un replace est nécessaire sinon tu peux calculer avec le "€"
voila pourquoi je préfère CDbl avec Val ca ne fonctionne pas
ps: le "€" est automatique tu n'a pas a le taper
démonstration
demo3.gif
 

Pièces jointes

  • FormatPt.xlsm
    18 KB · Affichages: 4

TooFatBoy

XLDnaute Barbatruc
@patricktoulon : non !!!! je sais , dans Textbox il y a TEXT !!! d'ailleurs dans mon appli j'utilise VAL à chaque fois . A la racine c'est le POINT qui me bloquait ...tout simplement
Non, je ne crois pas.

Comme je l'ai dit en #5, c'est plutôt la virgule qui te posait problème car, comme l'a expliqué Patricktoulon en #19, le fait qu'il y ait une virgule tronquait la valeur à sa partie entière.
 

job75

XLDnaute Barbatruc
En fait je n'avais jamais été modifier le séparateur décimal Windows.

Du coup j'ai été dans le panneau de configuration et j'ai remplacé la virgule par le point.

Eh bien dans ce cas je découvre que ces 2 lignes de codes renvoient "8.5" (avec le pont) sans bug :
VB:
Sub Test()
MsgBox CDbl("8,5") 'virgule
MsgBox CDbl("8.5") 'point
End Sub
Donc ton code du post #19 fonctionne quel que soit le séparateur décimal de l'ordi.

Cela dit il faudrait quand même vérifier sur un ordi construiit avec le point comme séparateur.

A+
 

patricktoulon

XLDnaute Barbatruc
re
bonjour @Marcel32
Comme je l'ai dit en #5, c'est plutôt la virgule qui te posait problème car, comme l'a expliqué Patricktoulon en #19, le fait qu'il y ait une virgule tronquait la valeur à sa partie entière.
avec Val !!!!!il est tronqué par avec CDbl
Merci @job75 pour le partage de la découverte ( je stocke)
celui qui a une version US serait sympa de nous retourner le constat

l'autre avantage de CDbl c'est le suffixe " € , % , etc "tout ce que voulez est occulté dans la prise en compte du nombre kool non?;)

en fait tout les suffixe ayant attrait au numéraire
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Bon Pour aller direct au but , je viens de raccourcir un max mon fichier (sinon 3Mo) et là vous aurez le vrai Pb
Pour tester
Mettre un N° achat
Entrer un code comme le 1 et déjà là vous allez vous rendre compte
Ensuite Payer en ESPECE , entrer 20
Pas besoin de VALIDER ( c'est juste pour transcrire dans les fiches et j'ai Inhibé)
Et aussi Tester avec Versé= 20.5
Ou aussi faire Achat 1 puis Autre avec 4 > moi j'ai 23 alors que 15.5 + 8.5=24
 

Pièces jointes

  • BOURSE AUX JEUX - acheteurs.xlsm
    253.2 KB · Affichages: 7

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 520
dernier inscrit
Azise