Soyez le premier à donner votre avis sur cette source.
Snippet vu 12 469 fois - Téléchargée 27 fois
'Dans un module il faut déclarer les API suivantes: Public Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long Public Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Boolean Public SepDec As String 'Stockage du symbole décimal de la machine avant le lancement du programme Public SepDecM As String 'Stockage du symbole décimal monétaire de la machine avant le lancement du programme 'Ecrivez les fonctions suivantes: 'Renvoie le séparateur décimal du système Public Function SysSepDec() As String Dim Sep As String * 2 GetLocaleInfo 0, &HE, Sep, 2 SysSepDec = Left$(Sep, 1) End Function 'Renvoie le SEParateur DECimal Monétaire du SYStème Public Function SysSepDecM() As String Dim Sep As String * 2 GetLocaleInfo 0, &H16, Sep, 2 SysSepDecM = Left$(Sep, 1) End Function 'Change le SEParateur DECimal existant par le "Nouveau" Public Sub ChangeSepDec(Nouveau As String) 'séparateur décimal SetLocaleInfo 0, &HE, Nouveau End Sub 'Change le SEParateur DECimal Monétaire par le "Nouveau" Public Sub ChangeSepDecM(Nouveau As String) 'séparateur décimal monétaire SetLocaleInfo 0, &H16, Nouveau End Sub '############## 'Dans le Form_load écrivez 'Récupération du SepDec du système pr nombre et monétaire SepDec = SysSepDec SepDecM = SysSepDecM If (SepDec = ",") Then ChangeSepDec "." 'On passe les "," en "." If (SepDecM = ",") Then ChangeSepDecM "." '############## 'Dans le Form_Unload donc à la fermeture du programme on remet le séparateur comme il était à l'origine ChangeSepDec SepDec 'Remet le séparateur décimal comme il était avant le lancement du programme ChangeSepDecM SepDecM 'Remet le séparateur décimal monétaire
17 nov. 2006 à 12:01
Sinon autres méthodes pour appliquer cela à tout le système ou juste à une application (excel par exemple)
http://www.codyx.org/snippet_modifier-separateur-decimale-options-regionales-linguistiques_264.aspx
(pas noté)
17 nov. 2006 à 13:24
En fait, tu as besoin de déclarer si tu mets
Public Const DECIMAL_MESCOUI.... = &HE
Or, je passe directement la valeur &HE, donc c moins lisible, mais c bon..!
Pour codyx, j'ai déjà vu ton poste sur l'autre source merci. J'étais au courant, mais ce que je regrette sur cet exemple de codyx, c qu'il ne parle que du symbol décimal &HE (justement) et pas du symbol décimal monétaire (&H16)...
17 nov. 2006 à 13:32
17 nov. 2006 à 13:52
Option Explicit
'Déclaration des fonctions API
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCTYPE As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCTYPE As Long, ByVal lpLCData As String) As Long
Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
'Déclaration de la constante séparateur décimal
Private Const LOCALE_SMONATARY = &H16
Public Property Get MonetarySeparator() As String
Dim nLength As Long
Dim nLocale As Long
nLocale = GetUserDefaultLCID()
nLength = GetLocaleInfo(nLocale, LOCALE_SMONATARY, vbNullString, 0) - 1
MonetarySeparator = Space$(nLength)
GetLocaleInfo nLocale, LOCALE_SMONATARY, MonetarySeparator, nLength
End Property
Public Property Let MonetarySeparator(ByRef Value As String)
Dim nLocale As Long
If Value <> MonetarySeparator Then
If Value "." Or Value "," Then
nLocale = GetUserDefaultLCID()
SetLocaleInfo nLocale, LOCALE_SMONATARY, Value
End If
End If
End Property
17 nov. 2006 à 19:08
heu c'est une source ça ?
Ou un bout de code ! Perso, je ne l'aurai pas mis là, mais bon..
D'autant plus que notre ami Drikce et moi même avons déposé un "snippet" (et pas une source) ;)
Bref, code que l'on peut trouver ici :
http://www.codyx.org/snippet_modifier-separateur-decimale-options-regionales-linguistiques_264.aspx
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.