IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

formater les nombres en anglais [AC-2003]


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut formater les nombres en anglais
    Bonjour à tous!

    j'ai un problème sur lequel je bute depuis quelques jours.
    Je travaille sur un outil qui doit sortir des rapports en français et en anglais. Je n'ai pas de problème pour la traduction. En fait ce que je n'arrive pas c'est de formater les nombres en anglais

    J'ai essayé avec l'api setlocaleinfo en modifiant les séparateurs des décimaux et des milliers mais je n'obtiens pas du tout le bon résultat dans mes états. j'ai repris le code de argyronet sur le topic http://www.developpez.net/forums/d71...res-regionaux/
    et dans mon état à la place d'avoir un nombre comme 25 899 j'ai 2 589 9.5 (zone de texte en format standard et 0 décimale)

    Le seul moyen qui ait fait ses preuves pour le moment c'est de modifier les paramètres régionaux. mais je n'y arrive pas en automatique. je sais qu'il est préférable de ne pas utiliser cette technique à l'insu de l'utilisateur mais je ne vois vraiment pas d'autres solutions.

    Donc j'appelle à vos connaissances et à vos expériences!

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 332
    Points : 23 787
    Points
    23 787
    Par défaut
    Je te suggère de faire ta propre fonction de formatage. Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public function FormaterNombreLangue(prmCodeLangue as string, prmMasque as string, prmValeur as variant) as string
       dim result as string
     
       result=cstr(format(prmValeur, prmFormat))
     
       select case prmLangue
          case "GB"
            result=replace(result, ".", " ") 'Remplace le séparateur de milier par un espace
            result=replace(result, ",", ".") 'Remplace la virgule par un point
          case "F"
            'Ne rien faire si on est par défaut en français
          case else
            result="Erreur!"
       end select
     
       FormaterLangue=result
    end function
    après au lien d'imprimer ton nombre avec un formatage sur le champ tu mets par exemple comme source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormaterNombreLangue("GB", "0.00", [NomTonChamp])
    .

    Comme cela tu garde un contrôle complet sur la façon dont se fait le formatage.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci de ton aide. Mais ce n'est pas vraiment la solution que je recherchais. J'ai aussi dans mon état des graphiques avec des étiquettes.

    Mais j'ai réussi à résoudre le problème! J'étais en fait sur la bonne voie mais je n'ai pas dû voir qu'il fallait relancer access pour ques les paramètres soient pris en compte.

    Je vous poste mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    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
     
    Declare Function SetLocaleInfo Lib "kernel32" Alias _
    "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, _
    ByVal lpLCData As String) As Boolean
     
    Declare Function GetUserDefaultLCID% Lib "kernel32" ()
     
    Public Const LOCALE_USER_DEFAULT = &H400
    Public Const LOCALE_SDECIMAL = &HE
    Public Const LOCALE_STHOUSAND = &HF
    Public Const LOCALE_STIME = &H1E
     
    Public Sub set_nb(stDec As String, stMillier As String)
         Dim setDec As Boolean, setMillier As Boolean
         Dim Locale As Long
     
         Locale = GetUserDefaultLCID() 'Get user Locale ID
         setDec = SetLocaleInfo(Locale, LOCALE_SDECIMAL, stDec)
         setMillier = SetLocaleInfo(Locale, LOCALE_STHOUSAND, stMillier)
     
    End Sub
    Pour l'appeler :
    Et pour que ca prenne effet, ne pas oublier de relancer access

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/09/2012, 11h38
  2. Réponses: 0
    Dernier message: 01/10/2010, 11h14
  3. [Dojo] Formater les nombres avec NumberTextBox
    Par Daniel_Gibot dans le forum Bibliothèques & Frameworks
    Réponses: 10
    Dernier message: 02/02/2010, 23h05
  4. Imposer un format pour les nombres
    Par al85 dans le forum Struts 1
    Réponses: 0
    Dernier message: 02/02/2009, 16h34
  5. formater les nombres dans une session
    Par esthr dans le forum SQL
    Réponses: 10
    Dernier message: 04/06/2007, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo