15
TRAVAUX PRATIQUES AVEC EXCEL 2007 ET EXCEL 2010 @ 1 Travaux pratiques avec Excel 2007 et Excel 2010 S uppléments pour apprendre à utiliser les macros : rédaction, édition et enregistrement d’une macro ou d’une fonction, exécution à l’ouverture d’un classeur… Prérequis au travail avec les macros Enregistrement d’une macro Faciliter l’exécution d’une macro Exécuter une macro lors de l’ouverture du classeur Édition d’une macro Rédaction d’une macro Rédaction d’une fonction TP 53 TP 54 TP 55 TP 56 TP 57 TP 58 TP 59 © DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

  • Upload
    lenga

  • View
    214

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

Tra

va

ux

pr

aTi

qu

es a

vec

ex

cel

20

07 e

T e

xc

el 2

010

@1

Travaux pratiques avec Excel 2007 et Excel 2010

S uppléments pour apprendre à utiliser les macros : rédaction, édition et enregistrement d’une macro ou d’une fonction, exécution à l’ouverture d’un classeur…

Prérequis au travail avec les macros

Enregistrement d’une macro

Faciliter l’exécution d’une macro

Exécuter une macro lors de l’ouverture du classeur

Édition d’une macro

Rédaction d’une macro

Rédaction d’une fonction

Tp53

Tp54

Tp55

Tp56

Tp57

Tp58

Tp59

9782100553952-Lemainque-SuppWeb.indd 1 26/01/2011 15:45:07

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 2: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

@2

Tp

53

Excel permet depuis longtemps de créer ses propres commandes, évitant d’avoir à exécuter chaque mois une dizaine de manipulations pour créer le même rapport et l’imprimer automatiquement… Cela s’effectue en créant une

macro : un mini-programme qui exécute une tâche répétitive. Les macros ou procédures , sont écrites dans un langage de programmation spécifi que, Visual Basic pour Application, ou VBA.

Il n’est heureusement pas nécessaire d’être programmeur pour créer une macro, car Excel est doté d’un enregistreur de macros. Il fonctionne un peu à la manière d’un magnétophone, enregistrant des appuis sur des touches et des actions à la souris. Avant de pouvoir travailler avec des macros, quelques préliminaires sont nécessaires. L’onglet Développeur, indispensable au travail avec les macros, n’est pas affi ché par défaut. Si un groupe Macros est disponible à l’extrême droite de l’onglet Affi chage, même si l’onglet Développeur n’est pas visible, ses fonctionnalités restent plus limitées que celles de l’onglet Développeur : mieux vaut affi cher cet onglet lors du travail avec les macros.

Prérequis au travail avec les macros

1Cliquez sur l’onglet Fichier. Cliquez sur Options, puis cliquez sur la catégorie Personnaliser le Ruban.

3Le ruban comporte désormais un nouvel onglet Déve-loppeur. Dans celui-ci, dans le groupe Code, cliquez sur l’option Sécurité des macros . Conservez le réglage par

défaut, Désactiver toutes les macros avec notification, qui désactive les macros tout en activant les alertes de sécurité. Vous pourrez ainsi choisir d’activer ces macros au cas par cas. Cliquez sur OK.

Les modifications apportées ici le sont à Excel de façon générale et non à un classeur particulier. Elles resteront actives tant que vous ne les modifierez pas.

2Si l’onglet Développeur n’apparaît pas dans la liste des onglets principaux, sous Personnaliser le Ruban , dans la liste Onglets principaux, cliquez sur Développeur, puis

Prérequis : TP 46Fichier employé : TP46.xlsx ou TP47_début.xlsxTemps de réalisation : 10 minutes

cliquez sur Ajouter. S’il y est déjà présent, cochez sa case. Cliquez sur OK.

9782100553952-Lemainque-SuppWeb.indd 2 26/01/2011 15:45:08

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 3: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

Tra

va

ux

pr

aTi

qu

es a

vec

ex

cel

20

07 e

T e

xc

el 2

010

@3

Enregistrement d’une macro

Tp

54

L’enregistreur de macros Excel enregistre toutes vos actions au clavier ou avec la souris dans une macro.

1Ouvrez si nécessaire un nouveau classeur et enregistrez-le sous le nom TP54.xlsx. Sélectionnez la cellule A1.

2Dans le groupe Code de l’onglet Développeur, cliquez sur Enregistrer une macro. Cela ouvre la boîte de dialo-gue Enregistrer une macro.

