Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2011, 21h05   #1
Membre régulier
 
Avatar de samuelsiffert
 
Inscription : avril 2006
Messages : 93
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : avril 2006
Messages : 93
Points : 80
Points : 80
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 :
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
__________________
(Access 97)

*SVP marquez vos discussions quand c'est le cas.

@+

Sam.
samuelsiffert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 08h32   #2
Membre Expert
 
Avatar de bernardmichel
 
Inscription : janvier 2004
Messages : 985
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 985
Points : 1 028
Points : 1 028
Envoyer un message via MSN à bernardmichel Envoyer un message via Skype™ à bernardmichel
Essaies ceci:
Code :
1
2
3
4
5
Dim strNomDeLaProcedure      As String
 
strNomDeLaProcedure = "HelloWorld"
 
Application.Run strNomDeLaProcedure
Il me semble que cela devrait te convenir
bernardmichel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 09h13   #3
Membre régulier
 
Avatar de samuelsiffert
 
Inscription : avril 2006
Messages : 93
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : avril 2006
Messages : 93
Points : 80
Points : 80
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 :
__________________
(Access 97)

*SVP marquez vos discussions quand c'est le cas.

@+

Sam.
samuelsiffert est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 09h54   #4
Membre Expert
 
Avatar de bernardmichel
 
Inscription : janvier 2004
Messages : 985
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 985
Points : 1 028
Points : 1 028
Envoyer un message via MSN à bernardmichel Envoyer un message via Skype™ à bernardmichel
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
bernardmichel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h35.


 
 
 
 
Partenaires

Hébergement Web