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 36 37 38 39 40 41 42 43 44 45 46
| 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_STHOUSAND = &HF 'séparateur des milliers
Private Const LOCALE_SDECIMAL = &HE 'séparateur décimal
Private Function CVal(nbretxt As String) As Double
'-- Convertie une chaine en Double, indépendament des paramètres régionaux
Dim lngResultat As Long
Dim buffer As String
Dim SepDec As String, SepMil As String
Dim loc As Long
'récupère l'identifiant de l'information locale de type utilisateur
On Error GoTo CVal_Error
loc = GetUserDefaultLCID()
'Récupère le séparateur décimal
lngResultat = GetLocaleInfo(loc, LOCALE_SDECIMAL, buffer, 0)
buffer = String(lngResultat, 0)
GetLocaleInfo loc, LOCALE_SDECIMAL, buffer, lngResultat
SepDec = Left(buffer, 1)
'Récupère le séparateur des Milliers
lngResultat = GetLocaleInfo(loc, LOCALE_STHOUSAND, buffer, 0)
buffer = String(lngResultat, 0)
GetLocaleInfo loc, LOCALE_STHOUSAND, buffer, lngResultat
SepMil = Left(buffer, 1)
'Effectue le remplacement
nbretxt = Replace(nbretxt, SepMil, "")
nbretxt = Replace(nbretxt, SepDec, ".")
CVal = Val(nbretxt)
On Error GoTo 0
Exit Function
CVal_Error:
Err.Clear
CVal = 0
End Function |
Partager