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 :

Problème avec DLookup


Sujet :

VBA Access

  1. #1
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut Problème avec DLookup
    Bonjour,

    J'essaie de me remettre un peu à Access et voilà que déjà je bute sur un petit problème.
    je recherche dans une table un identifiant qui est rattaché à une valeur Monetaire

    J'ai donc le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    l_curRemboursDu = (Nz(DSum("Mensualite", "Reglements", "ID = " & m_lngFamille & " AND Regle = 0 AND TypeEcheance <> 'E'"), 0)
    MsgBox "ID Chef de famille : " & DLookup("ID", "Reglements", "Mensualite = " & l_curRemboursDu)
    Si la valeur récupérée dans l_curremboursDu est une valeur entière, je n'ai pas de problème par contre si la valeur récupérée contient des centimes, le Dlookup du MsgBox affiche une erreur

    Erreur d'exécution 3075
    erreur de syntaxe (virgule) dans l'expression "Mensualite = 51,50"
    Je n'arrive pas à me sortir de ce problème, j'ai essayé de convertir l_curRemboursDu avec les fonctions : CDbl ou Ccur, ça ne change rien.

    Quelqu'un aurait-il une idée

    Merci d'avance pour vos remarques
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut Jeannot ,

    Est-ce que ton séparateur décimal dans Windows est une virgule ou un point ?

    Si c'est un point, peut-être que le décimal avec la virgule est pris comme un texte ?

    C'est juste une hypothèse.

    Philippe

  3. #3
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Bonjour Philippe,

    Le séparateur décimal est bien une virgule au niveau de mes parametres.
    Mais meme si la valeur était reprise comme texte, le fait d'utiliser une fonction de conversion ne devrait-elle pas suffire pour resoudre l'anomalie ?
    D'autre part, VBA ne change-t-il pas automatiquement la "," en "." dans les syntaxes SQL ?

    Je t'avoue que je suis perdu, je ne pensais pas qu'on pouvait perdre aussi vite

    En tout cas merci pour ton intervention (J'avais relu ton tuto sur les fonctions de domaine )
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Je ne vois pas, à part enlever l'espace avant et après le =.

    Philippe

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour Jeannot45 et Philippe,
    cela me rappelle un peu ce problème évoqué sur ce post (ici) sauf que dans ton cas c'est le problème inverse : il s'agit de substituer le séparateur décimal Windows par celui de VBA.
    Voici comment je ferai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim l_curRemboursDu as Variant  ' et pas Currency
    Dim stDecimalSep As String
     
    stDecimalSep = Mid$(1 / 2, 2, 1)                        ' permet de trouver le séparateur de décimales utilisé sur le poste.
     
    l_curRemboursDu = Nz(DSum("Mensualite", "Reglements", "ID = " & m_lngFamille & " AND Regle = 0 AND TypeEcheance <> 'E'"), 0)
    l_curRemboursDu = (Replace(l_curRemboursDu, stDecimalSep, "."))  ' pour remplacer le séparateur de décimales par celui de VBA
     
    MsgBox "ID Chef de famille : " & DLookup("ID", "Reglements", "Mensualite = " & l_curRemboursDu)
    Cela parait aberrant de faire cela, mais on le fait pour formater les dates au format US puisque c'est le format utilisé dans VBA.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    en fait je pense que la raison probable est que la virgule est un caractère réservé (utilisé pour séparer les paramètres dans Dlookup)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Salut

    Citation Envoyé par tee_grandbois Voir le message
    en fait je pense que la raison probable est que la virgule est un caractère réservé (utilisé pour séparer les paramètres dans Dlookup)
    Je n'avais pas pensé à cela, je pense que c'est une bonne piste à suivre.

    Philippe

  8. #8
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Merci Tee_GrandBois, Philippe

    J'avais pensé au Replace, mais j'avais complètement zappé le type de la variable si bien qu'Access me jetait à chaque fois en m'indiquant un mauvais type de variable.
    Ça marche nickel.

    J'ai perdu "mes réflexes"
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

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

Discussions similaires

  1. [AC-2013] Problème de récupération de donnée avec DLookup
    Par Domi.mi dans le forum Access
    Réponses: 1
    Dernier message: 08/11/2015, 06h38
  2. [AC-2010] Problème avec DLOOKUP
    Par pilou37 dans le forum VBA Access
    Réponses: 4
    Dernier message: 25/01/2015, 23h01
  3. Réponses: 2
    Dernier message: 13/05/2013, 21h41
  4. problème avec DLookup (access 2003)
    Par edonist dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/09/2008, 21h28
  5. Réponses: 12
    Dernier message: 02/04/2007, 16h17

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