Bonjour Bruce,
'TRANSFORMER LE POINT PAR UNE VIRGULE
If KeyAscii = 46 Then KeyAscii = 44
le nombre 46 correspond à la valeur ASCII de la touche du point au clavier. Et le nombre 44 est celui de la virgule.
Donc si la touche point est enfoncée son code sera remplacée par celui de la virgule.
'ACCEPTER UNIQUEMENT UNE SEULE VIRGULE ET LES CHIFFRES ENTRE 0 ET 9
If InStr("1234567890,-", Chr(KeyAscii)) = 0 Or ...
Ici on vérifie si le résultat textuel chr(KeyAscii) a une correspondance dans le texte "0123456789,-). Si c'est le cas le test conditionnel sera supérieur à zéro. Il va dépendre de la position du 2ieme terme dans le 1ier. Si tu tapes sur la touche zéro la valeur sera 10, pour la touche moins ce sera 12. Donc si le test donne comme résultat 0 c'est que la touche enfoncée ne convient pas.
Pou ma part la suite du code est trop chargée. Le plus simple est de vérifier que si tu tapes un (-) . Celui-ci soit en première frappe.
Et qu'il n'existe qu'une seule fois. Pour la virgule il faut qu'elle n'existe qu'une fois. Donc il suffit de mettre un test compteur.
Pour la virgule: if KeyASCII = 44 then V=V+1. Ceci avant le code If instrr("0123...) . Si V=2 alors omettre la frappe, la remplacer par du vide ou par une KeysAscii = 65. Ce qui ne sera pas pris dans le test conditionnel puisque c'est un A.
Idem pour le moins. If KeyAscii = 45 then M=M+1. Si M=2 alors KeyAscii = 65. Vérifiez aussi que c'est la première frappe dans le textbox pour l'accepter. Par un compteur de frappe pourquoi pas. S'il se trouve au delà de la 1ère frappe c'est faux.
Bonne continuation.