# Macros-commandes VBA/Enregistreur
## Un outil magique pour l'apprentissage

Le principe de l'enregistreur de macros est de créer une procédure VBA sans avoir la moindre connaissance du langage. Après avoir saisi quelques paramètres (nom, raccourci, localité, commentaire) vous pouvez démarrer l'enregistrement d'une macro, toutes les actions que vous réalisez sur le(s) classeur(s) sont traduites en instructions dans le langage VBA. À la fin de la séquence, il vous faut arrêter l'enregistrement de la macro. Lorsque vous rappellerez cette macro enregistrée par le nom que vous lui avez donné, Excel exécutera de nouveau toutes les actions que vous avez effectuées lors de l'enregistrement.
L'enregistreur trouve son intérêt dans deux circonstances :
* Vous êtes développeurs de macros débutant et ne connaissez pas toutes les instructions du langage VBA
* Vous souhaitez créer une macro immédiatement effective grâce au logiciel Excel seul sans passer par la fenêtre d'édition de macros VBE (Visual Basic Environment)
La majorité des débutants VBA passe d’abord par l'enregistreur, puis complète ou supprime les lignes générées. Avec le temps et la maitrise, la majorité des utilisateurs VBA arrive à coder directement une macro sans passer par l'enregistreur. En d'autres termes, coder une macro directement en VBA n’est pas à la portée de tous les utilisateurs, il faut un minimum de connaissances de vocabulaire, de mots-clés et d'objets pour pouvoir le faire.
Avant de vous lancer dans l'enregistrement automatique d’une macro, il est judicieux de dégager le réel intérêt de la macro, en se poser quelques questions :
* "Comment la nommer, comment la déclencher ?"
* "Est-ce qu'elle peut être utilisée par d'autres classeurs ?"
* "Quel va être le but de ma macro, à quoi va t-elle servir ?"
Les exemples de cette leçon sont relativement simples, l’utilité de certaines macros peut sembler discutable, mais il faut acquérir une base solide de connaissances avant de s'attaquer à la création de macros plus utiles et donc plus complexes. Comme en mathématiques, seul un entraînement régulier et répétitif sur des macros simples, voire simplistes, vous permettra d'atteindre le niveau requis pour la création de macros professionnelles

### Enregistrer une macro

Pour démarrer l’enregistreur, suivez les différentes étapes :
* Aller sur l’onglet développeur
* Dans la partie Code, cliquez sur Enregistrer une macro, la boîte de dialogue "Enregistrer une macro" s’ouvre, un formulaire s'affiche avec les champs suivants :
** Nom de la macro
** Touche de raccourci
** Enregistrer la macro dans
** Description
** Valider avec OK
* Effectuer toutes les actions que vous voulez sur votre classeur EXCEL
* Retourner sur l’onglet développeur
* Dans la partie Code, cliquez sur Arrêter l'enregistrement

#### Donner un nom à la macro

Le nom d’une macro est soumis à quelques règles :
* Le nom doit commencer par une lettre et doit correspondre à ce que fait la macro
* Le nombre de caractères maximal que peut contenir le nom de la macro est de 80 caractères (Lettres et chiffres exclusivement)
* Dans le cas où le bouton « OK » reste grisé, cela signifierait que le nom saisi est incorrect.
Si vous réalisez une macro qui graisse la police de caractère des cellules sélectionnées, vous pouvez la nommer mGraisserSelection

#### Associer une combinaison de touches à la macro

Une combinaison de touches qui vous permettra d’activer directement la macro, cette combinaison est soumise aussi à quelques règles :
* La touche CTRL est toujours retenue, vous pouvez la compléter par une autre lettre : CTRL/N
* Pour ne pas interférer avec les combinaisons de touches standard EXCEL, il est plutôt conseillé d’utiliser aussi la touche MAJ : CTRL/MAJ/N
* La combinaison de touches n’est pas obligatoire (option recommandée), d'autres méthodes de lancement de la macro sont plus efficaces (bouton, appel automatique, formulaire, ...)
Si vous réalisez une macro qui graisse la police de caractère des cellules sélectionnées, vous pouvez lier votre macro à la combinaison CTRL + MAJ + G

#### Choisir le lieu de stockage de la macro

