REMPLACER LE SYMBOLE DÉCIMAL

Utilisateur anonyme - 17 nov. 2006 à 12:01
 Utilisateur anonyme - 2 nov. 2012 à 21:32
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/40355-remplacer-le-symbole-decimal

Utilisateur anonyme
2 nov. 2012 à 21:32
Superrrrrrrrrrrr
J'ai cherché depuis longtemps comment changer automatiquement le symbole de décimal ........
Bravooooooooooo et Merciiiiiiiii
cs_santiago69 Messages postés 91 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 17 décembre 2008
20 déc. 2006 à 09:37
C'est vrai, l'exercice est interessant a presenter, mais il ne faut pas proposer de faire setsymbol en debut d'appli puis resetsymbol a la fin.
De plus, moi qui suis pourtant souvent confronte a des probleme de compatibilite de notation numerique, je n'ai jamais compris pourquoi windows separe le separateur decimal numerique et monetaire (moi perso si j'ecrit 1 234,56 kilos, j'ecris aussi 1 234,56 $). Je rassemblerais donc la modification des symboles dans la meme fonction. Non ?
Il est par ailleurs indispensable de modifier en meme temps le parametre separateur de milliers (&HF et &H17). Generalement dans les systemes internationaux, on ecrit 1,234.56. Si on passe en separateur decimal francais (,) on a l'air con d'afficher 1,234,56.
Donc pourquoi pas ne pas proposer :

Sub SetSymbol(DecSep as String, Optional ThousandSep as String)
SetLocaleInfo 0, &HE, DecSep
SetLocaleInfo 0, &H16, DecSep
SetLocaleInfo 0, &HF, ThousandSep
SetLocaleInfo 0, &H17, ThousandSep
End Sub

Voila c'est tout.
Santiago
Utilisateur anonyme
20 déc. 2006 à 08:14
santiago69, effectivement bonne remarque! Mais je dirais également que beaucoup d'utilisateur ne savent même pas qu'on peut changer ce paramètre!
cs_santiago69 Messages postés 91 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 17 décembre 2008
20 déc. 2006 à 00:17
C'est enervant de voir que beaucoup d'entre vous essayent de changer le symbole decimal qu'a choisi l'utilisateur plutot que d'adapter leur application a ce symbole.
Il ne faut pas modifier les choix de l'utilisateur !
Pourquoi ne pas tout simplement recuperer le symbole au debut du programme et s'en servir dans les fonctions de calcul et d'affichage ?
Santiago
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
17 nov. 2006 à 20:20
Ok c cool
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
17 nov. 2006 à 20:16
Ici : http://www.codyx.org
Ce sont les mêmes logs que Codes-Sources.

Tu peux aussi placer des commentaires, comme ici.
Disons qu'une source est censée être indépendante (et donc pas un bout de code)
A la limite (si t'as le temps), tu pourrais faire une petite interface, avec un bouton, une listbox pour proposer différents séparateurs afin d'accompagner ton code (et choix, soit de la modif du séparateur décimal, soit du séparateur monétaire) ;)

Ca pourrait être sympa et les membres qui en ont le besoin auront la possibilité de tester ça, avant d'intégrer le code dans leur dev)

@++
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
17 nov. 2006 à 20:03
C'est un bout de code utile, avec commentaire et moins complexe (à mon avis) pour les débutants que sur codyx.
Je n'ai déposé que des sources jusqu'à maintenant et je ne sais pas où on dépose les fameux "snippet" désolé.
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
17 nov. 2006 à 19:08
Salut,

heu c'est une source ça ?
Ou un bout de code ! Perso, je ne l'aurai pas mis là, mais bon..
D'autant plus que notre ami Drikce et moi même avons déposé un "snippet" (et pas une source) ;)

Bref, code que l'on peut trouver ici :
http://www.codyx.org/snippet_modifier-separateur-decimale-options-regionales-linguistiques_264.aspx
Utilisateur anonyme
17 nov. 2006 à 13:52
ça fonctionne :

Option Explicit

'Déclaration des fonctions API
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
Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long

'Déclaration de la constante séparateur décimal
Private Const LOCALE_SMONATARY = &H16

Public Property Get MonetarySeparator() As String
Dim nLength As Long
Dim nLocale As Long
nLocale = GetUserDefaultLCID()
nLength = GetLocaleInfo(nLocale, LOCALE_SMONATARY, vbNullString, 0) - 1
MonetarySeparator = Space$(nLength)
GetLocaleInfo nLocale, LOCALE_SMONATARY, MonetarySeparator, nLength
End Property

Public Property Let MonetarySeparator(ByRef Value As String)
Dim nLocale As Long
If Value <> MonetarySeparator Then
If Value "." Or Value "," Then
nLocale = GetUserDefaultLCID()
SetLocaleInfo nLocale, LOCALE_SMONATARY, Value
End If
End If
End Property
Utilisateur anonyme
17 nov. 2006 à 13:32
Oui effectivement, c'était juste pour montrer une façon de faire! Sinon c'est facilement adaptable au signe monétaire suffit de remplacer la constante &HE par &H16 et le tour est joué! Enfin je pense! Je vais tester.
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
17 nov. 2006 à 13:24
Tu n'as pas besoin de déclarer &HE, puisque c'est un long...
En fait, tu as besoin de déclarer si tu mets
Public Const DECIMAL_MESCOUI.... = &HE
Or, je passe directement la valeur &HE, donc c moins lisible, mais c bon..!

Pour codyx, j'ai déjà vu ton poste sur l'autre source merci. J'étais au courant, mais ce que je regrette sur cet exemple de codyx, c qu'il ne parle que du symbol décimal &HE (justement) et pas du symbol décimal monétaire (&H16)...
Utilisateur anonyme
17 nov. 2006 à 12:01
Salut, j'ai pas testé ton code, mais tu déclare pas &HE comme constante! Bon, c'est pas un drame non plus!

Sinon autres méthodes pour appliquer cela à tout le système ou juste à une application (excel par exemple)

http://www.codyx.org/snippet_modifier-separateur-decimale-options-regionales-linguistiques_264.aspx

(pas noté)
Rejoignez-nous