Automatisation par les Macros Pour Excel 2007 Organisme de formation 42 Rue de Clichy 75009 Paris tel : 01 40 82 78 00 Fax : 01 42 80 61 92 Site Web : www.slti.fr - Email : info@slti.fr Page 1 /21
SOMMAIRE 1 Définition... 3 2 Champ d application... 3 3 Mise en œuvre... 3 4 Enregistrement d un classeur contenant des macros... 4 5 La sécurité des macros... 5 6 Enregistrer une macro... 8 6.1 Onglet Affichage / Macros / Enregistrer une Macro... 8 6.2 Saisir le nom de la macro... 8 6.3 Enregistrer une macro... 9 7 Exécuter une macro... 10 7.1 Par l onglet Affichage / Macros / Afficher / Afficher les macros... 10 7.2 Par la touche de raccourci... 11 7.3 Par un bouton personnalisé sur la barre d accès rapide... 11 7.4 Par un objet posé sur la feuille... 13 8 Enregistrer en absolu ou en relatif... 14 8.1 En référence absolue... 14 8.2 En référence relative... 15 9 L éditeur Visual Basic... 16 9.1 1ère Méthode... 16 9.2 2ème Méthode... 16 10 Découvrir le code Visual Basic... 19 10.1 Macro 1... 19 10.2 Macro 2... 19 10.3 Macro 3... 19 10.4 Macro 4... 20 10.5 Macro 4... 20 10.6 Macro 5... 21 Excel Automatisation par les macros Page 2 /21
1 Définition Une macro est une automatisation d un ensemble de taches traduites dans un langage appelé VBA, acronyme de Visual Basic for Applications. VBA est un langage de programmation orienté objet issu de Visual Basic. Excel dispose d'un enregistreur de macros. Quand vous actionnez l enregistreur, Excel "enregistre" vos faits et gestes, et produit le code correspondant aux actions que vous avez effectuées. Pour reproduire l'action que avez enregistrée, il vous suffit d exécuter cette macro. Lorsqu'il s'agit de faire certaines actions plus élaborées (incluant conditions et calculs spécifiques), vous devez modifier le code de votre macro avec l'outil d'édition du code VBA (Microsoft Visual Basic Editor). 2 Champ d application Exemples de taches à automatiser : Filtrer une liste selon certains critères, imprimer puis enlever les critères. Copier une partie d un tableau dans une autre feuille. Supprimer le contenu d une partie de la feuille. Intervertir les colonnes d un tableau. Appliquer ou enlever des mises en forme Les exemples sont nombreux mais font toujours appel aux mêmes manipulations. 3 Mise en œuvre Maîtriser et lister les taches à automatiser Définir un ordre logique Définir le lieu d application de la macro Enregistrer la macro Attribuer un bouton à la macro Exécuter la macro pour reproduire les actions Excel Automatisation par les macros Page 3 /21
4 Enregistrement d un classeur contenant des macros Au moment de l enregistrement du classeur par la disquette d enregistrement, cette boite de dialogue apparaît : En effet, l extension des fichiers contenant des macros n est pas.xlsx mais.xlsm. Il faudra donc cliquer sur Non et demander à Enregistrer le classeur avec un type de fichier Excel prenant en charge les macros. Le classeur Excel sera donc caractérisé par cette extension ainsi qu un point d exclamation qui indique qu il doit être manipulé avec précaution. Excel Automatisation par les macros Page 4 /21
5 La sécurité des macros A l ouverture d un classeur contenant des macros, Excel désactive par défaut les macros. Deux cas de figure peuvent apparaitre : 1. Au moment de l'ouverture du fichier, Excel affiche un message au-dessus des premières cellules : "Avertissement de sécurité : Du contenu actif a été désactivé." avec le bouton Options. Cliquer sur ce dernier et cocher la case «Activer ce contenu». 2. Le message ci-dessus n'apparaît pas. 1) Cliquer sur la bulle Office 2) Cliquer sur Options Excel Excel Automatisation par les macros Page 5 /21
3) Dans la partie Centre de gestion de la confidentialité, cliquer sur le bouton Paramètres du Centre de gestion de la confidentialité 4) Dans Paramètre des macros, cocher l'option que vous souhaitez selon les cas. Désactiver toutes les macros sans notification : Sélectionnez cette option si vous n approuvez pas les macros. Toutes les macros dans les documents et toutes les alertes de sécurité relatives aux macros sont désactivées. S il existe des documents avec des macros non signées que vous approuvez, vous pouvez placer ces documents dans un emplacement approuvé. Les documents situés Excel Automatisation par les macros Page 6 /21
dans ces emplacements peuvent s exécuter sans être vérifiés par le système de sécurité du Centre de gestion de la confidentialité. Désactiver toutes les macros avec notification : Il s agit du paramètre par défaut. Sélectionnez cette option si vous souhaitez que les macros soient désactivées, mais que les alertes de sécurité soient affichées en présence de macros. Ainsi, vous pouvez choisir d activer les macros au cas par cas. Désactiver toutes les macros à l exception des macros signées numériquement : Ce paramètre est identique à l option «Désactiver toutes les macros avec notification» mais si la macro est signée numériquement par un émetteur approuvé, la macro peut être exécutée si vous avez déjà approuvé l émetteur. Si ce n est pas encore le cas, vous recevez une notification et vous pouvez choisir d activer les macros signées ou d approuver l émetteur. Toutes les macros non signées sont désactivées sans notification. Activer toutes les macros (non recommandé ; risque d exécution de code potentiellement dangereux) : Sélectionnez cette option pour autoriser l exécution de toutes les macros. L utilisation de cette option rend votre ordinateur vulnérable au code potentiellement dangereux et elle n est donc pas recommandée. Accès approuvé au modèle d objet du projet VBA : Ce paramètre est destiné aux développeurs et sert à verrouiller délibérément ou à permettre l accès par programme au modèle d objet VBA. Excel Automatisation par les macros Page 7 /21
6 Enregistrer une macro 6.1 Onglet Affichage / Macros / Enregistrer une Macro La boite de dialogue suivante apparaît : 6.2 Saisir le nom de la macro Vous devez spécifier un nom (vous pouvez déjà commencer à donner un nom représentatif de l'objectif de la macro). Le nom doit obligatoirement être en une seule chaîne de caractères. Les espaces, les caractères génériques ainsi que les caractères accentués sont interdits. Excel Automatisation par les macros Page 8 /21
6.3 Enregistrer une macro Lieu d enregistrement de la macro dans le classeur actif (option choisie par défaut) dans un nouveau classeur dans le classeur de macros personnelles (classeur nommé personal.xlsb) où sont stockées toutes les macros que l on souhaite disponibles pour n importe quel classeur sur le disque dur) Si vous stockez la macro dans le classeur actif, elle ne s exécute que si le classeur est ouvert. Si vous stockez la macro dans le classeur de macros personnelles, elle est en permanence exécutable. Affecter une touche de raccourci clavier Attention à ne pas choisir les raccourcis clavier déjà utilisés par Microsoft. Le raccourci clavier de la macro désactive le raccourci clavier Excel. Si la Majuscule est verrouillée, il faudra utiliser le CTRL + MAJ + la lettre choisie. Associer une description pour informer de son but Cela sert essentiellement dans le code Visual Basic Cliquer sur OK. Excel Automatisation par les macros Page 9 /21
Réaliser toutes vos actions. Retourner ensuite sur l onglet Affichage et sur l icône Macros / Arrêter l enregistrement 7 Exécuter une macro Plusieurs méthodes sont possibles : 7.1 Par l onglet Affichage / Macros / Afficher / Afficher les macros La boite de dialogue suivante apparaît : Sélectionner la macro à exécuter et cliquer sur le bouton «Exécuter» Excel Automatisation par les macros Page 10 /21
7.2 Par la touche de raccourci Appuyer sur la touche CTRL et la lettre du clavier que vous aviez choisie en touche de raccourci dans la boite de dialogue de création de la macro. Si la touche Majuscule était verrouillée pendant le choix de la touche de raccourci, appuyer sur la touche CTRL + MAJ + la touche choisie. 7.3 Par un bouton personnalisé sur la barre d accès rapide Personnaliser la barre d outils Accès rapide Aller dans Autres commandes Choisir les commandes Macros Excel Automatisation par les macros Page 11 /21
Choisir la macro que l on vient de faire et cliquer sur Ajouter On peut personnaliser son bouton de macro en cliquant sur Modifier Excel Automatisation par les macros Page 12 /21
On peut alors choisir un autre icône et modifier le texte d info bulle du bouton. 7.4 Par un objet posé sur la feuille Afficher l onglet Insertion. Prendre par exemple une forme automatique et l insérer sur la feuille. L objet inséré est personnalisable, taille, couleur Sur Clic droit sur la forme insérée, on pourra affecter une macro Excel Automatisation par les macros Page 13 /21
Choisir la macro et cliquer sur OK 8 Enregistrer en absolu ou en relatif Par défaut, l enregistrement des macros est toujours réalisé en référence absolue, Absolu : Si on enregistre un déplacement de cellule, c est l adresse de la cellule d arrivée qui est enregistrée, quelle que soit la cellule initialement activée. Relatif : Si on enregistre un déplacement relatif à la cellule initialement activée, c est le déplacement (en nombre de lignes et nombre de colonnes) qui est pris en compte. Exemple d une macro enregistrée en référence absolue puis en référence relative 8.1 En référence absolue Par défaut, c est en référence absolue que la macro est enregistrée. Le bouton Utiliser les références relatives n est pas cliqué. On lance l enregistrement et on visualise le code suivant : Sub absolue() ActiveCell = "Chiffre d'affaires au :" Range("A2").Select ActiveCell = "=TODAY()" End Sub Dans la macro en absolue, c est l adresse de la cellule A2 qui est enregistrée. Les macros enregistrées en absolue font toujours référence à des cellules fixes. Excel Automatisation par les macros Page 14 /21
Cette macro ne fonctionne correctement que si la cellule A1 est active lors de l exécution. 8.2 En référence relative Pour enregistrer une macro en référence relative, il faut commencer l enregistrement en cliquant sur «Utiliser les références relatives» Puis lancer l enregistrement de la macro. On enregistre les actions que l on veut faire. On désélectionne Utiliser les références relatives On clique sur le bouton d arrêt de la macro. Sub relatif() ActiveCell = "Chiffre d'affaires au :" ActiveCell.Offset(1, 0).Select ActiveCell = "=TODAY()" End Sub Dans la macro en relatif, c est le déplacement vers la cellule du bas qui est enregistré. Les macros enregistrées en relatif peuvent faire référence à des cellules non fixes. Remarque : Si on oublie de revenir en référence absolue avant la fin de l enregistrement, les prochaines macros enregistrées le seront en référence relative ; Excel garde en mémoire la dernière référence utilisée. Excel Automatisation par les macros Page 15 /21
9 L éditeur Visual Basic Une fois la macro enregistrée, si on souhaite visualiser le code VBA, il existe deux méthodes 9.1 1ère Méthode Afficher les macros, choisir la macro à visualiser et cliquer sur Modifier 9.2 2ème Méthode Faire apparaître l onglet Développeur Aller dans le bouton Office et dans les options Excel Cocher «Afficher l onglet développeur» dans le ruban Excel Automatisation par les macros Page 16 /21
L onglet développeur permet d avoir tous les outils Macros et Visual Basic à disposition. En cliquant sur «Visual Basic», on fera apparaître la fenêtre de code. Dans les 2 cas l écran suivant apparaît : La fenêtre Projet VBA Arborescence qui contient tous les classeurs ouverts dans Excel plus le classeur personal si celui-ci contient des macros. Cette arborescence contient le nom du classeur avec un dossier Microsoft Excel Objet qui lui même contient, les onglets de feuille contenus dans le classeur, un fichier ThisWorkbook. Si le classeur contient les macros on trouve aussi un dossier Module, ce dossier module contient des feuilles. Lorsque l on double clique sur le fichier module le code visual basic s affiche dans la fenêtre module. Excel Automatisation par les macros Page 17 /21
La fenêtre propriété Contient toutes les propriétés de l objet sélectionné dans la fenêtre VBA Projet. La fenêtre code Contient toutes les macros qui ont été transcrites en VBA lors de l enregistrement automatique. A noter! Si on ferme un classeur, puis qu'on l'ouvre à nouveau pour enregistrer une nouvelle macro, elle sera dans une nouvelle feuille module de ce classeur. Si vous avez choisi d'enregistrer la macro dans : "Ce classeur" ou dans un "Nouveau classeur" alors la macro générée est insérée dans une feuille de code du type «module standard». "Le classeur de macros personnelles" alors la macro est créée à l'intérieur du classeur "Personal.xls" dans une feuille de code du type «module standard». Excel Automatisation par les macros Page 18 /21
10 Découvrir le code Visual Basic 10.1 Macro 1 Sélection d une cellule et affectation d une valeur Texte dans cette cellule S il s agit d une valeur numérique, les guillemets ne doivent pas être saisis. Ex : Range («A1»)=34 10.2 Macro 2 Sélection d une cellule et effacement du contenu de cette cellule 10.3 Macro 3 Sélection d une cellule et effacement des formats de cette cellule Excel Automatisation par les macros Page 19 /21
10.4 Macro 4 Test pour savoir si une cellule est vide ou non Dès que la cellule est sélectionnée, on peut parler de cellule active. Le test s effectue grâce à la condition suivante : If + condition à tester + Then Instructions si la condition est remplie Else Instructions si la condition n est pas remplie End if Le If et le Then doivent toujours être sur la même ligne. On peut aérer son programme en ajoutant des lignes blanches. Les instructions dans le test doivent être décalées d une tabulation afin de faciliter la lecture du programme, c est l indentation. Le Else est facultatif La fin de test est obligatoire et doit se trouver sur le même alignement que le If. 10.5 Macro 4 Excel offre la possibilité d exécuter une macro sur fermeture du classeur ainsi que sur ouverture du classeur. La macro de fermeture doit s appeler obligatoirement auto_close Apparition d une boite de dialogue, type Msgbox, qui donne un message sur fermeture du classeur. Excel Automatisation par les macros Page 20 /21
10.6 Macro 5 La macro d ouverture doit s appeler obligatoirement auto_open A l ouverture du classeur, apparition d une première boite, type Inputbox, qui demande à l utilisateur d entrer son prénom puis ouverture d une boite, type Msgbox qui dit Bonjour et qui redonne le prénom. Le prénom va être stocké dans la cellule sélectionnée au départ puis redonné dans la Msgbox grâce à l association de la chaîne de caractères «Bonjour» et du contenu de la cellule active. Excel Automatisation par les macros Page 21 /21