Problème du format des nombres de la machine

Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 - 25 déc. 2023 à 14:31
Whismeril Messages postés 19032 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 avril 2024 - 25 déc. 2023 à 18:32

Bonjour,

Il y'a un temps,  j'ai conçu une application en VB6, qui marchait bien sur ma machine avec paramétrage ,langue (Français (France)), dernièrement je l'ai réinstallé sur une autre machine avec Windows 10, qui une fois redémarrée, le paramétrage des nombres de la machine revient par défaut au

format : 1,234.00 (format américain, séparation par virgule, les décimaux après le point)

alors que mon application est conçue de façon à reconnaitre seulement le

format : 1 234,00 (format français, séparation par espace; les décimaux après la virgule)

Je cherche une commande ou un code qui, une fois l'application est ouverte, vérifie à priori le paramétrage des nombres, et s'il est différent au

format ( 1 234,00 ) devrait envoyer une alerte pour changer le paramétrage du format des nombres de la machine

Merci pour votre aide


Windows / Chrome 120.0.0.0

A voir également:

3 réponses

Whismeril Messages postés 19032 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 avril 2024 931
25 déc. 2023 à 15:50

Je ne sais pas s'il y avait une instruction pour ça en vb6.

Mais tu peux essayer de convertir "1 234,56" si ça plante, alors tu affiches ton message.


0
Whismeril Messages postés 19032 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 avril 2024 931
25 déc. 2023 à 15:51

Après, c'est une mauvaise pratique, l'utilisateur de l'ordinateur peut avoir besoin que son PC reste en configuration américaine.

Ça devrait être à ton programme de s'adapter.

0
Lenouveauapprenti Messages postés 300 Date d'inscription samedi 22 décembre 2018 Statut Membre Dernière intervention 7 avril 2024 2
25 déc. 2023 à 18:00

Bonjour

Pour vous dire la forme écrite de la forme est comme suite :

'TSalBrut est la zone de saisie du salaire

'pour changer le point en virgule

TSalBrut=replace(TSalBrut,".",",")

'Format du Chiffre

TSalBrut=format(TSalBrut,"#,##0.00")
0
Whismeril Messages postés 19032 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 avril 2024 931
25 déc. 2023 à 18:32

Ça ne change rien à mes réponses

Mais ça témoigne d'autres mauvaises pratiques.

Selon ton commentaire, TSalBrut doit un textbox ou équivalent.

Cette ligne

TSalBrut=replace(TSalBrut,".",",")

Cherche donc à remplacer un caractère dans type Textbox, or c'est dans du texte qu'on remplace un caractère. Tu laisses donc le compilateur de VB décider de quel texte il s'agit.

Pour bien faire et éviter les surprises le jour ou VB décide d'utiliser un autre texte que celui dont tu t'attends, il faudrait te servir de la propriété qui retourne ou définit le texte affiché (selon les VB ça peut être Text ou Caption, en VB6 je ne sais plus)

Ensuite, cette ligne

TSalBrut=replace(TSalBrut,".",",")

Veut formater un nombre, c'est encore pire, tu laisses à VB le choix de prendre un truc dans le type Textbox, le convertir en nombre, comme il le souhaite, le formater et renvoyer un texte vers le type TextBox.


Les bonnes pratique seraient

Dim leTexte as string
Dim leNombre as double

leTexte = TSalBrut.Text 'ou .Caption

leNombre = MaFonctionDeConversion(leTexte)

leTexte = format(leNombre, "#,##0.00")

TSalBrut.Text = leNombre

Et la fonction "MaFonctionDeConversion" serait capable de convertir un texte qui représente un nombre en nombre quel que soit son format.


0