Vous êtes sur la page 1sur 17

VBA POUR EXCEL 97 ( VISUAL BASIC APPLICATIONS ) (

MACROS )
COURS D'INITIATION EN LIGNE
Aperçu :
Vocabulaire ; notions et recettes de base ; présentation de l'écran VBA ;
exercice pas à pas ; bascule enregistrement références absolues références
relatives ; rétablir la bascule disparue ; 10 séries d' exemples d' instructions ;
boites de dialogue ; date ; formule et valeur ; exécution automatique à
ouverture du classeur ; commande par clavier ; consolidation lexicale et
syntaxique ; tableaux récapitulatifs
Auteur : Jean Sanguinetti
Vos appréciations, vos questions ou vos remarques seront les bienvenues, c'est
gratuit ; envoyez-les moi par email (j.sanguinettichezwanadoo.fr, remplacez
chez par l'arobase, cette présentation a pour but d'éviter le spam, j'en avais une
quinzaine par jour avec mon adresse précédente).
Niveau requis :
Pour les utilisateurs courants d'Excel 97 aucune connaissance préalable n'est
requise en VBA
(retour à la page d'accueil)
Le présent cadre est à reproduire obligatoirement et intégralement sur toute diffusion partielle ou totale
de ce document
Auteur du document : Jean Sanguinetti - Reproduction autorisée et libre de droits
SOMMAIRE
1. CONVENTIONS, DEFINITIONS, TRADUCTIONS
2. PRESENTATION DE L'ECRAN VBA
2.1. Ecran N°1 - Fenêtre Projet
2.2. Ecran N°2 - ThisWorkbook - Fenêtre Code
2.3. Ecran N°3 - Saisie de la 1e macro
2.4. Ecran N°4 -Saisie de la 2e macro
2.5. Macros faites par enregistrement - Modules
2.6. Retenir les 4 points suivants
3. ELEMENTS DE BASE DES MACROS - Sub + End Sub
4. EXAMEN DU CODE VBA - Instruction, Code, Propriété, Renvoyer, Objet,
Méthode
5. VERIFICATION DES MACROS FAITES - AJOUT D'UNE COMMANDE
CLAVIER
6. ENREGISTR. DES MACROS EN COORDO. RELATIVES OU
ABSOLUES
7. INSTRUCTIONS - EXEMPLES
7.1. Sélection de lignes, de cellules, de plages - ActiveCell, Entirerow, Range,
Cells, Select
7.2. Copie de cellule à cellule dans la même feuille - Value
7.3. Copie de plage à plage dans la même feuille
7.4. Copie de plage à plage d'une feuille à une autre - Worksheets
7.5. Déplacements relatifs dans la même feuille - Offset, Range, Cells, Clear
7.6. Cells - Worksheets - Collection - Item
7.7. Affichage d'une boite de dialogue - MsgBox
7.8. Date - Date
7.9. Formule et valeur - Sum, FormulaR1C1
8. MACROS A EXECUTION AUTOMATIQUE A L'OUVERTURE DU
CLASSEUR - Private Sub, Sub auto_open
9. CONSOLIDATION LEXICALE ET SYNTAXIQUE
9.1. Procédures - Sub, Private Sub
9.2. Instructions : de déclaration, exécutables, d'affectation
9.3. Enchaînement des propriétés dans les instructions
10. AIDE EN LIGNE - COMPLEMENTS D'INFORMATION
11. RACCOURCIS CLAVIER ET TOUCHES DE COMMANDE DE
MACROS
12. REPERES ET RECETTES
12.1. VBA fait ici partie d'Excel, n'est pas une application indépendante
12.2. Noms des macros
12.3. Enlever la marque jaune après corrections dans VBA
12.4. With
12.5. Elaguer dans les procédures
12.6. Caractères de continuité de ligne
12.7. Classeur de macros personnelles - Perso.xls
12.8. Suppression des modules
12.9. Objet et propriété renvoyant l'objet
12.10. Activate et Select
13. EXERCICE
1. CONVENTIONS, DEFINITIONS, TRADUCTIONS (retour au
sommaire )
Les conventions, définitions et traductions données ici sont propres au cadre de
ce document.
CONVENTIONS
- les mots suivants symbolisent les écritures correspondantes dans les textes
cités : NOMDELAMACRO DATEDUJOUR NOMDELAUTEUR
- VBA : Visual Basic Applications
- n : désigne un nombre entier quelconque
- t : désigne aussi un nombre entier quelconque
- (n,t) : dans la présentation ci-contre, n compte les lignes, t compte les
colonnes
- …. (suite de points) : désigne une suite de caractères non précisés à cet
endroit du document
- faire : est employé comme raccourci pour désigner différentes actions telles
que activer une commande de menu, cliquer sur un bouton, sélectionner une
rubrique, activer des touches du clavier ; exemple faire Fichier, Ouvrir ou
encore faire Ctrl + O
- toto : nom passe partout
- mots soulignés dans les titres de paragraphes : termes rencontrés pour la 1e
fois dans ce document
- caractères gras italiques dans le corps du texte : citations de code VBA ou
d'instructions VBA
DEFINITIONS OU SENS DES TERMES DE PROGRAMMATION VBA
- caractère de continuité de ligne : ensemble de caractères saisis à la suite, qui
autorisent l'étalement d'une seule procédure sur plusieurs lignes d'écriture
- code : écriture faite en langage de programmation
- collection : ensemble d'objets de même catégorie : les feuilles d'un classeur
constituent une collection
- dimensionner (abréviation : dim) : même sens qu'en physique quand on dit "les 3
dimensions de base sont la longueur L, la masse M, le temps T"
- fonction : une fonction renvoie une information ; la fonction MsgBox affiche une
boite de dialogue, la fonction somme() renvoie une somme
- instruction : ligne d'écriture en langage de programmation qui aboutit à un résultat
quand le programme est exécuté
- item : élément d'une collection
- méthode : traitement qui s'applique à l'objet qui vient d'être désigné ; par exemple,
clear ou select ou activate sont des méthodes
- objet : les éléments suivants rencontrés dans ce document sont des objets : - le
logiciel Excel sur votre ordinateur - un classeur Excel - une feuille de calcul Excel -
une plage de cellules - une ligne entière - une cellule - la sélection
- procédure : synonyme de macro (les 2 termes sont employés indifféremment dans
ce document)
- propriété : une propriété renvoie : voir renvoyer
- renvoyer : 1) renvoyer un objet : désigner un objet (pour le traiter dans l'instruction
qui suit) 2) renvoyer un attribut : envoyer cet attribut (pour l'examiner, pour l'attribuer
à un autre objet ; cas de la lecture), ou recevoir cet attribut (cas de l'écriture)
- signe = ; le signe = signifie "prend la valeur de ..." ; exemple a = a + 1 signifie :
(nouvelle valeur de a) = (ancienne valeur de a) + 1
- sub: abréviation de subroutine
TRADUCTION DE MOTS ANGLAIS rencontrés, dans leur sens ici :
- application : application (le logiciel Excel sur votre ordinateur)
- cell : cellule
- clear : effacer
- false : faux
- integer : nombre entier
- item : article d'une liste
- message box : boite de dialogue (abréviation : MsgBox)
- offset : décalage, décaler
- range : plage (de cellules) ; en VBA : une ou plusieurs cellules
- recording : enregistrement en cours
- routine : programme
- row : ligne
- select : sélectionner
- sheet : feuille
- subroutine : sous programme
- true : vrai
- value : valeur
- workbook : classeur Excel
- worksheet : feuille de calcul Excel
2. PRESENTATION DE L'ECRAN VBA
(retour au sommaire)
Dès qu'un classeur est ouvert, vous pouvez voir l'écran VBA, même si vous n'avez
encore fait aucune macro.
Ouvrez 2 classeurs : Classeur1.xls et Classeur2.xls.
2.1. Ecran N°1 - Fenêtre Projet
Pour voir l'écran VBA, faites Outils, Macro, Visual Basic Editor (ou Alt+F11)
L'écran suivant apparaît :
Ecran1.gif

Cet écran présente une seule fenêtre : la fenêtre Projet ; elle montre l'Explorateur de
Projet VBA qui ressemble à l'Explorateur Windows.
Bien noter le point suivant :
VBA gère sur un seul écran tout le VBA de tous les classeurs ouverts.
2.2. Ecran N°2 - ThisWorkbook - Fenêtre Code
(retour au sommaire)
Dans VBAProject (Classeur1), double-cliquez sur ThisWorkbook ; l'écran prend
l'aspect suivant :
Ecran2.gif

Une nouvelle fenêtre est apparue à droite : c'est la fenêtre Code ; comme son nom
l'indique, on peut y saisir du code, c'est à dire des macros.
2.3. Ecran N°3 - Saisie de la 1e macro
(retour au sommaire)
Dans la fenêtre Code, saisissez
Sub Toto1 ()
et validez
La fenêtre Code prend l'aspect suivant :
Ecran3.gif

End Sub est apparu sans le saisir ; vous pouvez saisir les lignes de code de votre
première macro entre les 2 lignes SubToto1 () et End Sub
Faites-y la saisie suivante
Range("A1").Select
2.4. Ecran N°4 -Saisie de la 2e macro
(retour au sommaire)
Après End Sub de Toto1, faites Entrée, saisissez
Sub Toto2 ()
et faites Entrée.
La fenêtre Code prend l'aspect suivant :
Ecran4.gif

Vous pouvez saisir maintenant le code de la 2e macro entre Sub Toto2 () et End Sub
Faites-y la saisie suivante
Range("B2").Select
2.5. Macros faites par enregistrement - Modules
(retour au sommaire)
- faites : Outils - Macro - Nouvelle macro
- (fenêtre apparaît)
- complétez : nom de la macro Toto3CtrlW - Touche de raccourci Ctrl + w
Parag2_5_Image1
Validez
Mettez la sélection en C3
Arrêtez l'enregistrement par : Outils - Macro - Arrêter l'enregistrement
Vous avez fait une macro par enregistrement ; un nouvel élément apparaît dans
l'Explorateur de Projet VBA : le dossier Modules, et, dans ce dossier, le module
Module1.
En double-cliquant sur Module1, vous faites apparaître le texte de la macro, comme
ci-dessous :

Parag2_5_image2.gif
2.6. Retenir les 4 points suivants
(retour au sommaire)
- VBA gère sur un seul écran tout le VBA des classeurs ouverts
- nous avons vu 2 fenêtres : la fenêtre de l'Explorateur de Projet VBA et la fenêtre de
Code
- ThisWorkbook est présent dès l'ouverture du classeur et vous pouvez y saisir des
procédures
- le module 1 apparaît seulement quand vous avez enregistré la 1e macro du classeur,
et la macro s'y trouve
3. ELEMENTS DE BASE DES MACROS - Sub + End Sub
Les macros les plus courantes commencent et finissent par :
- 1e ligne : Sub NOMDELAMACRO ()
- dernière ligne : End Sub
Entre les 2 lignes Sub NOMDELAMACRO () et End Sub , chaque ligne est :
- soit un commentaire
- soit une instruction
Une ligne de commentaire commence par le caractère apostrophe '.
Les lignes de commentaires sont facultatives.
4. EXAMEN DU CODE VBA - Instruction, Code, Propriété, Renvoyer,
Objet, Méthode
(retour au sommaire)
Dans la macro Toto1 :
- la ligne Range("A1").Select est une instruction
- cette ligne est rédigée en code
- Range est une propriété renvoyant (désignant) l'objet A1 (c'est à dire la cellule A1)
- Select est une méthode appliquée à l'objet
Remarque importante :
En lisant l'instruction ci-dessus, on voit la possibilité de confusion entre
- la propriété qui renvoie l'objet et
- l'objet lui-même.
Pour comprendre ce que va faire l'instruction, ça n'a guère d'importance.
Pour suivre la syntaxe de l'instruction, c'est important.
A noter : les objets eux-mêmes ne sont pas cités dans les instructions.
A RETENIR
Retenir les termes de programmation que nous avons rencontrés dans ce paragraphe :
instruction - code - propriété - renvoyer - objet - méthode
5. VERIFICATION DES MACROS FAITES - AJOUT D'UNE
COMMANDE CLAVIER
(retour au sommaire)
Vérifiez le bon fonctionnement des 3 macros par Outils, Macro, Macros, (une fenêtre
apparaît), et suivez les instructions
Pour la macro Toto3CtrlW, essayez aussi Ctrl + w
Sur la macro Toto1, ajoutez la commande clavier Ctrl + q par Outils, Macros, Macros,
(une fenêtre apparaît), Options et suivez les instructions ; essayez la commande clavier
ainsi crée.
6. ENREGISTR. DES MACROS EN COORDO. RELATIVES OU
ABSOLUES
(retour au sommaire)
Lorsque vous voulez enregistrer une nouvelle macro, vous faites Outils, Macro,
Nouvelle macro, (une fenêtre apparaît), vous complétez la fenêtre et vous validez :
à ce moment-là, la barre d'outils suivante doit apparaître :

