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 :

Requête en vba avec variable contenant des décimales


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de possible924
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 302
    Par défaut Requête en vba avec variable contenant des décimales
    Bonjour à tous,

    J'ai une variable qui représente un nombre avec des décimales que j'utilise dans une requête en VBA.
    Pour que ça fonctionne je suis obligé de faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    Total_Réglements = DSum("Tr_Réglement_Montant", "R_Tuteur_Réglements", "Tu_Clé_Usager =" & MyKey) * 100
                    DoCmd.RunSQL "UPDATE T_Tuteur_Usager SET T_Tuteur_Usager.Tu_Total_Réglements = " & Total_Réglements & "/100 WHERE T_Tuteur_Usager.Tu_Clé_Usager = " & MyKey
    C'est à dire que je multiple la valeur de ma variable par 100, pour la rediviser par 100

    Si je fais ça, ça ne marche pas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    Total_Réglements = DSum("Tr_Réglement_Montant", "R_Tuteur_Réglements", "Tu_Clé_Usager =" & MyKey) 
                    DoCmd.RunSQL "UPDATE T_Tuteur_Usager SET T_Tuteur_Usager.Tu_Total_Réglements = " & Total_Réglements & " WHERE T_Tuteur_Usager.Tu_Clé_Usager = " & MyKey
    Je pense qu'il doit y avoir moyen de faire mieux !
    Merci pour votre aide
    Pierre

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 960
    Par défaut
    bonjour,
    Je pense qu'il doit y avoir moyen de faire mieux !
    pas nécessairement, mais il faut savoir que le séparateur de décimales dans l'environnement VBA est toujours le point (tout comme les dates sont toujours au format US).
    Partant de là, il faut remplacer le séparateur de décimales local par celui utilisé dans VBA pour éviter les erreurs de syntaxe car la virgule (séparateur de décimales utilisé en France) est aussi le caractère réservé pour le séparateur de colonnes dans SQL.
    Voici une fonction qui formate les montants pour être valides dans VBA:
    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
    Function fConvMontant(pMontant As Currency) As Variant
    ' pMontant est le montant à convertir
    Dim vrMontant As Variant
    Dim stDecimalSep As String
     
    ' pour trouver le séparateur de décimales utilisé sur le poste ( , . ')
     stDecimalSep = Mid$(1 / 2, 2, 1)
     
    ' pour convertir le montant en variant
    vrMontant = pMontant
     
    ' pour remplacer le séparateur de décimales ( , . ') par celui de VBA (.) ; le montant est de type variant pour conserver le séparateur
    fConvMontant = (Replace(vrMontant, stDecimalSep, "."))
     
    End Function
    et son utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE T_Tuteur_Usager SET T_Tuteur_Usager.Tu_Total_Réglements = " & fConvMontant(Total_Réglements) & " WHERE T_Tuteur_Usager.Tu_Clé_Usager = " & MyKey

  3. #3
    Membre éclairé Avatar de possible924
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 302
    Par défaut
    Merci pour la réponse qui est toujours bonne à connaître
    mais pour l'instant, je vais rester sur *100 et /100

    Bonne journée de confinement !
    Pierre

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 31/05/2018, 11h13
  2. [XL-2007] Formulaire VBA problème avec cellules contenant des dates
    Par Sudeki dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/10/2013, 12h54
  3. [AC-2003] creer une requête en VBA avec des variables
    Par qung88 dans le forum VBA Access
    Réponses: 14
    Dernier message: 23/02/2011, 15h19
  4. [SqlServer 2K] curseurs avec SELECT contenant des variables
    Par yinyang dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2006, 10h25

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