Aide Excel

Forum d'aide et d'entraide sur Excel : cours, astuces, tutoriaux...
 
AccueilPortailFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 [Cours] Où placer ses macros ?

Aller en bas 
AuteurMessage
KiWin
Administrateur
avatar

Nombre de messages : 155
Localisation : Isère - France
Date d'inscription : 16/08/2005

MessageSujet: [Cours] Où placer ses macros ?   Lun 29 Aoû à 22:41

Où placer ses macros ?



Il y a plusieurs endroits où l'ont peut placer une macro. On place une macro selon où l'on veut qu'elle soit disponible, et parfois selon l'objet auquel elle est rattachée.


Nous disposons donc de deux critères pour définir l'emplacement d'une macro :

- Sa disponibilité voulue
- L'objet auquel elle est rattachée


Intéressons d'abord à sa disponibilité, puisque c'est le critère le plus fréquent pour décider de l'emplacement d'une macro.


1) La disponibilité d'une macro

Si vous avez déjà eu l'occasion d'utiliser l'enregistreur de macros, vous aurez probablement remarqué qu'est donné le choix de l'emplacement de l'enregistrement, et donc de la macro.



Vous avez là le choix entre trois options :

- Ce classeur, c'est à dire le classeur actuellement affiché

Si vous choisissez de placer votre macro dans le classeur actuel, elle ne sera disponible que dans ce classeur, et pour l'utiliser il faudra donc ouvrir le dit classeur. C'est le cas le plus courant.

- Un nouveau classeur, c'est à dire un classeur vierge

Mettre une macro dans un nouveau classeur ne présente en soi pas grand intérêt, sauf si l'on destine ce nouveau classeur à devenir un modèle. Ainsi, la macro sera disponible dans tous les classeurs créés depuis ce modèle.
(Voir : Les modèles de classeurs)

- Le classeur de macros personnelles

Ce classeur à ceci de particulier qu'il est un modèle par défaut, c'est à dire que toutes les macros inscrites dans ce classeur seront disponibles à tous les classeurs, passés présents et futurs. Les macros contenues dans ce classeur seront chargées (mais pas forcément exécutées) dès le lancement d'Excel. Sous Excel 2002, il s'agit du fichier PERSO.XLS.


Remarque importante :

Soyez attentif à ce qui suit car le choix du classeur devant contenir une macro n'est pas anodin et s'il est pas mûrement pesé et réfléchi, votre macro peut ne pas fonctionner ou donner des résultats inattendus voir néfastes.

Ce qui découle du choix d'un classeur c'est qu'une macro enregistrée dans un classeur unique n'aura d'effet que sur ce classeur, mais une macro enregistrée dans le classeur de macros personnelles affectera tous les classeurs. C'est à dire que cette dernière doit être compatible avec tous les classeurs.
En effet, si votre macro va chercher des données dans la 10ème feuille et que votre classeur n'en comporte que 6, vous aurez droit à un beau message d'erreur et votre macro sera interrompue.

En conclusion, une macro placée dans le classeur de macros personnelles doit pour être compatible être la plus globale possible. Par exemple une macro pour supprimer les lignes vides de la feuille courante, ou encore une macro qui rajoute trois feuilles au classeur affiché, ou encore une fonction personnalisée.

Et les macros dans un modèle ? me demanderez-vous. C'est aussi valable pour ces macros, mais le risque est moindre étant donné que les classeurs créés depuis un modèle héritent de nombreuses caractéristiques du modèle, comme par exemple le nombre de feuilles. Mais il faut tout de même rester vigilant, car si le modèle comporte bien 10 feuilles, et que vous en supprimez par exemple 4, votre macro qui va chercher des données dans la dixième feuille, qui après coup n'existera plus, votre macro elle provoquera une erreur.

(Fin de la remarque importante)


Nous pouvons maintenant nous pencher sur le second critère...


2) L'objet rattaché à la macro

Tout d'abord observez cette capture :