Macro_Barre.gif
Le bouton 3 vous permet de basculer d'un mode d'enregistrement à l'autre
(enregistrement avec références relatives, enregistrement avec références absolues) ;
vous pouvez changer de mode de références en cours d'enregistrement.
Si vous ne voyez jamais cette barre d'outils,
il y a lieu de la rétablir, en procédant comme suit au cours d'un enregistrement de
macro :
faites Affichage, Barres d'outils, Arrêt de l'enregistrement
(dans la ligne ci-dessus, Arrêt de l'enregistrement désigne la barre d'outils Arrêt de
l'enregistrement).
Si vous regardez le texte de votre macro, vous y lirez la ligne suivante :
Application.CommandBars("Stop Recording").Visible = True
Cette instruction a rétabli la barre d'outils.
Par la suite, il peut vous arriver de faire disparaître de nouveau cette barre d'outils en
cliquant par erreur sur le bouton 1 en cours d'enregistrement. Il est inutile d'arrêter et
de relancer Excel, c'est inopérant ; refaites l'opération indiquée ci-dessus.
7. INSTRUCTIONS - EXEMPLES
(retour au sommaire)
7.1. Sélection de lignes, de cellules, de plages - ActiveCell, Entirerow,
Range, Cells, Select
L'instruction suivante sélectionne la ligne entière de la cellule active :
ActiveCell.EntireRow.Select
L'instruction suivante déplace la sélection d'une cellule quelconque de la ligne à la 1e
cellule de la ligne)
ActiveCell.EntireRow.ActiveCell.Select
(explication : quand une ligne entière est sélectionnée, la cellule active est la première
de la ligne ; sur l'écran, elle a un aspect différent des autres)
Sélection continue
Les 3 instructions suivantes sont équivalentes pour sélectionner la plage A1:H10 :
Range(Cells(1,1),Cells(10,8)).Select
Range("A1:H10").Select
[A1:H10].Select (cette dernière écriture n'est pas utilisable après un objet Range ; ce
point sera revu plus loin)
Sélection discontinue
L'instruction suivante opère une sélection discontinue des cellules désignées :
Range("A10,A12,A14").Select
7.2. Copie de cellule à cellule dans la même feuille - Value
(retour au sommaire)
L'instruction suivante copie la valeur de la cellule active dans la cellule A10
Range("A10").Value = ActiveCell.Value
7.3. Copie de plage à plage dans la même feuille
L'instruction suivante copie les valeurs des (cellules désignées dans le 2e membre de
l'égalité) dans (la plage A1:E1) :
Range("A1:E1").Value = ActiveCell.EntireRow.Range("A1:E1").Value
7.4. Copie de plage à plage d'une feuille à une autre - Worksheets
L'instruction suivante copie les valeurs de la plage A4:F4 de la 1e feuille dans la plage
A5:F5 de la 2e feuille :
Worksheets(2).Range("A5:F5").Value = Worksheets(1).Range("A4:F4").Value
Ci-dessus, au lieu de désigner la feuille par le numéro d'ordre de l'onglet, on peut
désigner la feuille par son nom, c'est à dire mettre Worksheets("NomDeLaFeuille")
(guillemets obligatoires)
Pour une copie de feuille à feuille, l'instruction suivante échoue :
Worksheets(2).Range("A5").Value = Worksheets(1).ActiveCell.Value
la raison en est que la séquence ActiveCell n'admet pas Worksheets(…) comme
antécédent
Par contre, l'instruction suivante est acceptée, même si la cellule active est sur une
autre feuille que la feuille 2 :
Worksheets(2).Range("A5").Value = ActiveCell.Value
(ces points seront revus plus loin)
Limite de la copie de plusieurs cellules en 1 seule instruction, de feuille à feuille,
cellule pour cellule :
- la copie réussit avec 2 sélections continues de même forme, exemple
Range("A1:D3").Value = Range("E2:H4").Value
par contre :
- avec une transposition ligne colonne, toutes les cellules d'arrivée prennent la valeur
de la 1e cellule de départ ;
- avec une sélection discontinue du même nombre de cellules des 2 côtés, toutes les
cellules d'arrivée prennent également la valeur de la 1e cellule de départ.
7.5. Déplacements relatifs dans la même feuille - Offset, Range, Cells,
Clear
(retour au sommaire)
L'instructions suivante sélectionne la cellule placée 1 ligne plus bas et 3 colonnes à
droite de la cellule actuellement active :
ActiveCell.Offset(1,3).Select
L'instruction suivante sélectionne la plage des 3 premières cellules de la ligne de la
cellule actuellement active :
ActiveCell.EntireRow.Offset(0,0).Range("A1:C1").Select
L'instruction suivante est équivalente
ActiveCell.EntireRow.Cells(1,1). Range("A1:C1").Select
Avec la sélection initiale n'importe où sur la ligne n, l'instruction suivante efface le
contenu des cellules Bn, Cn, En, Fn :
ActiveCell.EntireRow.Offset(0, 0).Range("B1,C1,E1,F1").Clear
Notes
1) Offset compte l'offset (le décalage) à partir de (0,0) pour la cellule de départ
2) après Offset, ou après toute autre propriété désignant une cellule précise, Range
désigne les cellules en coordonnées relatives, la cellule de départ étant désignée par
"A1"
3) après EntireRow, la cellule désignée par Offset(0,0) est la 1e de la ligne
4) après EntireRow, la cellule désignée par Cells(1,1) est aussi la 1e de la ligne
5) après EntireRow, la cellule désignée par ActiveCell est aussi la 1e de la ligne
La macro suivante illustre la propriété Offset :
Sub Macro2()
Range("A2:C2").Value = "départ offset"
Range("A2:C2").Offset(1, 4).Value = "arrivée offset"
End Sub
7.6. Cells - Worksheets - Collection - Item
(retour au sommaire)
Dans l'aide en ligne, vous lirez que Cells ou Worksheets renvoient la collection de
tous les objets Cells d'une feuille ou la collection de tous les objets Worksheets d'un
classeur ; c'est surprenant à première vue, puisque vous venez d'utiliser Cells et
Worksheets pour désigner des cellules bien précises ou une feuille bien précise
Explication : la propriété Item est implicite dans le code quand vous ajoutez des
parenthèses à Cells ou Worksheets.
Dans la ligne ci-dessous, toutes les cellules de la feuille active sont affectées par
l'instruction :
Cells.HorizontalAlignment = xlCenter
Les 2 instructions ci-dessous sont équivalentes et affectent seulement la cellule B2 ;
dans la 2e instruction, la propriété Item est implicite
Cells.Item(2, 2).HorizontalAlignment = xlCenter
Cells(2, 2).HorizontalAlignment = xlCenter
7.7. Affichage d'une boite de dialogue - MsgBox
(retour au sommaire)
L'instruction suivante affiche la boite de dialogue montrée ci-dessous :
MsgBox "Vérifiez la date de l'horloge", 0, "Horloge"
- le 1er argument est le texte du message
- le 2e argument définit le type du bouton
- le 3e argument est le titre de la boite de dialogue
Le 1er argument est obligatoire, les autres facultatifs

