OVH Cloud OVH Cloud

lancer un module depuis une macro

7 réponses
Avatar
denis le breton
Merci à Eric de la piste qu'il m'a donné
Hélas? le résulat n'atteint pas mon espérance
J'ai developpé dans un module du VBA qui récupère des données les comparent
les traitent ...
en lançant la procédure cela fonctionne (Sub et End Sub )
Depuis une macro (ou groupe de macro) je souhaite lancer cette procédure
je remplace donc le Sub par le Function dans le module
dans la macro je choisi excuter code, et je vais chercher le module je
colle, puis j'execute
la procédure s'ouvre et soudain ... rien !
Comment faut il faire pour que la procédure s'éxécute puis rende la main à
la macro qui fera la suite qui lui est demandée ?
Merci d'avance
Denis

7 réponses

Avatar
Eric
Bonjour,

L'action ExécuterCode te permet de lancer une fonction. On ne peut pas
lancer une procédure directement via macro comme indiqué dans l'aide.
Donc tu transformes ta procédure en fonction ou tu crées une fonction
qui appelle la procédure. La fonction doit se trouver dans un module de
portée globale.
Soit la procédure Sub zz(), tu la transformes en Function zz() ou tu
crées une fonction Function fnzz() qui appelle ta procédure Sub zz, du
genre :
Function fnzz()
Call zz
End Function

Dans les actions de ta macro :
ExecuterCode et à Nom Fonction : fnzz()

Ainsi la macro mTest composée des actions :
OuvrirFormulaire
Nom Formulaire : frmTest
Mode Fenêtre : Boite Dialogue
ExecuterCode
Nom Fonction : fnzz()
OuvrirEtat
Nom Etat : eTest
Affichage : Aperçu avant Impression

ouvre le formulaire frmTest en Modal et ne se poursuit que lorsque
celui-ci est refermé par l'utilisateur ; lance la fonction fnzz() qui
fait le traitement adhoc puis ouvre un état.

Plus clair ?

Merci à Eric de la piste qu'il m'a donné
Hélas? le résulat n'atteint pas mon espérance
J'ai developpé dans un module du VBA qui récupère des données les comparent
les traitent ...
en lançant la procédure cela fonctionne (Sub et End Sub )
Depuis une macro (ou groupe de macro) je souhaite lancer cette procédure
je remplace donc le Sub par le Function dans le module
dans la macro je choisi excuter code, et je vais chercher le module je
colle, puis j'execute
la procédure s'ouvre et soudain ... rien !
Comment faut il faire pour que la procédure s'éxécute puis rende la main à
la macro qui fera la suite qui lui est demandée ?
Merci d'avance
Denis


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Pierre CFI [mvp]
bonjour
un conseil (si je peux) , laisse tomber les macros, fais tout en code
quand tu as un pb, pas facile de savoir si c'est dans la macro (et laquelle) ou dans un module

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"denis le breton" a écrit dans le message de news:

Merci à Eric de la piste qu'il m'a donné
Hélas? le résulat n'atteint pas mon espérance
J'ai developpé dans un module du VBA qui récupère des données les comparent
les traitent ...
en lançant la procédure cela fonctionne (Sub et End Sub )
Depuis une macro (ou groupe de macro) je souhaite lancer cette procédure
je remplace donc le Sub par le Function dans le module
dans la macro je choisi excuter code, et je vais chercher le module je
colle, puis j'execute
la procédure s'ouvre et soudain ... rien !
Comment faut il faire pour que la procédure s'éxécute puis rende la main à
la macro qui fera la suite qui lui est demandée ?
Merci d'avance
Denis


Avatar
Eric
Bonjour Pierre,

Manque de fluidité certes mais ...
j'aime encore les macros !!!
mS aussi car sur bon nombre d'actions VBA, il nous renvoie sur l'aide
des macros associées (Pour de plus amples informations ...)

C'était le clin d'oeil du week-end ;-)

bonjour
un conseil (si je peux) , laisse tomber les macros, fais tout en code
quand tu as un pb, pas facile de savoir si c'est dans la macro (et laquelle) ou dans un module



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
denis le breton
Merci à Eric et Pierre pour l'aide que vous m'apportez
Pour Pierre, ayant découvert le VBA avec Excel, je m'y retrouve, mais il est
vrai que les macros sont sympas avec cet environnement semi graaphique et
d'aide.
Toutefois la remarque cocnernant la recherche de problème entre macro et
module, est intéressante.
Revenons à notre problème, à cette heure mon problème persisite (denière
tentative heir soir)
Je pense que je vais utiliser la fonction qui lance la procédure, double
avantage tester la procédure en pas à pas hors environnement de travail réél.

Une question de reste est ce que la fonction ou et la procédure doivent être
en public, private, ou cela n'a pas d'importance ?

Merci encore à vous deux de votre pateince que je continuerai à user.
Denis



Bonjour Pierre,

Manque de fluidité certes mais ...
j'aime encore les macros !!!
mS aussi car sur bon nombre d'actions VBA, il nous renvoie sur l'aide
des macros associées (Pour de plus amples informations ...)

