La logique des Modules

Résolu
Bertrand_Labevue Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

sous excel 2003, j'ai aussi une question par rapport à la différence d'utilisation entre les macros VBA écrites sur des feuilles (dossier Microsoft Excel Object) et les Modules (dossier Modules)

j'aimerais plus tard pouvoir exporter ma macro et donc l'écrire dans un module. Or le module ne se laisse pas renommer (l'option existe, j'en suis sûr mais ce n'est ni par clic droit ni par raccourci F2...) quelle est donc la bonne méthode ?

seconde question, moins triviale: j'ai un bouton relié à ma macro. Ce bouton fonctionne tant que le code est dans la feuille correspondante mais cesse de fonctionner quand je le déplace dans mon module. Comment puis-je déplacer mon bout de code ?

Merci d'avance.

4 réponses

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Bonjour,

Les macros VBA écrites sur des feuilles sont accessible pour la feuille (à quelques nuances près tout de même) et les Modules sont accessibles depuis l'ensemble du classeur et éventuellement de la cession et il faut donc qualifier la feuille visée.
Ceci te fait comprendre ta seconde question aussi.
0
Bertrand_Labevue Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Donc je dois "qualifier la feuille visée" ? ça veut dire rajouter quelque chose dans le module pour qu'il sache ce à quoi il s'adresse ? (je m'en doutais un peu, mais je n'ai trouvé quelle syntaxe utiliser pour cela)...

De façon générique, est ce que tu connais un tuto qui détaille spécifiquement ce point ? j'ai un peu cherché sans trouver ce qui correspondait à cette question.
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Bonjour,

Si tu fais :
cells(1,1).value="x"
dans une procédure de feuille pas de problème
Dans un module tu qualifies :
activesheet.cells(1,1).value="x"
ou
sheets("mafeuilleàtraiter").cells(1,1).value="x"

De même pour tous les objets que tu traites.
Il faut se méfier des qualifications implicites car parfois tu vas traiter ce que tu n'attendais pas !
0
Bertrand_Labevue Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
d'accord, je vois l'idée. Et pour un bouton (puisque la macro démarre là) n'y aurait-il pas un truc supplémentaire à faire pour que la macro reconnaisse le bouton à partir d'un module ?

Bon en fait j'ai compris le souci: il fallait faire un dessin (de rectangle par exemple) puis faire "affecter une macro" pour pouvoir ensuite utiliser le module. Merci pour les conseils, ça me sera utile par la suite.
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Bonjour,

pour que la macro reconnaisse le bouton à partir d'un module ?

Ce n'est pas tout à fait cela. Tu associes la macro au bouton :
- si ta macro est 'Public' elle peut être dans la feuille ou dans un module
- si ta macro n'est pas qualifiée, elle est dans la feuille.
Ensuite c'est dans la macro que tu doit qualifier les objets pour traiter celui qui est visé : dans un module tu peux adresser toutes les feuilles.
0