Ici, Excel vous propose d’enregistrer la macro dans :
* Ce classeur : Si vous voulez que la macro ne soit effective que sur le classeur que vous utilisez (option recommandée)
* Nouveau classeur : La macro sera enregistrée sur un nouveau classeur
* Classeur de macros personnelles : la macro sera accessibles à partir de tous les classeurs EXCEL de votre poste de travail (à n’utiliser que si vous êtes sur de la fiabilité de votre macro), la macro est alors enregistrée sur le fichier de macros personnelles : perso.xls (fichier de paramètre caché d’Excel)
Si vous réalisez une macro qui graisse la police de caractère des cellules sélectionnées, il est recommandé de stocker votre macro dans Ce classeur

#### Commenter la macro

Il est indispensable de saisir une description concise à chaque création de macro, cela vous permettra de savoir exactement ce que votre macro fait quand vous voudrez l’utiliser de nouveau
Si vous réalisez une macro qui graisse la sélection, vous pouvez lui donner la description : Cette macro graisse les polices de toutes les cellules sélectionnées

### Code VBA généré après l'enregistrement des actions

Après avoir effectué toutes les actions EXCEL reproductibles puis arrêté l’enregistrement, la suite d’instructions suivante affectée à la macro est accessible dans l'environnement VBE
Préparer à l'avance les commandes à enregistrer afin de ne pas créer du code VBA automatique inutile

## Un outil facile pour l’utilisation des macros => l’assistant Macros

Pour démarrer l’assistant, suivez les étapes suivantes :
* Allez sur l’onglet développeur
* Dans la partie Code, cliquez sur Macros, la boîte de dialogue "Macro" s’ouvre avec les objets suivants :
** la macro sélectionnée
** une liste de toutes les macros exécutables
** une suite de boutons de commandes
** le lieu de stockage de la macro sélectionnée
** la description de la macro sélectionnée
* Cliquez sur le bouton de votre choix
* Exécuter : permet de lancer en un seul jet toutes les commandes enregistrées de la macro, ce processus représente l'une des utilisations standard des macros
* Pas à pas : permet de lancer les commandes enregistrées de la macro avec un arrêt après chaque instruction, ce processus est extrêmement utile lors de phases de mise au point ou de réparation des macros-commandes
* Modifier : permet d'afficher la fenêtre d'édition VBE afin de visualiser et/ou de modifier des lignes d'instruction
* Créer : permet d'afficher la fenêtre d'édition VBE afin de créer une nouvelle macro par une saisie directe des lignes d'instructions de code VBA
* Supprimer : permet de supprimer une macro devenue inutile
* Options : permet de visualiser et modifier les propriétés générales de la macro (nom, raccourci, description)

## Les avantages et les inconvénients de l'enregistreur
### Les avantages

* Méthode simple ne nécessitant pas une connaissance parfaite de la syntaxe du code VBA et des objets EXCEL
* Simplicité d'utilisation (principe de magnétophone qui enregistre toutes les actions pendant un temps donné)
* Apprentissage rapide de la syntaxe du code VBA et des objets EXCEL (grâce au codage VBA automatique du magnétophone)
* Apprentissage de la programmation VBA cohérente et utilisable sur toutes les applications d'office

### Les inconvénients

* L'enregistreur de macro-commandes ne traduit que les opérations réalisées par l'utilisateur, il ne résout pas lui-même tous les besoins de programmation (boucles, conditions, ...) ceci implique des actions complémentaires à coder dans l'environnement VBE
* L'enregistreur de macro-commandes est parfois prolixe, voire trop bavard, il lui arrive d'écrire plus de lignes de code VBA que ce qu’il n'en faudrait
* Les programmes VBA sont sujets comme tout logiciel aux erreurs (bogues) qui peuvent entrainer des dysfonctionnements de l’application hôte
* Les macros VBA ne peuvent être utilisées sans l’application sous laquelle elles sont développées

## Cas pratique

Dans le cas présent, il s'agit juste de changement d'affichage sur la police de caractère
Voici l'énoncé :
* Créer une nouvelle macro-commande : Actionner le bouton nouvelle macro
* Nommer la macro mGraisserEtSouligner, la commenter
* Démarrer le magnétophone : Actionner le bouton d'enregistrement
* Enregistrer vos actions : Sur la feuille Excel graisser et souligner la cellule sélectionnée
* Arrêter le magnétophone : Actionner le bouton de fin d'enregistrement
Dans le cas présent, l'enregistreur magique a enregistré ceci dans l'environnement VBE