Prérequis : TP 53Fichier employé : néantTemps de réalisation : 5 minutes

3Saisissez AjustCol dans la zone Nom de la macro.

Un nom de macro peut contenir des lettres, des chiffres, le caractère de soulignement, mais jamais d’espace. Il doit com-mencer par une lettre et sa longueur ne doit pas dépasser 64 caractères. Préférez des noms courts et évocateurs.

4Affectez ensuite un raccourci clavier à la macro. Dans la zone Touche de raccourci précédée de Ctrl+, appuyez sur la touche MAJ puis sur la touche A. Vous voyez ap-

paraître Ctrl+SHIFt, avant la lettre A dans la zone.

Un raccourci clavier de macros prend le pas sur ceux du pro-gramme. Généralement, la plupart des combinaisons de touches Ctrl+lettre sont déjà affectées. Mieux vaut retenir Ctrl+Maj+lettre afin d’éviter toute confusion.

9782100553952-Lemainque-SuppWeb.indd 3 26/01/2011 15:45:08

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 4: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

@4

TP 53 • Prérequis au travail avec les macros

5Dans la zone de liste déroulante Enregistrer la macro laissez la valeur par défaut Ce classeur. Saisissez dans la boîte Description le bref descriptif suivant : Ajuste-

ment de la largeur des colonnes. Cliquez sur OK pour fer-mer cette boîte de dialogue.

Vous voyez dans la barre d’état apparaître le bouton « Une macro est en cours d’enregistrement. Cliquez ici pour arrêter l’enregis-trement. »

Excel peut également stocker une macro dans Classeur de macros personnelles (un classeur masqué qui s’ouvre automati-quement au lancement d’Excel, sans être toutefois visible, et dont les procédures accessibles à l’ouverture de tout classeur, quel qu’il soit) ou dans un nouveau classeur (cette option, rarement employée, sert surtout lorsque la macro crée elle-même un nou-veau classeur).

6Effectuez chronologiquement les tâches suivantes :

1. Appuyez sur Ctrl+A pour sélectionner la totalité du tableau.

2. Dans le groupe Cellules de l’onglet Accueil, choisissez Format > Ajuster la largeur de colonne.

3. Sélectionnez la cellule A1 dans la feuille courante.

4. Arrêtez l’enregistrement de la macro, en cliquant sur le bouton Arrêt de l’enregistrement ou sur Arrêter l’enregistrement dans le groupe Code de l’onglet Développeur.

Il est facile d’oublier qu’un enregistrement est en cours. Celui-ci se poursuivant jusqu’à son arrêt explicite, il est capital que vous arrêtiez l’enregistrement dès que les tâches à enregistrer sont accomplies. Si vous avez oublié d’arrêter l’enregistrement d’une macro à temps, vous n’avez pas à tout enregistrer à nouveau : il suffira d’éditer la macro et de supprimer les actions superflues.

7Enregistrez le classeur en cliquant sur le bouton Enregis-trer, dans la barre d’outils d’accès rapide.

Mieux vaut toujours enregistrer un classeur qui contient une macro avant de la tester. Si celle-ci contient des erreurs, vous ris-queriez en effet de perdre des données lors de son exécution. Dans un tel cas, fermez le classeur sans l’enregistrer, puis rouvrez-le, ce qui restaurera les données d’origine.

8Une boîte de dialogue s’affiche, signalant que si vous enregistrez le classeur sous ce format, la macro sera per-due. Cliquez sur Non.

