La logique des Modules

Résolu/Fermé
Bertrand_Labevue Messages postés 18 Date d'inscription mardi 27 mai 2014 Statut Membre Dernière intervention 9 mars 2015 - 28 mai 2014 à 09:10
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 2 juin 2014 à 09:05
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
28 mai 2014 à 10:09
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 mardi 27 mai 2014 Statut Membre Dernière intervention 9 mars 2015
28 mai 2014 à 10:27
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
28 mai 2014 à 17:41
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 mardi 27 mai 2014 Statut Membre Dernière intervention 9 mars 2015
Modifié par Bertrand_Labevue le 2/06/2014 à 09:17
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
2 juin 2014 à 09:05
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