C'était le clin d'oeil du week-end ;-)

bonjour
un conseil (si je peux) , laisse tomber les macros, fais tout en code
quand tu as un pb, pas facile de savoir si c'est dans la macro (et laquelle) ou dans un module



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
re,

Dès lors que l'Action ExecuterCode ne te permet que de choisir une
fonction dans des modules de portée globale, les fonctions de ces
modules sont de portée globale. Sans spécification précise, elles sont
publiques.
Dans ces modules,
Function Test(arg as String) as ...
...
End Function

équivaut à :
Public Function Test(arg as String) as ...
...
End Function

Merci à Eric et Pierre pour l'aide que vous m'apportez
Pour Pierre, ayant découvert le VBA avec Excel, je m'y retrouve, mais il est
vrai que les macros sont sympas avec cet environnement semi graaphique et
d'aide.
Toutefois la remarque cocnernant la recherche de problème entre macro et
module, est intéressante.
Revenons à notre problème, à cette heure mon problème persisite (denière
tentative heir soir)
Je pense que je vais utiliser la fonction qui lance la procédure, double
avantage tester la procédure en pas à pas hors environnement de travail réél.

Une question de reste est ce que la fonction ou et la procédure doivent être
en public, private, ou cela n'a pas d'importance ?

Merci encore à vous deux de votre pateince que je continuerai à user.
Denis



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
denis le breton
Que la lumière soit, en ce jour de repos dominical, enfin les différentes
pièces du puzzle s'organisent.
Il en manquait une, la voici
Dans les propiétés d'un bouton par exemple, dans l'onglet évènement il est
facile d'atacher une macro qui ouvre, ferme, agrandit, ...
Parrallèlement dans la fenêtre vba, j'avais découvert sans comprendre
comment un objet de classe !!!
C'est tout simple, il sufffit de choisir 'Procédure évènementielle' dans
l'évènement du bouton correspondant (par exemple clic), et là miracle on
atterit dans l'objet de classe pour y sasir ou coller une procédure de type
sub qui marche très bien.
Je rejoins donc l'analyse de Pierre concernant le mélange de macro et de
procédure. (Dans la mesure ou il n'ya pas d'enchaînement divers que la macro
facilite)
UN grand merci à vous deux.
Denis
PS où trouver la syntaxe d'appel aux : formulaire, control, table, etat,
champ ....?
je rentre ça dans un fil séparé
Denis


re,

Dès lors que l'Action ExecuterCode ne te permet que de choisir une
fonction dans des modules de portée globale, les fonctions de ces
modules sont de portée globale. Sans spécification précise, elles sont
publiques.
Dans ces modules,
Function Test(arg as String) as ...
...
End Function

équivaut à :
Public Function Test(arg as String) as ...
...
End Function

Merci à Eric et Pierre pour l'aide que vous m'apportez
Pour Pierre, ayant découvert le VBA avec Excel, je m'y retrouve, mais il est
vrai que les macros sont sympas avec cet environnement semi graaphique et
d'aide.
Toutefois la remarque cocnernant la recherche de problème entre macro et
module, est intéressante.
Revenons à notre problème, à cette heure mon problème persisite (denière
tentative heir soir)
Je pense que je vais utiliser la fonction qui lance la procédure, double
avantage tester la procédure en pas à pas hors environnement de travail réél.

Une question de reste est ce que la fonction ou et la procédure doivent être
en public, private, ou cela n'a pas d'importance ?

Merci encore à vous deux de votre pateince que je continuerai à user.
Denis



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
Bonjour,

Ah !!!, quand on goûte aux joies de la programmation évènementielle, on
laisse vite tomber ces anachronismes de macros, d'autant plus qu'à court
terme on peut s'attendre à les voir disparaître. Depuis Access2000, je
crois, il est possible de les convertir en VBA. Moi, de temps en temps,
je continue à en manipuler pour le fun ;-)

Pour les problèmes de syntaxe, je crois que tu trouveras une page sur le
site de Raymond ou sur les autres conseillés ici : http://www.mpfa.info/
Toutefois, le générateur d'expression est ton ami.



Que la lumière soit, en ce jour de repos dominical, enfin les différentes
pièces du puzzle s'organisent.
Il en manquait une, la voici
Dans les propiétés d'un bouton par exemple, dans l'onglet évènement il est
facile d'atacher une macro qui ouvre, ferme, agrandit, ...
Parrallèlement dans la fenêtre vba, j'avais découvert sans comprendre
comment un objet de classe !!!
C'est tout simple, il sufffit de choisir 'Procédure évènementielle' dans
l'évènement du bouton correspondant (par exemple clic), et là miracle on
atterit dans l'objet de classe pour y sasir ou coller une procédure de type
sub qui marche très bien.
Je rejoins donc l'analyse de Pierre concernant le mélange de macro et de
procédure. (Dans la mesure ou il n'ya pas d'enchaînement divers que la macro
facilite)
UN grand merci à vous deux.
Denis
PS où trouver la syntaxe d'appel aux : formulaire, control, table, etat,
champ ....?
je rentre ça dans un fil séparé
Denis




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr