MODIFICATION DU SÉPARATEUR DÉCIMAL DANS LA BASE DE REGISTRE

cs_BABASSE Messages postés 41 Date d'inscription samedi 23 février 2002 Statut Membre Dernière intervention 31 juillet 2007 - 22 janv. 2003 à 10:17
CALMELSCHRISTOPHE Messages postés 1 Date d'inscription samedi 16 février 2008 Statut Membre Dernière intervention 20 septembre 2009 - 20 sept. 2009 à 17:53
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/5724-modification-du-separateur-decimal-dans-la-base-de-registre

CALMELSCHRISTOPHE Messages postés 1 Date d'inscription samedi 16 février 2008 Statut Membre Dernière intervention 20 septembre 2009
20 sept. 2009 à 17:53
Je viens de tester le code proposé avec succés cela marche très bien.

Merci encore pour ces quelques lignes claires.
gregcitt Messages postés 37 Date d'inscription jeudi 28 septembre 2006 Statut Membre Dernière intervention 18 juin 2007
15 nov. 2006 à 15:05
Cette source ne marche que si le nombre comporte 3 caractères, soit le séparateur en 2ème position, je me trompe?
poy20 Messages postés 40 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 19 janvier 2009
3 nov. 2006 à 13:23
Excellent Mutos ^^, c'est la meilleure solution que j'ai pu lire jusqu'à maintenant ...
Mutos Messages postés 103 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 14 mai 2010
27 déc. 2005 à 10:58
Bonjour à tous, bonjour PATRICE99,


VB.Net en tout cas, on peut lui faire ignorer les paramètres régionaux, j'ai testé avec les 3 lignes suivantes, mon application ne plante plus, preuve qu'elle interpréte bien les nombres avec ".", et mon panneau de config me sort bien le Français avec la "," :

Imports System.Globalization
Imports System.Threading
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-us")

A faire en début de programme (Main ou Load de la première forme). Ici on lui force la culture américaine avec le "." et tous les autres paramètres, mais on peut aussi faire plus subtil en créant une variable CultureInfo et en la modifiant à loisir !


@+

Benoît 'Mutos' ROBIN
http://spacesims.hoshikaze.net
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
27 déc. 2005 à 10:14
On ne peut pas changer le séparateur décimal pour une application seulement, on ne peut le changer que pour tout Windows.
Mutos Messages postés 103 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 14 mai 2010
27 déc. 2005 à 05:38
Bonjour,


Encore un vieux post (2003 ^-^) sur le problème qui me préoccupe : une appli qui plante sur des constantes en dur et en "." lorsque la machine est en ",". Par hasard, quelqu'un aurait-il un tuyau pour modifier le séparateur dans l'application sans changer celui de la machine ? Ce me semblerait la meilleure solution, mais jusqu'à présent, 4 sujets et pas de réponse dans ce sens...


@+

Benoît 'Mutos' ROBIN
http://hoshikaze.net
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
3 nov. 2003 à 09:37
Voici une version améliorée :

Public Function bChangerSeparateurDecimal( _
Optional sSepDecimalImpose$ = ".", _
Optional bRetablir As Boolean = False) As Boolean

Dim sSepDecimal$, lCodePage_LCID&, rNumber!, lRet&
Const lLOCALE_SDECIMAL& = 14 ' Code adresse du séparateur décimal : decimal separator

' Lire le séparateur décimal actuel
rNumber = Val("1.1")
sSepDecimal = Mid(rNumber, 2, 1)

' Conserver le séparateur décimal actuel
Static sPrecedentSepDecimal$
If sPrecedentSepDecimal "" Then sPrecedentSepDecimal sSepDecimal

' Forcer le séparateur décimal (par exemple ".")
If sSepDecimal <> sSepDecimalImpose Then
lCodePage_LCID = GetSystemDefaultLCID() ' Lire le code page actuel
lRet = SetLocaleInfo(lCodePage_LCID, lLOCALE_SDECIMAL, sSepDecimalImpose)
If lRet = False Then Exit Function
End If

' Rétablir le précédent séparateur décimal avant l'appel à cette fonction
If bRetablir And sSepDecimal <> sPrecedentSepDecimal Then
lRet = SetLocaleInfo(lCodePage_LCID, lLOCALE_SDECIMAL, sPrecedentSepDecimal)
If lRet = False Then Exit Function
End If

bChangerSeparateurDecimal = True

End Function
cs_BABASSE Messages postés 41 Date d'inscription samedi 23 février 2002 Statut Membre Dernière intervention 31 juillet 2007
22 janv. 2003 à 10:17
T'as relus ??? Il me semble qu'il manque la déclaration de Getsystemdefault . De plus pour restaurer il faudrait extraire le séparateur avant , non ?
Ceci dis, je cherchais un moyen de connaître le séparateur par défault et cela me donne un indice pour le récupérer.
Rejoignez-nous