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 :

Changement des Param. régionaux non effectif dans Access quand celui-ci est ouvert


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 77
    Points : 70
    Points
    70
    Par défaut Changement des Param. régionaux non effectif dans Access quand celui-ci est ouvert
    Allo,

    À l'ouverture de mon application, j'ai un bout de code qui s'exécute afin de vérifier quel est le symbole décimal sélectionné dans les options régionales. Si c'est la virgule, je dois la changer pour le point.

    Par contre, vu que mon Access est déjà ouvert, il ne prend pas en contre ce changement. Si je vais voir physiquement dans les options régionales, la virgule a bien été changée par le point.

    Existe-t-il un code vba ou une façon de faire afin qu'Access prend en compte les changements de paramètres régionaux sans fermer et réouvrir Access afin que le tout soit effectif.

    merci

    JM

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Considérant que ce séparateur est lié au système, vous ne pouvez pas procéder autrement que de le changer dans le système en intervenant par code dans le Registre de Windows.
    Si vous voulez voir un point, il fauy que vos champs numériques soit définis en Texte et avec une procédure comme celle-ci, ça fonctionne mais c'est pas très propre...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub TestDecimalSep_Click()
      If GetSystemDecimalSeparator() = "," Then
        MonChampTexte = Format(Str(MonChampAVirgule), "# ##0.00")
        MonChampTexte = Replace(MonChampTexte, ",", ".")
      Else
        MonChampTexte = MonChampAVirgule
      End If
    End Sub
    Par ailleurs, l'usage de la propriété Value d'un objet Field via DAO peut provoquer une erreur en cas ds substitution d'un séparateur différent de celui du système.
    Enfin, en théorie, le changement dynamique du séparateur doit agir immédiatement :Faites l'essai sois Excel...

    Quel code emloyez-vous pour forcer ?

    Argy

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 77
    Points : 70
    Points
    70
    Par défaut
    Allo,

    désolé du temps de réponses mais la fin de semaine = vacance :-)

    À l'ouverture de l'application j'ai la fonction suivante qui est appelée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    writeRegistre "HKEY_CURRENT_USER\CONTROL PANEL\INTERNATIONAL\", "sDecimal", ","
    voici la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Function writeRegistre(sRep As String, sCle As String, sValue As String)
        Dim Ma_Clef As String 'Chemin de ma clef dans le registre
        Dim WshShell As Object
     
        Set WshShell = CreateObject("WScript.Shell")
        WshShell.RegWrite sRep & sCle, sValue, "REG_SZ"
        Set WshShell = Nothing
    End Function
    Il est a noter que mes tables ne sont pas locales. Elles sont liées en ODBC via Oracle. La modification est bien effectué dans les paramètres régionaux mais non active dans access. Il faudrait que je ferme access et le réouvre sans exécuter le code ci-dessus afin que le tout soit effectif.

    merci

    JM

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

Discussions similaires

  1. Utilisation des types entier non signés dans Win32
    Par colorid dans le forum Langage
    Réponses: 1
    Dernier message: 18/12/2009, 10h04
  2. Réponses: 2
    Dernier message: 18/03/2009, 22h32
  3. Réponses: 4
    Dernier message: 16/03/2008, 18h06
  4. Datagrid non presenté dans Access et utilisation
    Par chris76 dans le forum Access
    Réponses: 4
    Dernier message: 02/03/2006, 14h06
  5. Réponses: 3
    Dernier message: 20/02/2006, 15h34

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