Professional Documents
Culture Documents
vba
Office 2013
Dominique Maniez
dunod
9782100589418-Maniez-Sommaire.indd 1
01/02/2013 11:46:16
9782100589418-Maniez-Sommaire.indd 2
01/02/2013 11:46:17
9782100589418-Maniez-Sommaire.indd 3
01/02/2013 11:46:17
IV
______________________________
9782100589418-Maniez-Sommaire.indd 4
01/02/2013 11:46:17
Null................................................................ 107
Empty............................................................. 108
Gare aux boucles infinies...........................................................109
Diffrences entre While et Until..............................................110
Chapitre 8 Procdures et fonctions........................................ 113
Procdures Sub et procdure Function......................................114
Syntaxe dune fonction.............................................................114
MsgBox en dtail.......................................................................119
MsgBox............................................................ 119
Prompt............................................................. 122
Buttons............................................................ 125
Fonctions de Visual Basic..........................................................130
crire ses propres fonctions...................................... 131
Paramtres facultatifs............................................ 135
Partie 3 Modles dobjets
Chapitre 9 Objets.................................................................. 139
Dfinition dun objet.................................................................140
Objets dans Office.....................................................................140
Un objet en situation................................................................141
crire des fonctions pour manipuler des objets.........................148
LExplorateur dobjets................................................................148
Modification du systme daide dans Office2013.....................150
Chapitre 10 Programmer Word.............................................. 155
Objet Application.....................................................................155
Objet Document........................................................................158
Objet Range...............................................................................161
Objet Selection..........................................................................164
Mise en pratique........................................................................168
Chapitre 11 Programmer Excel.............................................. 173
Objet Application.....................................................................173
Objet Workbook........................................................................177
Objet Worksheet.......................................................................179
Objet Range...............................................................................181
Mise en pratique........................................................................186
9782100589418-Maniez-Sommaire.indd 5
01/02/2013 11:46:17
VI
______________________________
9782100589418-Maniez-Sommaire.indd 6
01/02/2013 11:46:17
VII
9782100589418-Maniez-Sommaire.indd 7
01/02/2013 11:46:18
9782100589418-Maniez-Sommaire.indd 8
01/02/2013 11:46:18
Avant-propos
Il y a une dizaine dannes, quand jai crit mon premier livre sur VBA
(Visual Basic pour Applications), mon objectif tait simple: faire dcouvrir aux lecteurs francophones la simplicit et la puissance de ce langage
de programmation qui tait la disposition de tout utilisateur de Word
et dExcel. Sans vouloir me vanter, je crois que mon but a t atteint et
cest avec un rel plaisir que je mets jour cet ouvrage chaque fois que
sort une nouvelle version dOffice.
Si les versions dOffice se suivent et ne se ressemblent pas toutes
(ladoption du ruban a parfois t vcue douloureusement), VBA est
toujours bien prsent dans la version estampille 2013 et je souhaite
dmontrer tous les utilisateurs dOffice quils se privent inutilement
de la richesse fonctionnelle de leur traitement de texte ou de leur tableur en ignorant la programmation. En vous apprenant programmer
Word, Excel, Access, Outlook et PowerPoint, je veux tout dabord vous
montrer que cette activit nest pas rserve aux professionnels de linformatique et vous faire gagner du temps dans lexcution des tches
rptitives et fastidieuses.
9782100589418-Maniez-Sommaire.indd 9
01/02/2013 11:46:18
______________________________
9782100589418-Maniez-Sommaire.indd 10
01/02/2013 11:46:18
Avant-propos ________________________________________
XI
9782100589418-Maniez-Sommaire.indd 11
01/02/2013 11:46:18
XII
______________________________
9782100589418-Maniez-Sommaire.indd 12
01/02/2013 11:46:18
que langage de programmation de la suite. Cela signifie que quand japprends programmer Word, je sais programmer la fois Excel, Access,
Outlook et PowerPoint. Lunicit de ce langage est un progrs norme
et cest pour cette raison quil serait dommage de se limiter lapprentissage de la programmation dun seul logiciel quand il est si facile de
passer dun logiciel lautre.
Le fait quOffice propose un mme langage pour toutes ses applications est rellement un avantage dterminant et nous pensons quil va
inciter plus dun utilisateur se lancer dans laventure de lapprentissage
de la programmation VBA.
9782100589418-Maniez-Sommaire.indd 13
01/02/2013 11:46:18
XIV
______________________________
9782100589418-Maniez-Sommaire.indd 14
01/02/2013 11:46:18
Partie 1
Apprendre
programmer
9782100589418-Maniez-Chap01.indd 1
06/02/2013 09:57:55
9782100589418-Maniez-Chap01.indd 2
06/02/2013 09:57:55
1
Quest-ce que
programmer?
Lambition de ce livre est de dmontrer que la programmation, aborde
en douceur et avec pdagogie, nest pas lapanage des professionnels de
linformatique; en effet, nimporte qui matrisant les bases de la logique
peut apprendre aisment programmer. Cette entreprise est la porte
de tous et cet ouvrage prtend dmythifier la programmation, en montrant tout dabord que cette discipline de linformatique repose sur des
techniques que chacun utilise dans la vie courante. Cela signifie que,
comme Monsieur Jourdain faisait de la prose sans le savoir, vous avez
dj programm, mme si vous lignorez.
Nous dfinirons tout dabord la programmation comme lart dcrire
des programmes et nous dirons quun programme est une suite dinstructions. Le Grand Robert donne cette dfinition plus complte: Ensemble ordonn des oprations ncessaires et suffisantes pour obtenir un rsultat;
dispositif permettant un mcanisme deffectuer ces oprations.
Cette dfinition introduit la notion importante de rsultat; on programme toujours un ordinateur pour aboutir un rsultat.
On peut donc dire que lorsque vous crivez une suite dinstructions,
vous rdigez un programme. En fait, la ralisation en squence dune liste dinstructions est une opration assez banale dans la vie quotidienne
et quand on ralise une recette de cuisine, on excute un programme.
Voici une recette facile que les adeptes du rgime Dukan ne renieront
certainement pas:
9782100589418-Maniez-Chap01.indd 3
06/02/2013 09:57:55
________________________
9782100589418-Maniez-Chap01.indd 4
06/02/2013 09:57:55
Grce ces exemples extraits de la vie quotidienne, on constate facilement que la logique et les concepts de la programmation nous sont
en fait trs familiers. Il ny a donc pas lieu de redouter la programmation
informatique car nous en possdons la plupart de ces mcanismes; les
seules choses qui vont changer sont le but que lon va assigner au programme et le langage qui va permettre de dcrire le droulement des
oprations excuter.
9782100589418-Maniez-Chap01.indd 5
06/02/2013 09:57:56
________________________
9782100589418-Maniez-Chap01.indd 6
06/02/2013 09:57:56
La syntaxe __________________________________________
La syntaxe
Le code dun programme est compos de phrases lmentaires appeles
lignes dinstruction. Chaque ligne dinstruction doit excuter une action
comme laffichage dun message lcran, laddition de deux nombres,
la lecture dune valeur stocke dans un fichier, etc. Chaque langage de
programmation possde sa propre syntaxe, cest--dire ses propres rgles
dcriture. Les lignes dun programme doivent tre crites avec le vocabulaire du langage de programmation qui comprend un nombre de mots
fini. Comme dans une langue naturelle, il existe dans un langage de programmation plusieurs catgories de mots (verbe, adjectif, conjonction
de coordination, etc.) et nous apprendrons, au fur et mesure de notre
progression, ces diffrents types de mots.
Comme un nonc humain, une instruction peut tre ambigu et il
convient tout prix dviter les ambiguts. Ainsi, le rsultat de linstruction qui effectue le calcul suivant:
x =2 +3 * 4
9782100589418-Maniez-Chap01.indd 7
06/02/2013 09:57:56
________________________
La phase danalyse
Une fois que lon a lassurance que le projet de programmation est ralisable, il faut rflchir la structuration du programme. Linformatique
9782100589418-Maniez-Chap01.indd 8
06/02/2013 09:57:56
tant la science du traitement automatis de linformation, un programme nest jamais quun processus de transformation dinformations. Il
convient donc dinventorier toutes les informations dont le programme
a besoin au dpart et toutes les informations dont il aura besoin en sortie. Quand on possde toutes ces donnes, il faut dcrire les algorithmes
qui permettront de transformer les informations disponibles en entre
en rsultats.
Dfinition
Un algorithme est lensemble des rgles opratoires qui permettent deffectuer un traitement de donnes; ce procd dcrit formellement toutes
les tapes dun calcul qui doit fonctionner dans tous les cas de figure.
La phase dencodage
Une fois que lanalyse est termine, il faut transcrire le pseudo-code
dans un langage de programmation. Les phases dtude et danalyse sont
indpendantes de tout langage de programmation et le choix de ce dernier peut se faire au moment de lencodage. Plus la phase danalyse a
t pousse, plus lencodage sera simple. La plupart des problmes de
programmation proviennent dune analyse trop succincte, voire dune
absence totale danalyse.
9782100589418-Maniez-Chap01.indd 9
06/02/2013 09:57:56
10
________________________
La phase de test
Quand lencodage est achev, il faut tester le programme car il est excessivement rare quun programme, sauf sil est trs court et extrmement
simple, fonctionne correctement du premier coup. Les causes derreur
sont multiples et les tests permettent de les mettre en vidence; il faut
alors revenir en arrire et retourner, en fonction de la gravit de lerreur,
la phase danalyse (erreur de conception) ou dencodage (erreur de
programmation).
La phase de production
Une fois que le programme parat exempt derreurs (ce nest malheureusement souvent quune illusion), on peut envisager de le diffuser
auprs des utilisateurs.
Le cycle de vie du logiciel nest pas pour autant termin car il est
fort probable que certains utilisateurs trouvent des bugs (erreurs de programmation) qui nauront pas t dtects lors des phases de tests ou
bien que dautres utilisateurs demandent au programmeur des amliorations ou de nouvelles fonctionnalits. Il faudra alors se relancer dans
une analyse, voire repartir de zro si les modifications souhaites sont
trop importantes
9782100589418-Maniez-Chap01.indd 10
06/02/2013 09:57:56
______________
11
Avec lavnement de Windows, les interfaces utilisateur sont devenues graphiques et Microsoft se devait de faire voluer son Basic :
cest ainsi que Microsoft Basic est devenu Visual Basic. Simple et visuelle, cette nouvelle version du langage obtint un succs formidable
et aujourdhui, Visual Basic est un langage de programmation encore
trs utilis. Mais le rve de Bill Gates tait vritablement dimposer ce
langage tous les produits que commercialisait Microsoft. On a donc vu
apparatre en 1993 une version minimale de Visual Basic dans Excel et
cette version fut appele VBA. Puis ce fut le tour de Project et dAccess
daccueillir VBA; dans le cas dAccess, VBA venait remplacer Access
Basic. En 1996, sortit la version 4 de Visual Basic et VBA remplaa
Word Basic. Une anne plus tard, la version 5 de Visual Basic vit le jour
et chaque application de la suite Office 97 ( lexception dOutlook)
incorporait dsormais une version de VBA, mme si de lgres diffrences entre les applications subsistaient encore. En 1998, Microsoft livra
Visual Basic 6 et cest cette dernire version qui est prsente dans Office2000, OfficeXP, Office2003 et Office2007. Office2010 a accueilli la
version7 de VBA et cest la version 7.1 qui tourne dans Office2013.
9782100589418-Maniez-Chap01.indd 11
06/02/2013 09:57:56
12
________________________
Compilation
Quand un programme est compil ( laide dun compilateur), son code
source (les instructions du programme) est transform en code machine et
on obtient au final un programme excutable (avec une extension .EXE).
Les programmes crits en VBA ne peuvent pas tre compils; on dit quils
sont interprts ( laide dun interprteur). Chaque application Office
possde un interprteur VBA qui permet dexcuter les programmes crits
en VBA. Les programmes interprts sexcutent moins rapidement que
les programmes compils.
Conclusion
Un programme doit avoir un but bien dtermin et la programmation consistera crire les instructions permettant de raliser un objectif. Avant de commencer programmer, il faut bien rflchir la
structure du programme et inventorier les informations qui sont manipules par le programme. Apprendre programmer, cest apprendre un langage de programmation qui est compos dun vocabulaire
(une liste de mots finie dont on peut consulter chaque dfinition dans
laide en ligne) et dune syntaxe (la manire dagencer les mots). Programmer nest pas difficile si lon a lesprit un tant soit peu logique et
si lon respecte rigoureusement la syntaxe du langage de programmation que lon utilise, car la moindre erreur de syntaxe peut bloquer le
programme.
VBA (Visual Basic pour Applications) est le langage de programmation dOffice. Toutes les applications Office (sauf OneNote) intgrent un interprteur VBA qui permet dexcuter des programmes
crits dans ce langage.
9782100589418-Maniez-Chap01.indd 12
06/02/2013 09:57:56
2
Enregistrer une macro
La documentation de Word dfinit une macro comme une srie de commandes et dinstructions regroupes au sein dune mme commande afin
dexcuter automatiquement une tche. Pour Excel, une macro est une
srie de commandes et de fonctions stockes dans un module Visual
Basic, qui peut tre excute chaque fois quon doit accomplir cette
tche. Nous allons voir dans ce chapitre quil est trs simple dcrire ses
premires macros en utilisant lenregistreur de macro.
Il y a une vingtaine dannes, Microsoft inventa pour ses logiciels
Word et Multiplan (lanctre dExcel) le concept de macro-commande.
Il sagissait de la possibilit de mmoriser les touches frappes au clavier,
les options slectionnes et les commandes excutes afin de les rutiliser plus tard. Lutilisateur avait donc la possibilit denregistrer une suite
de commandes du logiciel pour automatiser les actions les plus rptitives. Mais lcriture de macro-commandes tait assez complexe et le
mini langage de programmation qui accompagnait Word et Multiplan
tait assez pauvre.
Aujourdhui, avec Office, les choses ont considrablement volu et
de la mme manire que lon ne parle plus de micro-informatique, mais
de micro, les macro-commandes sont devenues les macros. Lutilisateur
de la suite Office dispose prsent dun langage de programmation puissant et complet, VBA, qui est dot dun environnement digne des langages utiliss par les informaticiens professionnels.
9782100589418-Maniez-Chap02.indd 13
31/01/2013 14:37:20
14
Lenregistreur de macro
Word et Excel disposent dun enregistreur de macro qui, la manire
dun magntophone, peut enregistrer vos actions dans le logiciel et rejouer volont ce que vous avez excut.
Remarque
Les autres logiciels de la suite Office (Access, PowerPoint, Outlook, etc.) ne
possdent pas denregistreur de macro et le code VBA ne peut donc pas
tre gnr automatiquement. En revanche, il existe dans Access un type
dobjet nomm macro qui permet de stocker squentiellement une srie
dactions accomplir; cependant, les macros de ce type nutilisent pas le
langage VBA.
9782100589418-Maniez-Chap02.indd 14
31/01/2013 14:37:20
15
Conseil
Si vous effectuez souvent la mme mise en forme sous Word (par exemple,
une modification de la police, un changement de la taille de la police et une
mise en gras), il est prfrable de crer un style plutt que denregistrer
une macro. Si jamais le style dfini ne vous convient plus, une seule modification du style suffira changer automatiquement toutes les occurrences
de ce style dans lensemble du document. En revanche, avec une macro,
il faudrait non seulement modifier la macro, mais lexcuter nouveau sur
tout le document pour chaque occurrence du style. En pareil cas, une commande de recherche et de remplacement serait dailleurs plus efficace.
Pour faire lexercice, lancez Word et cliquez dans longlet Dveloppeur sur la commande Enregistrer une macro.
Astuce
Si longlet Dveloppeur ne figure pas sur le ruban de Word, utilisez la
commande FichierOptionsPersonnaliser le ruban et cochez la case
Dveloppeur dans la liste Onglets principaux.
9782100589418-Maniez-Chap02.indd 15
31/01/2013 14:37:20