Il s'agit de l'Explorateur d'objets, qui se trouve dans l'éditeur Visual Basic (Alt+F11 pour l'ouvrir). Ce sont les différents objets à laquelle une macro peut être rattachée. Nous allons commencer par le module, car c'est le cas le plus courant.

- Un module :

C'est l'emplacement par défaut d'une macro. Une macro est placée dans un module lorsque son comportement n'est pas dépendant d'un objet, notamment ceux ci-dessous. Bref, lorsqu'elle n'entre pas dans un des cas ci-dessous.

- Le classeur actuel (ThisWorkbook) :

Ici doivent être placées les macro dépendante d'un événement associé au classeur, comme par exemple Workbook_Open, lorsque le classeur est ouvert, ou Workbook_SheetChange, lorsque qu'une quelconque feuille du classeur est modifiée.

- Une feuille du classeur (Feuil1, Feuil2...) :

Comme ci dessus, les macros placées dans une feuille doivent concerner les événements au niveau de cette feuille, ou non concerner que des objets de la dite feuille, comme par exemple ses cellules. Exemple : l'événement WorkSheet_Activate, lorsque la feuille est activée, ou encore Worksheet_SelectionChange, lorsque la sélection dans la feuille change.

- Un formulaire (UserForm) :

Les formulaires sont des boîtes de dialogues personnalisées, avec des contrôles comme une zone d'entrée de texte, des cases à cocher ou des boutons. Dans un formulaire, pour définir la ou les actions qu'un bouton est censé exécuter lorsque qu'il est cliqué, il faut utiliser une macro. Macro qui sera justement écrite dans le formulaire.

- Un module de classe :

Bien que pas uniquement destiné à cet usage, le module de classe peut contenir des macros lorsque celles-ci sont au niveau Application. Nous avons vu ci-dessus qu'il pouvait y avoir des macros destinées aux formulaires. On dit alors qu'il s'agit de macros de niveau Formulaire. De même, une macro concernant une feuille en particulier et son contenu, est une macro de niveau Feuille. Les macros de niveau Applications, ce sont celles qui concernent l'application qui va la traiter, ici Excel. Mais aussi celles qui concernent tout classeur lors d'événements tels que l'ouverture d'un classeur (Application_WorkbookOpen) ou l'impression d'un classeur (Application_WorkbookBeforePrint).


En résumé, l'emplacement d'une macro dépend d'une part de sa disponibilité au niveau de vos différents classeurs, et d'autre part dépend des objets dont lesquels elle dépend.


Auteur(s) : KiWin
- Première publication le : 29/08/05
- Dernière modification le : 29/08/05
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://aide-excel.forumactif.com
Ramsès II
Co-administratrice
avatar

Nombre de messages : 36
Localisation : Bruxelles
Date d'inscription : 21/08/2005

MessageSujet: Re: [Cours] Où placer ses macros ?   Mer 31 Aoû à 0:58

Comme il y a longtemps, je ne me souviens plus très bien de ce que j'avais fait, sauf que j'avais effectivement des macros dans le classeur concerné et des macros dans le classeur perso.xls.

Il faut quand même déjà avoir une bonne pratique des macros pour les manipuler facilement.

J'avais travaillé de façon tout à fait empirique avant de découvrir ce que tu expliques ici.

Mais une fois qu'on maîtrise bien les macros, c'est génial.

_________________
Bien amicalement
http://amisderamses.forumactif.com/index.htm
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://users.skynet.be/pharaon.ramses/sitedesdeuxramses/index.ht
 
[Cours] Où placer ses macros ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Comment Placer Icone du sujet au debut d un sujet exemple resolu en cours
» L'affichage de la carte disparaît en cours de navigation
» Ouvrir un fichier dans Mapsource sans effacer les données en cours?
» Problème sur l'arret en cours
» Cours ImageReady

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Aide Excel :: Entraide & apprentissage :: Cours et astuces-
Sauter vers: