GESTION DES PARAMÈTRES RÉGIONNAUX

cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 - 6 avril 2006 à 12:25
cs_Radwane37 Messages postés 10 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 20 avril 2009 - 18 sept. 2007 à 09:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36929-gestion-des-parametres-regionnaux

cs_Radwane37 Messages postés 10 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 20 avril 2009
18 sept. 2007 à 09:52
Salut,

Je n'arrive pas à changer la langue du système. Je voudrais la mettre en anglais us.

J'arrive à changer la "," par un ".", mais pas la langue.

Voila ce que je mets :


'-------------DEBUT---------
Dim str As String
Dim a As Boolean

'enu --> us
'fra --> fr

'pour voir quelle est la langue
str = Module2.GetUserLocaleInfo(LOCALE_SABBREVLANGNAME)
MsgBox (str)

'pour la changer en anglais us
a = Module2.SetUserLocaleInfo(LOCALE_SABBREVLANGNAME, "ENU")

'pour voir quelle est la langue
str = Module2.GetUserLocaleInfo(LOCALE_SABBREVLANGNAME)
MsgBox (str)
'-----------FIN----------------

Quelqu'un peut m'aider svp?
Merci
cs_Radwane37 Messages postés 10 Date d'inscription lundi 6 novembre 2006 Statut Membre Dernière intervention 20 avril 2009
18 sept. 2007 à 09:46
Super ton code. Il m'a bien aidé car j'ai des problèmes entre les version d'excel en fr et en us.
Merci
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 août 2007 à 15:30
et quand je dis TOUS les éléments ....


Private Sub Timer1_Timer()
'# On place le nom du pays dans le label
Label1.Caption = GetUserLocaleInfo(LOCALE_SCOUNTRY)
End Sub
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 août 2007 à 06:21
pourquoi vouloir les modifier, c0pyright ?

Sinistrus, tu as, me semble, tous les elements necessaires dans cette source pour réaliser ce que tu souhaite.
néanmoins, utiliser un Timer serait contre-performant.

la doc nous dit :
http://msdn2.microsoft.com/en-us/library/ms776312.aspx

Note: When an application calls this function for an international change to system parameters, it should broadcast the WM_SETTINGCHANGE message to inform other applications. If this is not done, SetLocaleInfo can make unexpected changes to system settings.

en clair, suffit d'attendre WM_SETTINGCHANGE pour être avertit d'un changement de parametres (langue, dans ton cas)
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
8 août 2007 à 01:54
J'aurai souhaiter un label qui affiche la langue en cours depuis un timer :s j'y arrive :'(
c0pyright Messages postés 14 Date d'inscription jeudi 10 août 2006 Statut Membre Dernière intervention 5 mai 2008
2 oct. 2006 à 14:13
moi je n'ai pas noté, mais j'ai une remarque a faire au sujet de la source :
Le code est propre et bien commenté mais un probleme se pose lorsque tu vx modifier certains parametres comme le code pays , le pays, la langue, son code..... ezt plein de chose

Ca marche pour les lire mais pas en "ecriture".
Utilisateur anonyme
14 sept. 2006 à 09:08
Salut! Source très pratique pour gérer le séparateur de décimal. Et ta source est très bien commentée. Ca m'a bien servi.
10/10
ellieopossum Messages postés 1 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 22 juin 2006
22 juin 2006 à 14:47
Merci ! Ca me dépanne bien. Cela faisait un moment que je cherchais qqch pour gérer facilement le format de date.
Simple et efficace.
Idem que le commentaire précédent : 10/10 !
yan35 Messages postés 185 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 20 juin 2013
21 juin 2006 à 10:45
Merci, C'est bien pratique !
Jusqu'ici je montais 1 usine à gaz pour lire la BdR quand j'avais besoin de ces infos.
Avec ton info de ces API, je vais économiser bien des lignes de code ....je mets 10/10.
Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017
7 avril 2006 à 14:15
Finalement j'ai fait:
Private Sub Form_Load()

Combo1.AddItem "Symbole Monétaire Régional"
Combo1.AddItem "Symbole Monétaire International"
Combo1.AddItem "Nom Anglais de la Devise"
Combo1.AddItem "Nom natif de la Devise"
Combo1.AddItem "Identifiant de la langue"
Combo1.AddItem "Nom complet de la langue en cours"
Combo1.AddItem "Nom de la Langue native"
Combo1.AddItem "Code du Pays"
Combo1.AddItem "Nom du Pays"
Combo1.AddItem "Nom du Pays en Anglais"
Combo1.AddItem "Nom du Pays abbrégé"
Combo1.AddItem "Nom du Pays d'origine"
Combo1.AddItem "Code Langue par défaut"
Combo1.AddItem "Code du Pays par défaut"
Combo1.AddItem "Code Page"
Combo1.AddItem "Séparateur décimal monétaire"
Combo1.AddItem "Séparateur de millier monétaire"
Combo1.AddItem "Groupement monétaire"
Combo1.AddItem "local monetary digits"
Combo1.AddItem "intl monetary digits"
Combo1.AddItem "positive currency mode"
Combo1.AddItem "negative currency mode"
Combo1.AddItem "Séparateur décimal numérique"
Combo1.AddItem "Séparateur de millier numérique"
Combo1.AddItem "Séparateur de date"
Combo1.AddItem "Séparateur de l'heure"
Combo1.AddItem "Format Date Court (ex: dd/MM/yy)"
Combo1.AddItem "Format Date Long (ex: dd/MM/yyyy)"
Combo1.AddItem "Format de l'heure"
Combo1.AddItem "Affichage Date Courte => 0: M-D-Y; 1: D-M-Y; 2: Y-M-D"
Combo1.AddItem "Affichage Date Longue => 0: M-D-Y; 1: D-M-Y; 2: Y-M-D"
Combo1.AddItem "Format de l'heure spécifique => 0: AM/PM; 1: 24H"
Combo1.AddItem "Format du siècle spécifique => 0: 2 digits; 1: 4 digits"
Combo1.AddItem "Zéro spécifique pour l'heure => 0: Non; 1: Oui"
Combo1.AddItem "Zéro spécifique pour le jour => 0: Non; 1: Oui"
Combo1.AddItem "Zéro spécifique pour le mois => 0: non; 1: Oui"
Combo1.AddItem "Chaîne remplaçant la chaîne AM"
Combo1.AddItem "Chaîne remplaçant la c"
Combo1.ListIndex = "0"

End Sub


Private Sub Command1_Click() 'Lire un paramètre

Dim P As Long
If Combo1.Text "Symbole Monétaire Régional" Then P &H14
If Combo1.Text "Symbole Monétaire International" Then P &H15
If Combo1.Text "Nom Anglais de la Devise" Then P &H1007
If Combo1.Text "Nom natif de la Devise" Then P &H1008
If Combo1.Text "Identifiant de la langue" Then P &H1
If Combo1.Text "Nom complet de la langue en cours" Then P &H2
If Combo1.Text "Nom de la Langue native" Then P &H1001
If Combo1.Text "Code du Pays" Then P &H5
If Combo1.Text "Nom du Pays" Then P &H6
If Combo1.Text "Nom du Pays en Anglais" Then P &H1002
If Combo1.Text "Nom du Pays abbrégé" Then P &H7
If Combo1.Text "Nom du Pays d'origine" Then P &H8
If Combo1.Text "Code Langue par défaut" Then P &H9
If Combo1.Text "Code du Pays par défaut" Then P &HA
If Combo1.Text "Code Page" Then P &HB
If Combo1.Text "Séparateur décimal monétaire" Then P &H16
If Combo1.Text "Séparateur de millier monétaire" Then P &H17
If Combo1.Text "Groupement monétaire" Then P &H18
If Combo1.Text "local monetary digits" Then P &H19
If Combo1.Text "intl monetary digits" Then P &H1A
If Combo1.Text "positive currency mode" Then P &H1B
If Combo1.Text "negative currency mode" Then P &H1C
If Combo1.Text "Séparateur décimal numérique" Then P &HE
If Combo1.Text "Séparateur de millier numérique" Then P &HF
If Combo1.Text "Séparateur de date" Then P &H1D
If Combo1.Text "Séparateur de l'heure" Then P &H1E
If Combo1.Text "Format Date Court (ex: dd/MM/yy)" Then P &H1F
If Combo1.Text "Format Date Long (ex: dd/MM/yyyy)" Then P &H20
If Combo1.Text "Format de l'heure" Then P &H1003
If Combo1.Text "Affichage Date Courte> 0: M-D-Y; 1: D-M-Y; 2: Y-M-D" Then P = &H21
If Combo1.Text "Affichage Date Longue> 0: M-D-Y; 1: D-M-Y; 2: Y-M-D" Then P = &H22
If Combo1.Text "Format de l'heure spécifique> 0: AM/PM; 1: 24H" Then P = &H23
If Combo1.Text "Format du siècle spécifique> 0: 2 digits; 1: 4 digits" Then P = &H24
If Combo1.Text "Zéro spécifique pour l'heure> 0: Non; 1: Oui" Then P = &H25
If Combo1.Text "Zéro spécifique pour le jour> 0: Non; 1: Oui" Then P = &H26
If Combo1.Text "Zéro spécifique pour le mois> 0: non; 1: Oui" Then P = &H27
If Combo1.Text "Chaîne remplaçant la chaîne AM" Then P &H28
If Combo1.Text "Chaîne remplaçant la chaîne PM" Then P &H29