Horloge.gif
7.8. Date - Date
(retour au sommaire)
L'une ou l'autre des 2 instructions ci-dessous met la date du jour dans la cellule active :
ActiveCell.Value = Date
ActiveCell.Formula = Date
7.9. Formule et valeur - Sum, FormulaR1C1
L'instruction suivante met la formule de la somme A1:A3 dans la cellule active
(résultat d'un enregistrement de macro) :
ActiveCell.FormulaR1C1 = "= Sum(R1C1:R3C1)"
L'ensemble des 2 instructions suivantes met la valeur de la somme A1:A3 dans la
cellule active (la 1e ligne est identique à ci-dessus) :
ActiveCell.FormulaR1C1 = "= Sum(R1C1:R3C1)"
ActiveCell.Value = ActiveCell.Value
8. MACROS A EXECUTION AUTOMATIQUE A L'OUVERTURE
DU CLASSEUR - Private Sub, Sub auto_open
(retour au sommaire)
Pour avoir une macro qui s'exécute automatiquement à l'ouverture du classeur, il faut
lui donner un nom particulier.
2 noms sont possibles :
Private Sub Workbook_open()
Sub auto_open()
Le reste de la procédure s'écrit comme d'habitude jusqu'à End Sub
La procédure doit être saisie dans ThisWorkbook
Remarque : Sub auto_open() n'a pas été trouvé dans l'aide en ligne, mais convient
néanmoins.
9. CONSOLIDATION LEXICALE ET SYNTAXIQUE
(retour au sommaire)
9.1. Procédures - Sub, Private Sub
Nous avons rencontré des procédures Sub et une procédure Private Sub
Une procédure Sub est une procédure "publique", ce qui veut dire que son accès n'est
pas limité.
Une procédure Private Sub est une procédure "privée", ce qui veut dire que son
accès est limité : la procédure Private Sub Workbook_Open ne s'exécute qu'à
l'ouverture du classeur, et il n'est pas possible de l'exécuter dans d'autres circonstances
9.2. Instructions : de déclaration, exécutables, d'affectation
(retour au sommaire)
Nous avons rencontré les 3 types suivants d'instructions :
Instructions de déclaration
Sub Toto1 () associée à End Sub est une instruction de déclaration qui déclare la
procédure Toto1
Instructions exécutables
Instruction exécutable qui exécute une méthode :
[A10].Clear est une instruction exécutable qui exécute la méthode Clear
Instruction exécutable qui exécute une fonction :
MsgBox "Vérifiez la date de l'horloge" est une instruction exécutable qui exécute la
fonction MsgBox
Instructions d'affectation
[A10].Value = 3 est une instruction d'affectation qui affecte la valeur 3 à la cellule
A10
Les instructions d'affectation comportent le signe =
Eléments constitutifs des Instructions
La liste ci-dessous énumère les termes rencontrés dans les instructions et indique à
quelle catégorie ils appartiennent :
ActiveCell est une propriété en lecture seule
Clear est une méthode
Date est une fonction
EntireRow est une propriété en lecture seule
FormulaR1C1 est une propriété en lecture écriture
MsgBox est une fonction
Offset(…) est une propriété en lecture seule
Range(…) est une propriété en lecture seule
[…] (autre écriture de Range(…)
Select est une méthode
Sum(…) est une fonction
Value est une propriété en lecture écriture
Worksheets(…) est une propriété en lecture seule
(termes non rencontrés :)
Application est une propriété en lecture seule
ActiveSheet est une propriété en lecture seule
Les propriétés en lecture seule renvoient et ne reçoivent pas.
Les propriétés en lecture écriture renvoient ou reçoivent ; quand elles reçoivent (un
attribut), elles sont suivies du signe =
9.3. Enchaînement des propriétés dans les instructions
(retour au sommaire)
Dans les instructions, l'enchaînement des propriétés obéit aux règles indiquées dans le
tableau ci-dessous
Proprietes_Tableau.gif
Remarque
Range : après un antécédent Range, l'écriture [A1] n'est pas acceptée, l'écriture Range
("A1") est acceptée
10. AIDE EN LIGNE - COMPLEMENTS D'INFORMATION
(retour au sommaire)
Vous trouverez des compléments d'information sur les sujets traités dans ce document
en consultant l'aide en ligne comme indiqué ci-dessous :
AideEnLigne_Tableau.gif
Note
Offset : Dans l'exemple 1 de l'aide en ligne, la saisie des 25 caractères suivants est
facultative :
rowoffset:= columnoffset:=
11. RACCOURCIS CLAVIER ET TOUCHES DE COMMANDE DE
MACROS
(retour au sommaire)
La liste ci-dessous rappelle les raccourcis clavier les plus utilisés dans les feuilles de
calcul, de façon à éviter de les prendre pour commander des macros ; les touches sans
mention seront utilisées de préférence pour commander les macros.
Ctrl + A Sélectionne tout
Ctrl + B
Ctrl + C Copier
Ctrl + D
Ctrl + E
Ctrl + F Chercher (Find)
Ctrl + G Gras
Ctrl + H
Ctrl + I Italique
Ctrl + J
Ctrl + K
Ctrl + L
Ctrl + M
Ctrl + N
Ctrl + O
Ctrl + P Imprimer
Ctrl + Q
Ctrl + R
Ctrl + S Enregistrer (Save)
Ctrl + T
Ctrl + U
Ctrl + V Coller
Ctrl + W
Ctrl + X Couper
Ctrl + Y
Ctrl + Z Annuler
12. REPERES ET RECETTES
(retour au sommaire)
12.1. VBA fait ici partie d'Excel, n'est pas une application indépendante
Pour afficher la fenêtre VBA à partir de la feuille de calcul, vous pouvez au choix :
- faire Outils, Macro, Visual basic editor
- faire Outils, Macro, Macros, sélectionner une macro, activer Modifier
- activer Alt F11
A ce moment-là, la fenêtre Visual Basic Applications apparaît avec un nouveau
bouton correspondant sur la barre des tâches, comme si c'était une nouvelle
application ouverte, comme Word par exemple : attention, ce n'est pas une nouvelle
application ouverte ; VBA fait ici partie d'Excel : si vous fermez Excel, VBA
disparaît.
12.2. Noms des macros
(retour au sommaire)
Pour nommer les macros, vous pouvez utiliser les lettres de l'alphabet en minuscules
ou majuscules, les lettres accentuées, les 10 chiffres, sans espace, certains caractères
séparateurs, mais pas tous.
Recommandation : quand vous nommez une macro commandée par un raccourci
clavier, mettez ce raccourci clavier dans le nom de la macro : par exemple, nommez
TotoCtrlQ une macro commandée par Ctrl + q
Pour modifier un nom de macro, aller dans la fenêtre Code
12.3. Enlever la marque jaune après corrections dans VBA
(retour au sommaire)
Après corrections dans VBA, la macro ne sera pas exécutable tant que la marque jaune
sera visible ; pour l'enlever, faites l'une des opérations suivantes :
- activer la touche F5
- faire Exécution, Continuer
- faire Exécution, Réinitialiser
12.4. With
Exemple : enregistrez une macro qui contient l'action sur le bouton Centré de la barre
d'outils de mise en forme : vous obtenez le résultat suivant :
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.ShrinkToFit = False
.MergeCells = False
End With
les 8 lignes ci-dessus équivalent aux 6 lignes suivantes :
Selection . HorizontalAlignment = xlCenter
Selection . VerticalAlignment = xlBottom
Selection . WrapText = False
Selection . Orientation = 0
Selection . ShrinkToFit = False
Selection . MergeCells = False
12.5. Elaguer dans les procédures
(retour au sommaire)
Dans les procédures enregistrées, vous pouvez supprimer toutes les lignes blanches et
toutes les lignes de commentaires.
Dans une procédure telle que celle du paragraphe précédent, si la seule chose qui vous
intéresse est l'alignement centré, vous pouvez réduire l'ensemble à une seule ligne
d'instruction et effacer le reste ; vous garderez seulement :
Selection. HorizontalAlignment = xlCenter
L'enregistrement vous aura été utile pour rédiger le code à votre place, sans erreur.
12.6. Caractères de continuité de ligne
Si vous désirez, pour une question de présentation, étaler une instruction sur 2 ou
plusieurs lignes, vous pouvez couper la ligne par les caractères de continuité de ligne,
sans couper l'instruction.
Tapez au clavier à la suite les 3 touches :
espace souligné Entrée
12.7. Classeur de macros personnelles - Perso.xls
(retour au sommaire)
Lorsque vous enregistrez une macro, vous avez la proposition suivante :
PersoXls.gif
La première fois que vous choisissez Classeur de macros personnelles, vous créez
un classeur Perso.xls auquel sera attaché la macro. Ce classeur s'ouvrira
automatiquement à chaque ouverture d'Excel parce qu'il sera dans le dossier
XLOuvrir. Si vous préférez l'ouvrir seulement à la demande, il suffit de le mettre
ailleurs.
12.8. Suppression des modules
(retour au sommaire)
Se trouve dans le menu Fichier
12.9. Objet et propriété renvoyant l'objet
Répétons ce qui a été dit plus haut :
En lisant l'instruction Range("A1").Select le lecteur a une possibilité de confusion
entre la propriété qui renvoie l'objet et l'objet lui-même.
Pour comprendre ce que va faire l'instruction, ça n'a guère d'importance.
Pour suivre la syntaxe de l'instruction, c'est important : Range est la propriété qui
renvoie un objet Range ; cet objet Range est la cellule A1 ; l'objet Range lui-même
n'est pas inscrit dans la ligne codée ; les objets eux-mêmes ne sont pas inscrits dans les
instructions.
12.10. Activate et Select
(retour au sommaire)
Dans une sélection de plusieurs cellules, il n'y a qu'une cellule active, celle qui n'est
pas noire ; si on fait une saisie, la saisie n'ira que dans cette cellule. Dans une sélection
rectangulaire faite par une macro, la cellule active est toujours en haut à gauche.
Exemple : avec l'une ou l'autre des 2 instructions suivantes :
[A3:C5].Select ou [C5:A3].Select
la sélection est la même, et la cellule active est toujours A3.
La méthode Activate permet de choisir la cellule active à l'intérieur de la sélection.
Exemple : avec l'ensemble des 2 instructions suivantes :
[A3:C5].Select
[B4].Activate
la sélection est toujours la plage A3:C5 , la cellule active est B4, au centre de la
sélection.
13. EXERCICE
(retour au sommaire)
Requête
Sur une feuille de calcul Excel, on veut identifier à coup sûr les cellules verrouillées :
pour cela, on veut une macro qui fasse en même temps le verrouillage et le coloriage
en jaune des cellules sélectionnées.
Une MsgBox enverra le message suivant :
"la macro verrouille et met en jaune les cellules selectionnées"
Opérations
1. Enregistrer une macro qui fait le verrouillage des cellules sélectionnées.
Cela donnera par exemple, (sans les numéros) :
1. Sub verrouille()
2. '
3. ' verrouille Macro
4. ' Macro enregistrée le 20/12/98 par SANGUINETTI
5. '
6.
7. Selection.Locked = True
8. Selection.FormulaHidden = False
9. End Sub
2. Enregistrer une macro qui met en jaune les cellules sélectionnées.
Cela donnera par exemple, (sans les numéros) :
1. Sub jaune()
2. '
3. ' jaune Macro
4. ' Macro enregistrée le 20/12/98 par SANGUINETTI
5. '
6.
7. '
8. With Selection.Interior
9. .ColorIndex = 36
10. .Pattern = xlSolid
11. .PatternColorIndex = xlAutomatic
12. End With
13. End Sub
3. Faire une macro qui comporte :
- la déclaration de la macro (saisir la ligne 1 ci-dessous et faire Entrée)
- la Msgbox demandée (saisir la ligne 2 ci-dessous et faire Entrée)
- le verrouillage (copier coller la ligne 7 de la macro du paragraphe 1)
- le coloriage (copier coller les lignes 8 à 12 du paragraphe 2)
Cela donnera par exemple, (sans les numéros) :
1. Sub VerrouilleEtJaunit()
2. MsgBox "la macro verrouille et met en jaune les cellules
sélectionnées"
3. Selection.Locked = True
4. With Selection.Interior
5. .ColorIndex = 36
6. .Pattern = xlSolid
7. .PatternColorIndex = xlAutomatic
8. End With
9. End Sub
Tester la macro
(retour au sommaire)

Vous aimerez peut-être aussi