1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
Option Explicit
Private Const LOCALE_SDECIMAL As Long = &HE 'décimal
Private Const LOCALE_SCURRENCY As Long = &H14 'monétaire
Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
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
Public Function GetDecimalSeparator(ByVal LocalTypeValue As Long, Optional ByRef SeparatorString As String) As String
Dim lngBufferSize As Long
Dim lngLanguageID As Long
Dim strSeparator As String
lngLanguageID = GetUserDefaultLCID()
lngBufferSize = GetLocaleInfo(lngLanguageID, LocalTypeValue, vbNullString, 0) - 1
GetDecimalSeparator = Space$(lngBufferSize)
GetLocaleInfo lngLanguageID, LocalTypeValue, strSeparator, lngBufferSize
If Len(SeparatorString) = 1 Then
SeparatorString = IIf(strSeparator = Chr(44), "Virgule", "Point")
GetDecimalSeparator = strSeparator
End If
End Function
Public Function SetDecimalSeparator(ByRef Separator As String, ByVal LocalTypeValue As Long)
Dim lngLanguageID As Long
If Separator <> GetDecimalSeparator() Then
If Separator = Chr(46) Or Separator = Chr(44) Then
lngLanguageID = GetUserDefaultLCID()
SetLocaleInfo lngLanguageID, LocalTypeValue, Separator
End If
End If
End Function |
Partager