Text1.Text = GetUserLocaleInfo(P)

End Sub

Tout marche bien et en plus, on lit en clair dans la Combo, le paramètre examiné.
Merci pour l'aide.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 avril 2006 à 14:09
ce que je veux dire c'est que tu pourrais faire directement GetUserDefaultLCID

sans mettre en place ta fonction, IniLocaleID...
gigiou Messages postés 9 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 7 avril 2006
7 avril 2006 à 13:47
Dans mon programme je n'ai besoin de modifier que les paramètres régionnaux de l'utilisateur et non pas ceux du système.

Pour modifier ceux du système il suffit de mettre :
lLocaleID = IniLocaleID("SYSTEM")

Bonne prog et heureux de vous rendre service ...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 avril 2006 à 13:35
par contre, gigiou, je n'ai pas saisi l'utilité de IniLocaleID...

tu n'utilises en effet que les données 'USER'...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 avril 2006 à 13:34
il est aussi possible d'utiliser :

Public Function GetLocalCodeFromName(ByRef vsCodeName As String) As LOCALEConstants
Select Case vsCodeName
Case "LOCALE_ICENTURY": GetLocalCodeFromName = LOCALE_ICENTURY
Case "LOCALE_ICOUNTRY": GetLocalCodeFromName = LOCALE_ICOUNTRY
Case "LOCALE_ICURRDIGITS": GetLocalCodeFromName = LOCALE_ICURRDIGITS
Case "LOCALE_ICURRENCY": GetLocalCodeFromName = LOCALE_ICURRENCY
Case "LOCALE_IDATE": GetLocalCodeFromName = LOCALE_IDATE
Case "LOCALE_IDAYLZERO": GetLocalCodeFromName = LOCALE_IDAYLZERO
Case "LOCALE_IDEFAULTCODEPAGE": GetLocalCodeFromName = LOCALE_IDEFAULTCODEPAGE
Case "LOCALE_IDEFAULTCOUNTRY": GetLocalCodeFromName = LOCALE_IDEFAULTCOUNTRY
Case "LOCALE_IDEFAULTLANGUAGE": GetLocalCodeFromName = LOCALE_IDEFAULTLANGUAGE
Case "LOCALE_IINTLCURRDIGITS": GetLocalCodeFromName = LOCALE_IINTLCURRDIGITS
Case "LOCALE_ILANGUAGE": GetLocalCodeFromName = LOCALE_ILANGUAGE
Case "LOCALE_ILDATE": GetLocalCodeFromName = LOCALE_ILDATE
Case "LOCALE_IMONLZERO": GetLocalCodeFromName = LOCALE_IMONLZERO
Case "LOCALE_INEGCURR": GetLocalCodeFromName = LOCALE_INEGCURR
Case "LOCALE_ITIME": GetLocalCodeFromName = LOCALE_ITIME
Case "LOCALE_ITLZERO": GetLocalCodeFromName = LOCALE_ITLZERO
Case "LOCALE_S1159": GetLocalCodeFromName = LOCALE_S1159
Case "LOCALE_S2359": GetLocalCodeFromName = LOCALE_S2359
Case "LOCALE_SABBREVCTRYNAME": GetLocalCodeFromName = LOCALE_SABBREVCTRYNAME
Case "LOCALE_SABBREVLANGNAME": GetLocalCodeFromName = LOCALE_SABBREVLANGNAME
Case "LOCALE_SCOUNTRY": GetLocalCodeFromName = LOCALE_SCOUNTRY
Case "LOCALE_SCURRENCY": GetLocalCodeFromName = LOCALE_SCURRENCY
Case "LOCALE_SDATE": GetLocalCodeFromName = LOCALE_SDATE
Case "LOCALE_SDECIMAL": GetLocalCodeFromName = LOCALE_SDECIMAL
Case "LOCALE_SENGCOUNTRY": GetLocalCodeFromName = LOCALE_SENGCOUNTRY
Case "LOCALE_SENGCURRNAME": GetLocalCodeFromName = LOCALE_SENGCURRNAME
Case "LOCALE_SENGLANGUAGE": GetLocalCodeFromName = LOCALE_SENGLANGUAGE
Case "LOCALE_SINTLSYMBOL": GetLocalCodeFromName = LOCALE_SINTLSYMBOL
Case "LOCALE_SLANGUAGE": GetLocalCodeFromName = LOCALE_SLANGUAGE
Case "LOCALE_SLONGDATE": GetLocalCodeFromName = LOCALE_SLONGDATE
Case "LOCALE_SMONDECIMALSEP": GetLocalCodeFromName = LOCALE_SMONDECIMALSEP
Case "LOCALE_SMONGROUPING": GetLocalCodeFromName = LOCALE_SMONGROUPING
Case "LOCALE_SMONTHOUSANDSEP": GetLocalCodeFromName = LOCALE_SMONTHOUSANDSEP
Case "LOCALE_SNATIVECTRYNAME": GetLocalCodeFromName = LOCALE_SNATIVECTRYNAME
Case "LOCALE_SNATIVECURRNAME": GetLocalCodeFromName = LOCALE_SNATIVECURRNAME
Case "LOCALE_SNATIVELANGNAME": GetLocalCodeFromName = LOCALE_SNATIVELANGNAME
Case "LOCALE_SSHORTDATE": GetLocalCodeFromName = LOCALE_SSHORTDATE
Case "LOCALE_STHOUSAND": GetLocalCodeFromName = LOCALE_STHOUSAND
Case "LOCALE_STIME": GetLocalCodeFromName = LOCALE_STIME
Case "LOCALE_STIMEFORMAT": GetLocalCodeFromName = LOCALE_STIMEFORMAT
End Select
End Function
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 avril 2006 à 13:18
c'est pas ma solution, ça ^^
Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017
7 avril 2006 à 12:53
Merci Renfield, effectivement ta solution fonctionne.
j'ai essayé:
Private Sub Command1_Click() 'Lire un paramètre
Dim P As Long
If Combo1.Text "LOCALE_SCURRENCY" Then P &H14
If Combo1.Text "LOCALE_SINTLSYMBOL" Then P &H15
Text1.Text = GetUserLocaleInfo(P)
End Sub
c'est bon.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 avril 2006 à 11:59
tu ne peux utiliser ici un String...

