C. Les macros complexes - VBA
Il est aussi possible, pour les utilisateurs avertis, de programmer des routines plus complexes et même d'utiliser Excel comme base d'une application automatisée.
L'écriture du code s'effectue à l'aide de Visual Basic pour Applications.
|
<clic g> sur la macro-commande s'affiche dans une fenêtre Visual basic |
|
<alt> f11 ouvre une fenêtre Visual Basic |
|
Il faut ici prendre garde de ne pas faire avec Excel des choses que sa structure ne lui permet pas de bien faire. Souvent, Access sera un bien meilleur outil de programmation et de structuration des données alors qu'Excel donnera toute sa puissance dans la synthèse des données sous forme de tableaux ou de graphiques |
a) OBJETS
Un objet représente un élément de l'application Excel :
un classeur une feuille de calcul |
une cellule un bouton … |
|
faire référence à la feuil2 |
|
Tous les objets de même type forment une collection (toutes les feuilles de calcul d'un classeur). Chaque élément de la collection est alors identifié par son nom ou par un index. |
Chaque objet peut avoir ses propres objets. Excel est constitué de classeurs eux-mêmes constitués de feuilles elles-mêmes constituées de cellules.
|
faire référence à la cellule a3 de la feuille 2 du classeur 1 |
b) PROPRIÉTÉS
Une propriété est propre à un objet. Ce peut être :
La valeur d'une cellule
La couleur d'une cellule
La taille d'une cellule
Les objets sont séparés de leurs propriétés par un point : Cellule.Propriété=valeur :
|
Pour mettre la valeur 1 dans la cellule A3, on peut écrire : |
Une propriété peut faire référence à un état de l'objet.
|
Pour masquer la feuille de calcul "Feuil2", on peut écrire : |
c) MÉTHODES
Une méthode est une opération que réalise un objet :
Ouvrir Fermer Sélectionner |
Enregistrer Imprimer Effacer… |
Les objets sont séparés de leurs méthodes par un point.
|
sélectionner la feuille de calcul nommé "feuil2" |
Lorsque l'on fait appel à plusieurs propriétés ou méthodes d'un même objet, on fait appel à l'instruction With Objet Instructions End With.
|
Pour mettre la valeur 1 dans la cellule A3, la police en gras et en italique et copier la cellule |
d) ÉVÈNEMENTS
Pour qu'une macro se déclenche, il faut qu'un se produise évènement. Les principaux objets auxquels un événement peut être attaché sont :
Un classeur |
Une feuille de travail |
Une boite de dialogue |
|
Le code suivant lance la procédure "essai" à l'ouverture du classeur : |
(1) LISTE DES ÉVÈNEMENTS LIES A L'OBJET WORKBOOK
activate |
Quand le classeur ou une feuille est activé |
beforeclose |
Avant que le classeur ne soit fermé |
beforeprint |
Avant l'impression du classeur |
beforesave |
Avant l'enregistrement du classeur |
deactivate |
Quand le classeur ou une feuille est désactivé |
newsheet |
Lorsqu'une nouvelle feuille est créée |
open |
À l'ouverture du classeur |
sheetactivate |
Lorsqu'une feuille est activée |
sheetbeforedoubleclick |
Lors d'un double-clic |
sheetbeforerightclick |
Lors d'un clic avec le bouton droit de la souris |
sheetcalculate |
Après le recalcul d'une feuille de calcul |
sheetchange |
Lors de la modification d'une cellule |
sheetdeactivate |
Lorsqu'une feuille est désactivée |
sheetfollowhyperlink |
Lors d'un clic sur un lien hypertexte |
sheetselectionchange |
Lors d'un changement de sélection sur une feuille de calcul |
windowactivate |
Lorsqu'un classeur est activé |
windowdeactivate |
Lorsqu'un classeur est désactivé |
La création d'une procédure évènementielle liée à une feuille de calcul est identique.
(2) LISTE DES ÉVÈNEMENTS LIES A L'OBJET WORKSHEET
activate |
Quand une feuille est activée |
beforedoubleclick |
Lors d'un double-clic |
beforerightclick |
Lors d'un clic avec le bouton droit de la souris |
calculate |
Après le recalcul de la feuille de calcul |
change |
Lors de la modification d'une cellule |
deactivate |
Quand une feuille est désactivée |
followhyperlink |
Lors d'un clic sur un lien hypertexte |
selectionchange |
Lors d'un changement de sélection |
|
le paramètre "Cancel", peut annuler la procédure |
|
Pour empêcher l'impression d'un classeur, on utilisera : |
|
Pour récupérer la valeur d'une cellule modifiée, on utilisera : |
(3) LES CLASSEURS
Un classeur est désigné par "Workbook". Les classeurs peuvent être ouverts, fermés, enregistrés, activés, masqués, supprimés ....
Ajouter un nouveau classeur |
workbooks.add |
Fermer un classeur. |
workbooks("nomduclasseur.xls").close |
Fermer le classeur actif. |
activeworkbook.close |
Ouvrir un classeur. |
workbooks.open "c:\chemin\nomdufichier.xls" |
Activer un classeur. |
workbooks("nomduclasseur.xls").activate |
(4) LES FEUILLES DE CALCUL
Une feuille de calcul est désignée par "Worksheet".
Sélectionner une feuille |
Worksheets("feuil1").select |
Récupérer le nom de la feuille active dans une variable. |
Mafeuille = activesheet.name |
Masquer une feuille. |
Worksheets("feuil1").visible = false |
Supprimer une Feuille. |
Worksheets("feuil1").delete |
Copier la Feuil2 de Classeur.xls dans un nouveau classeur |
Workbooks("classeur.xls").worsheets |
(5) LES CELLULES
Une plage de cellules est désignée par "Range".
|
Faire référence à la plage de cellule "A2:C10" : |
|
Effacer les données et la mise en forme de la plage de cellule "A1:B10" : |
|
Ouvrir le classeur "dates.xlsx" |
|
Sélectionner les plages de cellule " A2:C10" et "D3:G20" : |
Pour faire référence à une seule cellule, on utilisera l'objet Range(référence de la cellule) ou Cells(Numéro de ligne, Numéro de colonne).
|
Écrire 3 dans la cellule "A6" : |
|
Dans le classeur "dates.xlsx", |
(6) LE CONTRÔLE
Une macro peut également être lancée en cliquant sur un bouton mais aussi sur un élément graphique (image, zone de texte, objet WordArt, rectangle ...).
|
onglet "développeur" <clic g> sur <clic g> sur et dessiner le bouton |
|
Dans le classeur "dates.xlsx" |
e) CONDITIONS : IF THEN END IF
Les conditions déterminent la valeur que prennent les variables :
condition If condition Then valeur vrai
arrêter une procédure appeler une procédure |
quitter une boucle atteindre une étiquette |
Si la valeur vraie possède plusieurs lignes d'instructions, la syntaxe devient : |
f) BOUCLES : FOR NEXT
Les boucles permettent de répéter un nombre de fois défini un bloc d'instructions. Elles utilisent une variable qui est incrémentée ou décrémentée à chaque répétition.
|
À l'intérieur d'un bloc d'instruction For Next, l'instruction Exit For peut quitter la boucle avant que la variable n'est atteint sa dernière valeur |
g) BOUCLES CONDITIONNELLES: DO LOOP WHILE
La boucle Do While condition Loop exécute un bloc d'instruction tout pendant que la condition est vraie.
Dans la boucle Do Loop While condition, le bloc d'instruction est exécuté une fois avant que la condition soit testée.
|
Pour sortir d'une boucle, on utilise l'instruction Exit Do |
|
Ouvrir le classeur "base.xlsx" |
|
À partir du classeur "base.xlsm", enregistrer un classeur "conso.xlsm" |