FORCER LE "." POINT COMME PARAMÈTRE DÉCIMAL DANS LES PARAMÈTRES RÉGIONNAUX ( MA

Signaler
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/33701-forcer-le-point-comme-parametre-decimal-dans-les-parametres-regionnaux-ma-solution

Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Val utilise toujours le point quel que soit le séparateur décimal en vigueur : donc normalement le code de renfiled devrait fonctionner en france et dans les pays anglophones... sauf si on précise un séparateur décimal différent de virgule et point (rare !) et qu'on demande de traiter une chaine avec une virgule par exemple.
La solution est de lire le séparateur en vigueur, de regarder si elle est présente dans la chaine, et si oui de la remplacer par le point puis d'utiliser Val. Attention, la fonction IsNumeric peut être très longue : mieux vaut remplacer systématiquement le séparateur par le point et d'utiliser Val.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
sûr qu'il y a souvent un gouffre entre les bonnes moeurs et ce qui est fait dans le monde reel ^^
Messages postés
232
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
5 octobre 2012

oui ok pour IsNumeric c'est juste mais j'ai lu ton article mais j'ai été confronté à un problème similaire où un client a envoyé son fichier data d'un vieux logiciel où le stockage n'était pas correcte (comme tu le relate d'ailleurs) et boom patatrac, en France, "123.456,7" renvoyait 123.456
D'où comme tu le soulignes, d'enregistrer de manière internationale !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
j'avoue ne pas saisir.
Si la chaine est conforme aux parametres regionnaux du poste, IsNumeric la reconnaitra, quels que soient les parametres utilisés.

Sinon, on a affaire a une chaine formatée en utilisant le format international, et Val s'en sortira haut la main.

La seule alternative est une donnée mal formée, compte tenu des parametres du poste. Dans ce cas, ton code la trafique et tente d'en récupérer une valeur correcte.
Ce genre de manipulation est à éviter et met à jour une mauvaise conception a un endroit où a un autre.

Comme je le dit dans mon article, on doit toujours transmettre les données de manière internationale, sauf si le destinataire est un humain dont on peut présumer des parametres régionnaux. Auquel cas, on formatte la donnée de manière à ce qu'elle lui paraisse lisible et non ambigüe.
Afficher les 43 commentaires