Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Créer et détruire un module (de classe) sous VBA

6 réponses
Avatar
Archives
Bonjour,

J'essaie d'écrire une routine permettant de générer du code VBA pour le
placer dans un module. Mais j'ignore comment créer et surtout détruire un
module (de classe éventuellement). Il y a une méthode particulière ?

Pour créer le module, je m'en sors avec la fonction CopyObject appliquée à
un module vierge. En revanche pour détruire le module, je sèche
complétement. Ces modules sont créés à partir d'une base de données et je
suis contraint de détruire mes modules devenus inutiles au fur et à mesure.

Merci de votre aide

6 réponses

Avatar
Raymond [mvp]
Bonjour.

je trouve bizarre cette démarche de destruction de module.

Tu trouveras quelques fonctions vba sur les modules à partir de la page:
http://access.vba.free.fr/modules.htm

pour détruire un module:
DoCmd.DeleteObject acModule, "module1"

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Archives" a écrit dans le message de
news:cack3f$im6$
Bonjour,

J'essaie d'écrire une routine permettant de générer du code VBA pour le
placer dans un module. Mais j'ignore comment créer et surtout détruire un
module (de classe éventuellement). Il y a une méthode particulière ?

Pour créer le module, je m'en sors avec la fonction CopyObject appliquée à
un module vierge. En revanche pour détruire le module, je sèche
complétement. Ces modules sont créés à partir d'une base de données et je
suis contraint de détruire mes modules devenus inutiles au fur et à
mesure.


Merci de votre aide






Avatar
Archives
Bizarre, vous avez dit bizarre, comme c'est étrange...

Je cherche à créer un module de classe pour chaque table d'une base de
données. Lorsque la routine trouve une nouvelle table, elle crée un nouveau
module et génére le code associé. Mais lorsqu'une table a été détruite, je
souhaite que la routine supprime le module de classe correspondant, sinon je
suis envahi de modules relatifs à d'anciennes tables disparues depuis
longtemps, d'où ma demande.

Merci pour le lien mais je n'y ai pas trouvé mon bonheur.


"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

je trouve bizarre cette démarche de destruction de module.

Tu trouveras quelques fonctions vba sur les modules à partir de la page:
http://access.vba.free.fr/modules.htm

pour détruire un module:
DoCmd.DeleteObject acModule, "module1"

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Archives" a écrit dans le message de
news:cack3f$im6$
Bonjour,

J'essaie d'écrire une routine permettant de générer du code VBA pour le
placer dans un module. Mais j'ignore comment créer et surtout détruire
un


module (de classe éventuellement). Il y a une méthode particulière ?

Pour créer le module, je m'en sors avec la fonction CopyObject appliquée
à


un module vierge. En revanche pour détruire le module, je sèche
complétement. Ces modules sont créés à partir d'une base de données et
je


suis contraint de détruire mes modules devenus inutiles au fur et à
mesure.


Merci de votre aide










Avatar
Raymond [mvp]
regarde du côté de DoCmd.RunCommand acCmdNewObjectModule

tes modules portent quel nom par rapport aux tables correspondantes ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Archives" a écrit dans le message de
news:cacpvd$a4n$
Bizarre, vous avez dit bizarre, comme c'est étrange...

Je cherche à créer un module de classe pour chaque table d'une base de
données. Lorsque la routine trouve une nouvelle table, elle crée un
nouveau

module et génére le code associé. Mais lorsqu'une table a été détruite, je
souhaite que la routine supprime le module de classe correspondant, sinon
je

suis envahi de modules relatifs à d'anciennes tables disparues depuis
longtemps, d'où ma demande.

Merci pour le lien mais je n'y ai pas trouvé mon bonheur.



Avatar
Archives
Exact, il y a même une commande pour créer un module de classe. Le plus
délicat est de savoir sous quel nom ce nouveau module a été ouvert. Avec la
collection Modules, ce n'est pas insurmontable.

Pour l'instant mes modules portent le même nom que la table correspondante,
mais je rajouterai peut-être un préfixe.

Je n'ai en revanche pas trouvé de commande pour supprimer un module.
Pourtant, Acces permet de supprimer les menus, la commande correspondante
doit bien se trouver quelque part.


"Raymond [mvp]" a écrit dans le message de
news: em188G#
regarde du côté de DoCmd.RunCommand acCmdNewObjectModule

tes modules portent quel nom par rapport aux tables correspondantes ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Archives" a écrit dans le message de
news:cacpvd$a4n$
Bizarre, vous avez dit bizarre, comme c'est étrange...

Je cherche à créer un module de classe pour chaque table d'une base de
données. Lorsque la routine trouve une nouvelle table, elle crée un
nouveau

module et génére le code associé. Mais lorsqu'une table a été détruite,
je


souhaite que la routine supprime le module de classe correspondant,
sinon


je
suis envahi de modules relatifs à d'anciennes tables disparues depuis
longtemps, d'où ma demande.

Merci pour le lien mais je n'y ai pas trouvé mon bonheur.







Avatar
Archives
Ca y est! On peut utiliser la commande

DoCmd.DeleteObject acModule, "MyModule"

Merci Raymond
Avatar
Raymond [mvp]
Pour supprimer tes tables, tu boucles sur tes modules avec un for Each et tu
testes si tu as la table du même nom:
on error goto a_supprimer
If CurrentDb.TableDefs(Mdl.Name).Name = Mdl.Name) then
' ici les deux existent
end if

si la table n'existe pas le déroulement se continue à a_supprimer et là tu
peux supprimer physiquement la table.


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Archives" a écrit dans le message de
news:cacvll$4l9$
Exact, il y a même une commande pour créer un module de classe. Le plus
délicat est de savoir sous quel nom ce nouveau module a été ouvert. Avec
la

collection Modules, ce n'est pas insurmontable.

Pour l'instant mes modules portent le même nom que la table
correspondante,

mais je rajouterai peut-être un préfixe.