Connaître le séparateur décimal de votre ordinateur

0/5 (8 avis)

Snippet vu 10 794 fois - Téléchargée 60 fois

Contenu du snippet

Quelqu'un a posé cette question dans le forum de VBFRANCE... En effet, pour certaines applications, il est parfois bon de connaître le format de ce séparateur - le point (.) ou la virgule (,). (A coller dans un module)

Source / Exemple :


'DECLARATION API
Public Declare Function GetThreadLocale Lib "kernel32" () As Long
Public Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
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

'DECLARATION CONSTANTES
Public Const LOCALE_SCURRENCY             As Long = &H14    'symbole monétaire local
Public Const LOCALE_SINTLSYMBOL           As Long = &H15    'symbole monétaire international
Public Const LOCALE_SMONDECIMALSEP        As Long = &H16    'séparateur monétaire décimal
Public Const LOCALE_SMONTHOUSANDSEP       As Long = &H17    'séparateur monétaire des milliers
Public Const LOCALE_SMONGROUPING          As Long = &H18    'groupement monétaire
Public Const LOCALE_ICURRDIGITS           As Long = &H19    '# local monetary digits
Public Const LOCALE_IINTLCURRDIGITS       As Long = &H1A    '# intl monetary digits
Public Const LOCALE_ICURRENCY             As Long = &H1B    'mode positif de la devise
Public Const LOCALE_INEGCURR              As Long = &H1C    'mode négatif de la devise
Public Const LOCALE_IPOSSIGNPOSN          As Long = &H52    'position du signe positif
Public Const LOCALE_INEGSIGNPOSN          As Long = &H53    'position du signe négatif
Public Const LOCALE_IPOSSYMPRECEDES       As Long = &H54    'mon sym precedes pos amt
Public Const LOCALE_IPOSSEPBYSPACE        As Long = &H55    'mon sym sep by space from pos amt
Public Const LOCALE_INEGSYMPRECEDES       As Long = &H56    'mon sym precedes neg amt
Public Const LOCALE_INEGSEPBYSPACE        As Long = &H57    'mon sym sep by space from neg amt
Public Const LOCALE_SENGCURRNAME          As Long = &H1007  'nom anglais de la devise
Public Const LOCALE_SNATIVECURRNAME       As Long = &H1008  'nom natif de la devise

Public Function GetUserLocaleInfo(ByVal dwLocaleID As Long, ByVal dwLCType As Long) As String

   Dim sReturn As String
   Dim r As Long

  'Appel de la fonction en passant la variable locale
  'pour récupérer la taille du buffer du string dont nous avons besoin
   r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
    
  'Si c'est OK..
   If r Then
    
     'On compléte le buffer avec des espaces
      sReturn = Space$(r)
       
     'et nouvel appel en passant la mémoire tampon
      r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
     
     'Si Ok (r > 0)
      If r Then
      
        'r contient la taille de la chaîne de caractères
        'comprenant la terminaison nulle
         GetUserLocaleInfo = Left$(sReturn, r - 1)
      
      End If
   
   End If
    
End Function

Conclusion :


Utilisation:
Dim LCID As Long
LCID = GetSystemDefaultLCID()
Msgbox "Le séparateur décimal est: " & GetUserLocaleInfo(LCID, LOCALE_SMONDECIMALSEP)

--> Voyez les autres constantes pour d'autres informations sur la configuration locale de votre machine

A voir également

Ajouter un commentaire Commentaires
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
9 juil. 2008 à 17:08
le plus court pour obtenir l'info:
Format$(0, ".")
Drikce06 Messages postés 2237 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 11
15 nov. 2006 à 11:15
Bonjour,
ça n'existait pas l'époque! pour vb.Net le snippet est eb cours de validation

http://www.codyx.org/snippet_modifier-separateur-decimale-options-regionales-linguistiques_264.aspx
Mutos Messages postés 103 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 14 mai 2010
27 déc. 2005 à 05:42
Bonjour,


En .Net, savez-vous si on peut le changer dans l'application et pas dans la machine ? J'ai lu des choses sur les variables CultureInfo et autres, mais jusqu'à présent rien de concret...


@+

Benoît 'Mutos' ROBIN
http://hoshikaze.net
SgtKabukinan Messages postés 106 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 23 janvier 2010
16 nov. 2005 à 11:08
après test de vos deux codes : la preuve par 9
voila en considérant qu'avant le test mon séparateur par défaut est ","

TEST 1ere manche :
--------------------
MsgBox (GetUserLocaleInfo(GetSystemDefaultLCID, LOCALE_SMONDECIMALSEP))
> affiche ","
MsgBox (Check_Decimal_Separator)
> trouve le "," demande de changer en "." est renvoie True
MsgBox (GetUserLocaleInfo(GetSystemDefaultLCID, LOCALE_SMONDECIMALSEP))
> affiche ","

A bon mais pourquoi ???

TEST 2e manche :
--------------------
MsgBox (GetUserLocaleInfo(GetSystemDefaultLCID, LOCALE_SMONDECIMALSEP))
> affiche ","
MsgBox (Check_Decimal_Separator)
> affiche True

Donc le changement a bien été prix en compte mais ta fonction Néo ne prend pas le changement en compte ? une raison a cela ?? ou je ne suis pas bien réveillé ?
SgtKabukinan Messages postés 106 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 23 janvier 2010
16 nov. 2005 à 11:00
tout ca est assez interessant et je crois que cela va changer ma vie !

par contre @wayne :
si le séparateur décimal n'est pas un ".", tu dis le séparateur est un "." voulez vous le changer en "." ??!
Afficher les 8 commentaires

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.