Rapport de message :*
 

Re: transformation d'une valeur d'un TextBox en Euros

Titre du sujet : Re: transformation d'une valeur d'un TextBox en Euros
par Guy le 18/10/2009 11:55:48

Bonjour Beatbles,

Explicite oui, indiqué ça se discute.

Tout d’abord distinguons la chose et sa représentation.

Lorsqu’on écrit 22,50 il s’agit d’un nombre, ce nombre peut représenter des Euros, des kilomètres à l’heure, des kilopascals, des mètres ou des années lumière. Peu importe. 22,50 est un nombre, point.

Qu’une cellule dans le classeur puisse porter en plus du nombre 22,50 un symbole monétaire n’indique nullement que ce symbole est partie intégrante de ce nombre; ce n’est qu’une représentation.

Excel, côté classeur, s’arrange avec le symbole monétaire lors des opérations élémentaires (+, -, /, *) ; il en va tout autrement côté code «22,50€» + «22,50€» = Erreur de type !

Le fait d’indiquer dans le code une instruction : vAleur = CCur(TextBox1) n’implique absolument pas que la représentation du nombre portera le symbole monétaire seulement que ce nombre sera représenté en mémoire sur 64 bits comme suit :

«Les variables de type Currency sont stockées sous la forme de nombres de 64 bits (8 octets) au format entier, avec un décalage de 10 000 afin d'obtenir un nombre à virgule fixe comprenant 15 chiffres à gauche du séparateur décimal et 4 chiffres à droite. Cette représentation offre une plage comprise entre -922 337 203 685 477,5808 et 922 337 203 685 477,5807.»

De plus l’instruction vAleur = CCur(TextBox1) entrainera une erreur d’incompatibilité de type (13) si d’aventure l’usager a saisi autre chose qu’un nombre dans la zone de texte (TextBox). Donc il faudrait restreindre aux seuls caractères numériques ainsi qu’au séparateur décimal indiqué en plus des signes + ou – devant le nombre la saisie dans la zone de texte. Ne pas oublier qu’une cellule du classeur et une zone de texte sont des objets forts différents. Tant dans zone de texte que dans TextBox il y a Texte.

Ainsi, si une cellule porte un affichage tel que 22,50$ et qu’une autre cellule porte 22,50€, Excel pourra sans peine additionner ces valeurs et donner le résultat 45,00. Ce qui est faux, 22 dollars cinquante plus 22 euros cinquante ne donne pas 45 quoi-que-ce-soit.

Avant de modifier le code du formulaire présenté je t'invite à formuler ta question en tenant compte des remarques précédentes.

Cordialement,

Guy