CALMELSCHRISTOPHE
Messages postés1Date d'inscriptionsamedi 16 février 2008StatutMembreDernière intervention20 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és37Date d'inscriptionjeudi 28 septembre 2006StatutMembreDernière intervention18 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és40Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention19 janvier 2009 3 nov. 2006 à 13:23
Excellent Mutos ^^, c'est la meilleure solution que j'ai pu lire jusqu'à maintenant ...
Mutos
Messages postés103Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention14 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 !
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDerniè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és103Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention14 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...
' 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és41Date d'inscriptionsamedi 23 février 2002StatutMembreDernière intervention31 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.
20 sept. 2009 à 17:53
Merci encore pour ces quelques lignes claires.
15 nov. 2006 à 15:05
3 nov. 2006 à 13:23
27 déc. 2005 à 10:58
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
27 déc. 2005 à 10:14
27 déc. 2005 à 05:38
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
3 nov. 2003 à 09:37
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
22 janv. 2003 à 10:17
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.