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 :

Exécuter une procédure ayant un nom dynamique [AC-97]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de samuelsiffert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 98
    Par défaut Exécuter une procédure ayant un nom dynamique
    Bonjour,

    Mieux vaut un court bout de code qu'un long discours...

    J'essaie de faire ça mais ça ne fonctionne pas (access ne trouve pas la procédure et indique qu'il faut ouvrir une base au préalable...).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    strNomDeLaProcedure = "HelloWord"
    call me.application.run(strNomDeLaProcedure)
    Ce code est déclenché sur un bouton.
    La procédure est déclarée en début de module de formulaire (testé en sub et en fonction et en public).

    Si vous savez résoudre ce problème ou me proposer une autre solution je suis preneur.

    Rassurez-vous je ne vous interroge pas pour rien (j'ai simplifié le code pour mettre en exergue le problème). La résolution de ce problème me permettra un code plus lisible pour mon projet en cours et surtout il est quasi indispensable pour un autre projet qui est du coup en stand-by...

    Certains puristes vont me faire remarquer que lancer des procédures ayant un nom dynamique est risqué et potentiellement source de bugs (et qui plus est, éventuellement difficiles à reproduire) . Tiens, ça me rappelle un fil de discussion sur la partie java il me semble...

    Merci par avance,

    Edit : Ajout d'une capture d'écran


    Samuel

  2. #2
    Membre Expert Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Par défaut
    Essaies ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim strNomDeLaProcedure      As String
     
    strNomDeLaProcedure = "HelloWorld"
     
    Application.Run strNomDeLaProcedure
    Il me semble que cela devrait te convenir

  3. #3
    Membre éclairé Avatar de samuelsiffert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 98
    Par défaut
    Re,

    La nuit (et surtout google) porte conseil...

    J'ai trouvé une solution en utilisant la fonction Eval (qui me permet de lancer uniquement des fonctions). Je me suis rendu compte qu'il fallait que la fonction appelée doit être dans un module (qui porte un nom différent de la fonction) et pas dans le module du formulaire.

    Je lis la réponse de BernardMichel (il me semble par ailleurs que nos codes sont équivalents, non ?) et je re-teste avec application.run et ça fonctionne !

    Voici une capture d'écran avec les 2 solutions :

  4. #4
    Membre Expert Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Par défaut
    Non, elles en sont pas équivalentes car, effectivement, ma fonction est placée dans un module. Tu remarqueras que le "Me." n'existe pas dans ma fonction car je l'ai simplement déclarée "Public" dans un module.
    Heureux que tu aies résolu ton blème

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

Discussions similaires

  1. Une seule instance de l'appli et exécuter une procédure
    Par Manic dans le forum API, COM et SDKs
    Réponses: 11
    Dernier message: 08/03/2006, 11h52
  2. S'adresser à une checkbox ayant comme nom " selection[]
    Par AlphaYoDa dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/02/2006, 22h35
  3. [Variable] Déclarer une variable avec un nom dynamique
    Par jacquesh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/02/2006, 14h11
  4. Réponses: 4
    Dernier message: 09/03/2005, 11h13
  5. [Oracle] Exécuter une procédure PL/SQL en PHP?
    Par Cerberes dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 25/02/2005, 14h11

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