une solution pas trop mauvaise peut simplement etre de renseigner la propriété ItemDate de tes lignes de combo, avec la valeur de tes constantes
Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017
7 avril 2006 à 11:25
Ce code me plaît bien
J'ai voulu faire un mini programme de test:(1 TextBox,1 ComboBox et un Bouton)
Private Sub Form_Load()
Combo1.AddItem "LOCALE_SINTLSYMBOL"
Combo1.AddItem "LOCALE_SENGCURRNAME"
Combo1.AddItem "LOCALE_SNATIVECURRNAME"
Combo1.AddItem "LOCALE_ILANGUAGE"
Combo1.AddItem "LOCALE_SLANGUAGE"
Combo1.ListIndex = "0"

End Sub
Private Sub Command1_Click() 'Lire un paramètre
Dim P As Long
P = LOCALE_SINTLSYMBOL
Text1.Text = GetUserLocaleInfo(P)

End Sub

Ainsi c'est bon

Mais si on fait
P = Combo1.Text ça ne marche plus.
P = CLng(Combo1.Text) ne marche pas mieux.

Comment faire reconnaître le contenu de Combo1?
Merci à celui qui aura une solution.
metalcoder Messages postés 193 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 25 mars 2011 1
6 avril 2006 à 22:18
desolé j'ai mis 4 par erreur, je voulais mettre 8...

Ta source va m'etre tres pratique, j'etais effecttivement embeté avec certains de mes programmmes comme celui-ci [url]http://www.vbfrance.com/codes/LOGICIEL-FACTURATION-BOULANGERIE_36839.aspx/url

@+
FMatrix07 Messages postés 233 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 21 février 2009 2
6 avril 2006 à 13:20
Salut
Super je vais essayer je suis tres preneur
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 avril 2006 à 13:04
ce serait pas mal de placer les constantes LOCALE_
dans un enum, ca permettrais d'avoir la liste en intellisense
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
6 avril 2006 à 12:25
pas encore testé mais bien commenté , Bravo
Rejoignez-nous