'Ces déclarations API et la fonction suivante permettent de connaître les paramètres régionaux de windows
'dont le séparateur décimal entre autre
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 GetUserDefaultLCID Lib "kernel32" () As Long
Private Const LOCALE_IDATE = &H21 'format de date courte : 0 = M-J-A, 1 = J-M-A, 2 = A-M-J
Private Const LOCALE_ILDATE = &H22 'format de date longue
Private Const LOCALE_SCOUNTRY = &H6 'pays en toutes lettres
Private Const LOCALE_SNATIVELANGNAME = &H4 'langue, en toutes lettres
Private Const LOCALE_STHOUSAND = &HF 'séparateur des milliers
Private Const LOCALE_SDECIMAL = &HE 'séparateur décimal
Public Function ParametreRegional(parametre As Long) As String
Dim lngResultat As Long
Dim buffer As String
Dim pos As Integer
Dim locale As Long
'récupère l'identifiant de l'information locale de type utilisateur
locale = GetUserDefaultLCID()
'renvoie le nombre de caractères nécessaire pour recevoir la valeur du paramètre demandé
lngResultat = GetLocaleInfo(locale, parametre, buffer, 0)
buffer = String(lngResultat, 0)
GetLocaleInfo locale, parametre, buffer, lngResultat
pos = InStr(buffer, Chr(0))
If pos > 0 Then ParametreRegional = Left(buffer, pos - 1)
End Function
Sub WinformatDate()
'0 = M-J-A, 1 = J-M-A, 2 = A-M-J
MsgBox ParametreRegional(LOCALE_IDATE) & " (0 = M-J-A, 1 = J-M-A, 2 = A-M-J)"
End Sub