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

Requêtes et SQL. Discussion :

Module VBA dans requête : Erreur "Fonction non définie dans l'expression" [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Module VBA dans requête : Erreur "Fonction non définie dans l'expression"
    Bonjour,

    J'essaie pour la première fois d'utiliser un module VBA. Vu le message d'erreur obtenu, j'ai créé un module des plus simple (nommé Module1) pour tester et j'ai toujours le même message d'erreur :

    Fonction Module1 non définie dans l'expression
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Option Compare Database
     
    Public Function test() As String
    test = "tt"
    End Function
    et ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT Table1.id, Module1() AS test FROM Table1
    J'utilise Access 2003, et j'ai bien essayé de voir s'il y a des dépendances manquantes, mais je ne trouve rien. Dans outils/références, il y a quelques références disponibles cochées, mais je ne vois pas de rubriques "manquantes".

    Merci pour votre aide !

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Tu ne peux pas appeler un module dans une requête mais tu peux appeler une fonction publique dans une requête.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.id, Test() AS test FROM Table1

    En passant dans tes options dans l'éditeur de code active la déclaration des variables obligatoire c'est une bonne habitude de programmation et cela peut te sauver des heures de recherche de bug.

    Quand tu l'as activé Access ajoute automatiquement Option explicit au début de ton code dans tous nouveau module.

    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
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup pour ta réponse.

    J'ai suivi tes conseils, mais j'ai maintenant ce message d'erreur :

    "Fonction 'Test' non définie dans l'expression"

    J'ai pensé que c'était la majuscule et j'ai maintenant ce code mais toujours ce message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Option Compare Database
     
    Public Function Test() As String
    Test = "tt"
    End Function
    Merci pour ton aide.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Essaye :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.id, Test() AS AfficheTest FROM Table1

    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.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Malheureusement toujours la même erreur :

    Fonction 'Test' non définie dans l'expression

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    La réponse de Marot est la bonne.

    Dans quel type de module as-tu déclaré Test . Il faut un module "standard" !

    "Always look at the bright side of life." Monty Python.

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour,

    Ta base n'aime peut-être pas => Test
    Essayes en ajoutant un "f" genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function fTest() As String
        fTest = "tt"
    End Function
    Cordialement.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Bien vu ! C'était effectivement le mot "Test" qui posait problème,en le remplaçant par "fTest", ça marche. Probablement conflit avec une fonction de ce nom ailleurs.

    Ce qui est étrange, c'est que j'avais testé ce module sur un autre ordi avec une autre version de Access et ça marchait...

    Merci beaucoup à tous.

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

Discussions similaires

  1. [AC-2007] Fonction non définie dans l'expression
    Par teuzadur dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/06/2011, 21h48
  2. fonction non défini dans le GUI
    Par oliv27400 dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 02/06/2010, 14h47
  3. Fonction non définie dans l'expression
    Par bartbart dans le forum VBA Access
    Réponses: 8
    Dernier message: 21/11/2007, 15h40
  4. [VBA] Fonction non définie dans l'expression
    Par DREADY dans le forum VBA Access
    Réponses: 17
    Dernier message: 08/03/2007, 16h49
  5. Réponses: 2
    Dernier message: 01/06/2006, 14h54

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