9Dans la boîte de dialogue Enregistrer sous qui s’ouvre, sélectionnez le type de fichier Classeur Excel (prenant en charge les macros (*.xslm), puis cliquez sur Enregistrer.

Les macros VBA sont malheureusement susceptibles de contenir des virus. Pour tenter de vous prémunir contre ce danger, les fi-chiers Excel enregistrés au format .xlsx que nous avons employé jusqu’ici ne peuvent pas contenir de macros. Seul un fichier dont l’extension de nom de fichier est .xlsm peut contenir des macros.

9782100553952-Lemainque-SuppWeb.indd 4 26/01/2011 15:45:08

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 5: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

Tra

va

ux

pr

aTi

qu

es a

vec

ex

cel

20

07 e

T e

xc

el 2

010

@5

TP 53 • Prérequis au travail avec les macros

10Saisissez dans la cellule B2 le texte anticonstitution-nellement. Le contenu de la cellule excède la largeur de la colonne.

11Sélectionnez dans le groupe Code de l’onglet Déve-loppeur l’option Macros (ou appuyez sur F8), puis sélec-tionnez dans la boîte de dialogue la macro AjustCol.

Cliquez sur Exécuter.

12La largeur de la colonne B s’ajuste automatiquement, et le texte saisi s’affiche maintenant dans son intégralité. La cellule A1 est la cellule active.

Vous auriez également pu employer le raccourci clavier de la macro, Ctrl+Maj+A.

En sélectionnant comme vous l’avez fait ici une cellule ou une plage avant de lancer l’enregistrement, le processus de sélection n’est pas enregistré dans la macro. Celle-ci s’exécute sur ou à partir de la zone active : c’est une macro relative.

Les macros relatives sont souvent plus polyvalentes. En sélection-nant en revanche une zone ou une cellule précise après avoir lancé l’enregistrement, la macro appliquera vos instructions à ou à partir de cette cellule ou plage précise, sans modification pos-sible : c’est une macro absolue. Procédez ainsi lorsque vous vou-lez absolument que la macro affecte une cellule précise, comme placer une date dans la cellule A1.

Enregistrez et fermez le fichier TP54.xlsm.

9782100553952-Lemainque-SuppWeb.indd 5 26/01/2011 15:45:09

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 6: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

@6

Faciliter l’exécution d’une macro

Tp

55

Vous pouvez exécuter une macro de plusieurs façons : en la sélectionnant dans une liste, dans la boîte de dialogue Macros ou par un raccourci clavier, comme dans le TP précédent, en l’attachant à un bouton de la barre d’outils

Accès rapide, en l’attachant à un groupe du Ruban, en l’affectant à un objet graphique ou en en l’affectant à un événe-ment. Chaque méthode possède ses avantages et ses inconvénients.

Nous allons examiner ici comment ajouter une macro à différents éléments de l’interface ou à un objet graphique de feuille de calcul.

1Ouvrez le fichier TP55_début.xlsm. Une boîte d’avertis-sement s’affiche. Cliquez sur Activer le contenu.

Avec le réglage de sécurité préconisé, lorsque vous ouvrez un classeur contenant des macros, Excel affiche un message d’aver-tissement . N’activez le contenu que si vous êtes certain de la provenance du classeur !

2Cliquez dans la barre d’outils accès rapide sur le bouton Personnaliser la barre d’outils Accès rapide, et choisissez dans la liste Autres commandes.

3La boîte de dialogue Options d’Excel s’ouvre sur la page Barre d’outils accès rapide. Vous auriez pu parvenir à cette page en cliquant sur l’onglet Fichier, puis sur Op-

tions et enfin sur Barre d’outils Accès rapide. Cliquez sur la flèche de la liste Choisir les commandes dans les catégories suivantes et sélectionnez Macros.

Prérequis : TP 53 et 54Fichier employé : TP55_début.xlsmTemps de réalisation : 5 minutes

9782100553952-Lemainque-SuppWeb.indd 6 26/01/2011 15:45:09

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 7: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

Tra

va

ux

pr

aTi

qu

es a

vec

ex

cel

20

07 e

T e

xc

el 2

010

@7

TP 55 • Faciliter l’exécution d’une macro

4Dans la liste, cliquez sur la macro AjustCol, puis sur Ajouter. Pour modifier l’image du bouton de la macro, sélectionnez la macro dans la zone où elle a été ajoutée,

puis cliquez sur Modifier.

5Dans la boîte de dialogue Bouton Modifier qui s’ouvre, cliquez sur l’image de la balance (la dernière de la troi-sième ligne). Pour modifier le nom de la macro qui s’af-

fiche lorsque vous positionnez le pointeur sur le bouton, dans la zone Nom complet, saisissez Ajuster les colonnes. Cliquez deux fois sur OK pour fermer les deux boîtes de dialogue.

6Le bouton de macro est désormais présent dans la barre d’outils accès rapide. Vous pouvez désormais cliquer dans celle-ci sur le bouton pour exécuter la macro.

Avec Excel 2010, vous pouvez également placer un bouton pour votre macro dans le ruban : dans un groupe existant, dans un nouveau groupe dans un onglet existant ou dans un nouveau groupe dans un nouvel onglet.

6Effectuez un clic droit sur le ruban (n’importe où) et choisissez Personnaliser le Ruban. La boîte de dialogue Options d’Excel s’ouvre sur la page Personnaliser le ru-

ban. Remarquez que le menu permet de personnaliser égale-ment la barre d’outils accès rapide, et que vous pourriez tout aussi bien choisir Fichier, puis Options et Personnaliser le Ruban.

7Dans la partie de droite, sélectionnez l’onglet Accueil et cliquez sur Nouveau groupe. Cliquez sur Renommer et donnez comme nom Macros au nouveau groupe.

Vous pourriez cliquer sur Nouvel onglet pour créer un nouvel onglet.

9782100553952-Lemainque-SuppWeb.indd 7 26/01/2011 15:45:09

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 8: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

@8

TP 55 • Faciliter l’exécution d’une macro

9Cliquez sur la feuille Feuil2, puis sélectionnez le bouton. Effectuez un clic droit sur celui-ci, puis cliquez sur Affec-ter une macro.

10Double-cliquez sur la macro ou entrez son nom dans le champ Nom de la macro.

Il suffira désormais de cliquer sur le bouton pour exécuter la macro AjustCol.

Saisissez différents textes dans des cellules, et testez les différents moyens d’exécuter la macro. Une fois convaincu, enregistrez et fermez le classeur TP55.xlsm.

8Le groupe cible étant sélectionné dans le volet de droite, cliquez sur la flèche de la zone déroulante Choisir les commandes dans les catégories suivantes, sélectionnez

Macros, puis suivez les étapes précédentes 4 et 5. Cliquez deux fois sur OK pour ajouter le bouton de macro au groupe sélec-tionné et revenir à Excel.

Le nouveau groupe et le bouton de macro sont affichés dans le ruban.

Une autre méthode d’exécution est via un objet graphique. C’est généralement un bouton, mais vous pouvez affecter une macro à un quelconque objet graphique (image, une image clipart, une forme ou un SmartArt) et même à une zone définie d’un objet graphique, offrant ainsi d’immenses possibilités.

9782100553952-Lemainque-SuppWeb.indd 8 26/01/2011 15:45:10

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 9: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

Tra

va

ux

pr

aTi

qu

es a

vec

ex

cel

20

07 e

T e

xc

el 2

010

@9

Exécuter une macro lors de l’ouverture du classeur

Tp

56

Il est fréquent de vouloir exécuter automatiquement une procédure à l’ouverture d’un classeur.

1Ouvrez un nouveau classeur, et enregistrez-le comme classeur prenant en charge les macros sous le nom TP56.xlsm.

2Sous l’onglet Développeur, dans le groupe Code, cliquez sur Enregistrer une macro. Dans la zone Nom de la macro, tapez Auto_Open. Laissez le paramètre Enre-

gistrer la macro dans à sa valeur par défaut Ce classeur. Cliquez sur OK.

Prérequis : TP 53 et 54Fichier employé : néantTemps de réalisation : 5 minutes

3Exécutez les actions suivantes :

Sélectionnez la cellule A1. Entrez la formule =AUJOURDHUI(), puis appuyez sur ENtrÉE ou taB.

Sélectionnez à nouveau la cellule A1, puis dans l’onglet Accueil, dans le groupe Police, cliquez sur le bouton Gras. Dans le groupe Alignement, cliquez sur le bouton Centrer.

4Cliquez sur la feuille Feuil2, cliquez sur la cellule C3, enregistrez le classeur TP56.xlsm, fermez-le puis ou-vrez-le à nouveau. Le message d’avertissement de sécu-

rité de macro s’affiche : cliquez sur Activer le contenu.

La date du jour apparaît dans la cellule A1 de Feuil2 et le curseur se place en C6. En toute honnêteté, cette macro n’est guère utile, mais il ne s’agit que d’un exemple de création de macro s’exécu-tant automatiquement à l’ouverture d’un classeur.

Le fonctionnement d’une macro Auto_Open est toutefois soumis aux contraintes suivantes :

Si le classeur dans lequel vous enregistrez la macro Auto_Open contient déjà une procédure VBA dans son événement Open, cette dernière remplace la macro Auto_Open.

Une macro Auto_Open s’exécute avant l’ouverture des autres classeurs.

Si ces contraintes vous posent problèmes, plutôt que d’enregis-trer une macro Auto_Open, vous devez créer une procédure VBA pour l’événement Open : un sujet qui dépasse la portée de ce livre.

Fermez le classeur TP56.xlsm. Répondez non au message qui signale que le classeur a été modifié et propose de l’enregistrer.

Sélectionnez la cellule C6.

Sous l’onglet Développeur, dans le groupe Code, cliquez sur Arrêter l’enregistrement (ou cliquez sur le bouton Arrêter l’enregistrement en bas à gauche de la barre d’état).

9782100553952-Lemainque-SuppWeb.indd 9 26/01/2011 15:45:10

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 10: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

@10

Édition d’une macroTp

57

Vous avez pour le moment vu comment enregistrer une macro (ou plusieurs), mais n’avez guère d’idée de ce qui se cache derrière. Il est toujours intéressant d’examiner les macros enregistrées, pour éventuellement les modifi er.

Plusieurs raisons peuvent vous pousser à vouloir modifi er une macro : corriger un texte mal saisi pendant l’enregis-trement, supprimer une commande inutile accidentellement enregistrée, modifi er une valeur enregistrée, supprimer une commande devenue inutile, ou simplement souhaiter pouvoir reproduire telle ou telle commande dans une macro que vous souhaitez rédiger.

1Ouvrez le fichier TP57_début.xlsm, choisissez d’en acti-ver le contenu, puis enregistrez-le sous le nom TP57.xlsm. Choisissez dans le groupe Code de l’onglet Déve-

loppeur l’option Macros, ou appuyez sur les touches Alt+F8.

3La macro sélectionnée s’ouvre dans l’Éditeur Visual Basic. .

Vous pouvez afficher directement l’Éditeur Visual Basic en cli-quant dans l’onglet Développeur sur Visual Basic, ou en appuyant sur les touches alt+F11.

La macro apparaît dans la fenêtre principale de l’éditeur, la fe-nêtre Code . C’est cette fenêtre que vous utiliserez le plus souvent dans l’éditeur. Pour comprendre le code de cette très simple macro, vous devez connaître quelque peu le langage de pro-grammation VBA.

Nous n’entrerons pas dans le détail, ce livre n’y aurait pas suffi. Toute macro est constituée d’instructions , que vous pouvez édi-ter comme vous le faites avec un traitement de texte. Connaître toutefois un peu l’anglais est indispensable pour déchiffrer le sens de la plupart des instructions, celles-ci, contrairement aux fonc-tions intégrées employées depuis une feuille de calcul, étant ici exclusivement en version originale anglaise.

2Sélectionnez la macro AlignCol dans la liste Noms des macros, puis cliquez sur Modifier.

Prérequis : TP 53 à 56Fichier employé : TP57_début.xlsmTemps de réalisation : 5 minutes

9782100553952-Lemainque-SuppWeb.indd 10 26/01/2011 15:45:10

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 11: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

Tra

va

ux

pr

aTi

qu

es a

vec

ex

cel

20

07 e

T e

xc

el 2

010

@11

TP 57 • Édition d’une macro

4Examinez le code : comme vous le voyez une macro enregistrée débute par l’instruction Sub, suivi du nom de la macro lui-même suivi de deux parenthèses, et se

termine par End Sub. Sub est l’abréviation de sous routine, un terme de programmation équivalent ici à celui de procédure. La macro sélectionne la totalité des cellules (Cells.Select), applique à la sélection la commande Ajustement automatique de la largeur des colonnes (Selection.Columns.Auto-fit) puis sélectionne la cellule A1 (Range("A1").Select) et prend fin.

Examinez si vous le souhaitez les autres sous routines, puis fer-mez l’Éditeur Visual Basic.

5Testez les boutons figurant sur la feuille Zendikar. Re-marquez que le deuxième bouton, Ajuster la hauteur des lignes, est inactif. Activez la feuille Feuil1 et exécutez

la macro DateNom. Retournez si nécessaire à l’examen des macros pour voir son code.

Cela fait, refermez si nécessaire l’éditeur Visual Basic et enregis-trez le classeur TP547.xlsm. Fermez-le si vous ne poursuivez pas immédiatement avec le TP suivant.

Remarque : pour examiner une macro stockée dans le Classeur de macros personnelles, vous devrez afficher ce dossier avant de pouvoir l’éditer. Pour cela, choisissez l’option Afficher du groupe Fenêtres de l’onglet Affichage, choisissez Personal.xlsb dans la boîte de dialogue Afficher, puis cliquez sur OK.

9782100553952-Lemainque-SuppWeb.indd 11 26/01/2011 15:45:11

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 12: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

@12

Rédaction d’une macroTp

58

Lors de la rédaction d’une macro, il est souvent intéressant de se fonder soit sur une macro préexistante, soit sur une macro enregistrée.

Prérequis : TP 53 à 56Fichier employé : TP57.xslm ou TP58_début.xlsmTemps de réalisation : 5 minutes

1Ouvrez le classeur TP57.xslm ou TP58_début.xlsm et enregistrez-le sous le nom TP58.xlsm. Choisissez dans l’onglet Développeur (ou dans l’onglet Affichage) l’icône

Macros, ou appuyez sur alt+F8.

2Dans la zone Nom de la macro, nommez cette procé-dure AjustLig, puis cliquez sur Créer. L’éditeur de macro s’ouvre, affichant la nouvelle procédure.

Un nom de procédure doit commencer par une lettre et peut contenir des lettres, des chiffres, ainsi que le caractère de souligne-ment, mais pas d’espace. Excel autorise les caractères accentués.

3Vous voyez dans la fenêtre Code l’instruction Sub AjustLig immédiatement suivie sur la ligne suivante de l’instruction End Sub. Nous voulons créer une

procédure analogue à la macro AjustCol : copiez les lignes si-tuées entre Sub AjustCol() et End Sub de la macro AjustCol (attention : elle est probablement située dans un autre module : la deuxième fenêtre Code) et copiez-les entre les deux instructions de la macro AjustLig.

9782100553952-Lemainque-SuppWeb.indd 12 26/01/2011 15:45:11

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 13: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

Tra

va

ux

pr

aTi

qu

es a

vec

ex

cel

20

07 e

T e

xc

el 2

010

@13

TP 58 • Rédaction d’une macro

4Le but est toutefois ici de modifier la hauteur des lignes, et non la largeur des colonnes : modifiez dans les lignes de commentaire (celles apparaissant en vert) le nom et

la description de la macro, supprimez la ligne concernant le rac-courci clavier, placez le curseur juste après Selection. et remplacez Columns.Autofit par Rows.Autofit.

5Dans l’éditeur Visual Basic, cliquez sur Enregistrer, puis fermez l’éditeur. Dans la feuille de calcul, effectuez un clic droit sur le bouton rouge Ajuster les lignes et choisis-

sez Affecter une macro. Choisissez dans la liste la macro AjustLig, puis cliquez sur OK.

6Cliquez ensuite sur le bouton Ajuster les lignes : la hau-teur des lignes s’ajuste.

Enregistrez et fermez le classeur TP58.xlsm.

9782100553952-Lemainque-SuppWeb.indd 13 26/01/2011 15:45:11

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 14: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

@14

Rédaction d’une fonctionTp

59

Outre une procédure, vous pouvez écrire une fonction personnalisée, ensuite disponible dans n’importe quelle feuille de calcul du classeur qui la contient (ou dans tous les classeurs si vous avez enregistré la fonction dans

votre Classeur de macros personnelles).

Prérequis : TP 53 à 58Fichier employé : TP59_début.xlsmTemps de réalisation : 5 minutes

1Ouvrez le classeur TP59_début.xlsm et enregistrez-le sous le nom TP59.xlsm. Choisissez dans l’onglet Déve-loppeur (ou dans l’onglet Affichage) l’icône Visual Basic

ou appuyez sur alt+F11 pour ouvrir l’éditeur Visual Basic.

2Dans la fenêtre Code, saisissez Function VOL(a, b, c), puis appuyez sur ENtrÉE. L’éditeur ajoute automatique-ment une ligne vierge, puis en dessous l’instruction

End Function.

3Saisissez entre les deux instructions l’instruction VOL = a*b*c.

La procédure fonction VBA VOL(a, b, c) calcule le volume d’un parallélépipède rectangle dont les côtés ont pour longueur a, b et c. Le nom de la fonction est VOL, tandis qu’entre paren-thèses figurent les trois paramètres, ou arguments, attendus par la fonction.

4Dans l’éditeur Visual Basic, cliquez sur Enregistrer, puis choisissez dans le menu Fichier l’option Fermer et re-tourner à Microsoft Excel.

5Dans la cellule D7 de la feuille Fonction, saisissez =VOL(D8;E8;F8). (Si un message d’erreur apparaît dans la cellule, enregistrez le classeur TP59 puis ouvrez-

le à nouveau en activant son contenu).

Dans les cellules D8, E8 et F8, saisissez respectivement 4,5 et 6 (vous pourriez saisir n’importe quels nombres positifs).

Vous voyez apparaître dans les cellules D6 et D7 le résultat, cal-culé respectivement par une formule « classique » et à l’aide de la fonction que vous venez de créer.

D’accord, cette fonction ne présente pas un grand intérêt : il est plus long de saisir dans une cellule =VOL(a;b;c), avec ses onze caractères (au minimum), que de saisir les six caractères de =a*b*c. Que vous remplaciez a, b et c par des références ou des variables n’y changera rien.

9782100553952-Lemainque-SuppWeb.indd 14 26/01/2011 15:45:11

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque

Page 15: Travaux pratiques Excel 2007 et 2010 - medias.dunod.commedias.dunod.com/document/9782100553952/Chapitre_Macros.pdf · Cela s’effectue en créant une macro : un mini-programme qui

Tra

va

ux

pr

aTi

qu

es a

vec

ex

cel

20

07 e

T e

xc

el 2

010

@15

TP 59 • Rédaction d’une fonction

6Imaginez toutefois une fonction nettement plus com-plexe, que vous seriez amené à saisir régulièrement dans vos feuilles de calcul. Par exemple, le calcul du

nombre de jours d’un mois donné, à partir d’une date. La for-mule Excel correspondante, présente dans la cellule D10, est la suivante :

=JOUR(DATE(ANNEE(D12);SI(MOIS(D12)=12;1;MOIS(D12)+1);1)-1)

La date servant de paramètre est ici située dans la cellule D12. Cette formule n’est pas facile à mémoriser, et surtout fastidieuse à saisir dans chaque nouvelle feuille de calcul. Vous pourriez bien sûr recourir au copier-coller déjà examiné, mais mieux vaut créer une fonction personnalisée. Il suffira alors de saisir le nom de la fonction, comme avec n’importe quelle fonction intégrée.

7Affichez l’éditeur VBA en appuyant sur F11. Sous l’ins-truction End Function de la fonction VOL, saisissez ce qui suit :

function NbJours(datecomplete)

NbJours = day(dateserial(year(datecomplete), iif(month(datecomplete) = 12, 1, month(datecomplete) + 1), 1) - 1)

end function

Saisissez toujours vos instructions en minuscules. Cela permet de détecter les erreurs au cours de la frappe. Lors du passage à la ligne suivante, l’éditeur met en majuscule une lettre au moins de chacun des mots de la ligne, pour peu que vous les ayez tapés correctement. Il mettra aussi en majuscules les noms des va-riables et des constantes. Si rien de tel ne se produit, vérifiez le mot en question. Est-il correctement orthographié ? S’agit-il véri-tablement d’un objet, d’une méthode, d’une propriété ou d’une fonction du langage ?

Comme vous le remarquez certainement, cette formule diffère largement de celle saisie dans une cellule de feuille de calcul. Les noms de toutes les fonctions intégrées ont été transformées en anglais (JOUR devient DAY et MOIS se transforme en MON-TH), certains étant même plus profondément modifiés : DATE devient DATESERIAL et SI devient IIf.

VBA est fondé sur l’anglais et n’est pas localisé, comme le sont les noms des fonctions intégrées dans une feuille de calcul. Vous constaterez la même chose avec la plupart des propriétés et des objets.

Une fois la saisie terminée, cliquez sur le bouton Enregistrer de la barre d’outils Standard de l’éditeur, puis choisissez dans le menu Fichier l’option Fermer et retourner à Microsoft Excel.

8Dans la cellule D7 de la feuille Fonction, saisissez =NbJours(D12). Dans la cellule D12, saisissez 25/10/2010 (vous pourriez saisir n’importe quelle

date). Le nombre de jours du mois considéré apparaît dans les cellules D10 et D11. Testez à nouveau avec une date quelconque de février de n’importe quelle année.

Une fois une fonction créée dans l’éditeur de macros, vous pou-vez l’employer exactement comme une des fonctions intégrées d’Excel, et vous épargner ainsi une saisie laborieuse.

Enregistrez et fermez le classeur TP59.

9782100553952-Lemainque-SuppWeb.indd 15 26/01/2011 15:45:12

© DUNOD 2011 – Travaux pratiques avec Excel 2007 et 2010 – Fabrice Lemainque