École Supérieure De Commerce Marrakech Macros en VBA / Excel Pr. Ahmed OUIDDAD a. ouiddad@supdeco. ma ouiddad. ahmed@gmail. com ANNEE UNIVERSITAIRE 2014- 2015 Introduction • Une macro est cons d’instructions qui co or 12 Sni* to View d’exécuter certaines t ches bien d finies. Ces instructions sont écrites en Visual Basic dans des feuilles spéciales appelées Modules. • Excel contient un Enregistreur de macros qui crée le code Visual Basic à votre place. Il enregistre les actions que vous exécutez et les commandes que vous choisissez pendant que vous utilisez Excel.
Ensuite, il vous permet de ire ou d’exécuter la macro et de reproduire ainsi automatiquement actions pour objectif démontrer comment créer une macro commande. Il s’agit de changer la couleur de fond de cellules. Elle ne comporte qu’une seule commande. Vous pourrez ensuite créer vos propres « macros » et insérer autant de commandes qu’il est nécessaire. Création d’une macrocommande • Écrivez les chiffres suivants dans les cellules respectives. Placez le pointeur sur la cellule Al . • Il faut mettre le pointeur à l’endroit où vous voulez commencer votre « macro – Dans le menu Outils, sélectionnez l’option Macro.
Sélectionnez l’option nouvelle macro. • une nouvelle fenêtre s’ouvrira vous demandant de l’information sur cette nouvelle macro. En autre, elle vous demande le nom que vous voulez donner à la macro. Aussi vous pouvez avoir une touche raccourcie pour exécuter cette macro plus tard. Pour l’exécuter, il faudra appuyer sur les touches Ctrl et la lettre que vous avez décidée. La touche raccourcie n’est pas obligatoire. • La fenêtre vous demande si vous voulez enregistrer la macro dans ce classeur ou dans un autre. Il vous est possible de « réutiliser » les macro-commandes dans un classeur de macros personnelles.
Une même macro peut donc être utilisée dans plusieurs classeurs. Pour l’exercice: 12 qu’affichées cidessus. – Appuyez sur le bouton OK. Toutes les actions que vous allez faire jusqu’à ce que vous arrêtiez l’enregistrement seront ajoutées à la macrocommande. • Au moment où vous appuyez sur le bouton OK, la fenêtre disparaît et une petite barre d’outils apparaît à son tour. Celleci n’a que deux boutons. Le premier est pour arrêter l’enregistrement de la macro. Le second est pour activer ou désactiver l’enregistrement de la macro avec ou sans position relative.
Ceci peut être important selon le type de macro que ous voulez accomplir. Il y aura plus de détails sur cette option un peu plus loin sur cette page. • Appuyez sur le second bouton pour vous assurer que l’option relative est activée. (C’est important pour cette démonstration). – Faites un bloc des cellules Al à Cl. – Appuyez sur le bouton de remplissage de fond et sélectionnez la couleur de votre choix. • Appuyez sur le premier bouton pour arrêter l’enregistrement de la macro. OU • Dans le menu Outils, sélectionnez les options Macro et Arrêter l’enregistrement. ?? La macro-commande est maintenant terminée. Il est temps de voir s’il est possible e répéter cette macro. – Placez le pointeur sur la PAGF 19 Ily a quelques explications, si cela n’a pas fonctionné. Vous avez oublié d’activer l’option de position relative mentionnée plus haut. Excel répète donc la macro au même endroit au lieu de la commencer ? l’endroit où se trouve le pointeur. Parce que l’option de position relative a été activée, il est possible d’exécuter et d’appliquer une macro à un autre endroit que celle où elle a été créée.
Il suffit de mettre le curseur où on a besoin de la macro et de l’activer. Si cette option n’est pas activée, la macro va toujours s’exécuter au même endroit. Vous pouvez aussi avoir un message d’erreur 1004. Généralement, c’est parce que vous n’avez pas placé le pointeur à la cellule Al avant de commencer la macro-commande. Il sera donc nécessaire de modifier la macro. Comment attacher une macro commande à un bouton ? • Il est parfois très intéressant de pouvoir exécuter des macro-commandes simplement en appuyant sur un bouton ; encore lus si vous laissez votre classeur 9 Ahmed OUIDDAD ahmed. uiddad@edu. uca. ma 2012-2013 But du cours Maitriser Excel Savoir réaliser des macros sous Excel Sinitier à la programmation Comprendre le langage Visual Basic for Applications (VBA) ?? (réaliser un projet Excel complet) Les principa es fenêtres de VBE L’EDITEUR DE MACRO 1 . Fenêtre VBAProject. Elle présente les différents projets ouverts et permet de naviguer facilement entre vos différentes feuilles de codes VBA. 2. Fenêtre Code. Cest l’endroit ou vous allez saisir votre code VBA. 3. Fenêtre propriétés. ropriétés de l’objet sélectionné. 4. Fenêtre Exécution. Elle permet de tester une partie du code. Elle peut s’avérer très utile pour voir comment s’exécutent certaines li nes de code. PAGF s 2 votre macro Associer une macro à un bouton Sélectionnez le bouton du menu formulaire Dessinez un bouton Choisissez la macro Appuyez sur le bouton ! Exercice : Associez la macro « bleu » à un bouton Associer à une image Insérez une image Bouton droit : affecter un macro Sélectionnez votre macro Cliquez sur l’image pour activer Exercice .
Associez bleu à une image Visual Basic Editor Excel permet de : • Visualiser, • Modifier, • Ou écrire des macros VBA/ExceI • On copie ce qu’il ya à droite, on le met ? gauche DIFFERENT DE ( = ) MATHEMATIQUE • On peut mettre un calcul à droite (le calcul est réalisé avant la copie) Exemple Exemple de macro On met 10 dans Al et on exécute cette macro Sub Ranget’31 = Cells(l cells(l range(« A1 « ) range(« A1 « )-20 End sub • Que contiendra la cellule Al ?
Associer à un raccourci clavier Deux solutions • • A la création, choisissez votre raccourci Ou bien : • Allez dans Outils/Macro/Macros • Choisissez votre macro • Allez dans Options Associez bleu à CTRL + MA] + B Les variables Une variable est une « case mémoire » temporaire • Même fonctionnement qu’une cellule, mais reste en mémoire (invisibl 7 2 votre nom ? « ) = nom recopiez et testez Petite remarque.. Attention : Le résultat d’InputBox est du texte x = inputbox(« rentrez votre age ») Le résultat sera : « 22 » et non pas 22 ! our avoir la valeur numérique x = val(inputbox(« rentrez votre age »)) Le débuggeur Utile pour repérer les erreurs (bugs) dans une macro. Permet de • Exécuter une macro pas à pas • Voir le contenu des variables • Et plus… Exécuter pas à pas • Aller dans l’éditeur • Se placer dans la macro à exécuter • Allez dans déboggage/pas à pas détaillé (FB) pour avancer d’un pas Voir le contenu d’une variable On utilise pour cela des espions • Cliquer sur la varlable avec le bouton droit • Sélectionner ajouter un espion Lors de l’exécution pas à pas, le contenu de la ariable est affiché. es conditions 9 nom = Cells(numero_ligne, 1) prenom Cells(numero_ligne, 2) age = 3) ‘Boîte de dialogue MsgBox nom & i’ & prenom & i’, » & age & ‘ End If End Sub les boucles • Les boucles permettent de répéter des instructions un certain nombre de fois, ce qui peut être un gain de temps considérable. cells(2, l) = 2 Cells(5, 1) = 5 cells(6, 1) = 6 Cells(8, 1) = 8 ans’ Le code suivant numérote les cellules de la colonne A (de la ligne Sub boucle_while() Cells(l, Cells(3, cells(4, ce115(7, cells(9, 1)-3 Cells(10, 1) = 10 cellS(1 1, 1) instructions sont exécutées au moins une fois :
Sub boucle_do_while() Do ‘Instructions Loop While [condition] La boucle : Do Loop Plutôt que de répéter la boucle tant que la condition est vraie, il possible de quitter la boucle lorsque la condition est vraie en remplaçant While par until : • Sub boucle_do_while() Do Until [condition] Loop Quitter une boucle prématurément Dim max_boucles As Integer max_boucles = « ) ‘En Al de la boucle est définie For i = 1 To 7 ‘Boucles prévues : 7 : une limite de répétitions If i > max boucles Then ‘Si Al est vide ou contient un nombre < 7, diminution du nb de boucles Exit For 'Si condition vraie, on quitte la boucle For