You are on page 1of 29

formation

vba

Office 2013
Dominique Maniez

dunod

9782100589418-Maniez-Sommaire.indd 1

01/02/2013 11:46:16

Toutes les marques cites dans cet ouvrage sont


des marques dposes par leurs propritaires respectifs.

Dunod, Paris, 2013


ISBN 978-2-10-058941-8

9782100589418-Maniez-Sommaire.indd 2

01/02/2013 11:46:17

Table des matires


Apprendre programmer.............................................................. 1
Partie 1 Apprendre programmer
Chapitre 1 Quest-ce que programmer?..................................... 3
Plusieurs niveaux de programmation............................................5
Les langages de programmation.....................................................6
La syntaxe......................................................................................7
Les phases de conception dun programme...................................7
La phase dtude pralable.......................................... 8
La phase danalyse................................................... 8
La phase dencodage................................................. 9
La phase de test.....................................................10
La phase de production.............................................10
VBA: un langage de programmation pour les applications........10
Diffrences entre Visual Basic et VBA............................11
Chapitre 2 Enregistrer une macro............................................ 13
Lenregistreur de macro................................................................14
Quand devez-vous enregistrer une macro?.......................14
Enregistrement de votre premire macro..........................15
Excuter une macro.....................................................................17
O sont stockes les macros?......................................................18
Comment assigner un raccourci clavier une macro?...............19
Comment associer une macro une icne de la barre doutils
Accs rapide ?.............................................................................22
Comment associer une macro une icne du ruban?................23
Conseils pour lenregistrement des macros.................................24
Choix du nom des macros...........................................................24
Limitations de lenregistreur de macro........................................26
Enregistrement dune macro avec Excel.....................................29

9782100589418-Maniez-Sommaire.indd 3

01/02/2013 11:46:17

IV

______________________________

Formation VBA Office 2013

Chapitre 3 Modifier le code des macros.................................... 33


Voir le code de la macro..............................................................33
Modifier le code de la macro.......................................................40
Virus et macros............................................................................43
Partie 2 Le langage VBA
Chapitre 4 Syntaxe de VBA.................................................... 49
Variables......................................................................................51
Constantes...................................................................................55
Oprateurs...................................................................................57
Mots cls......................................................................................60
Instructions..................................................................................62
Chapitre 5 Variables et tableaux.............................................. 65
Types de donnes.........................................................................65
Les dates.............................................................69
Les caractres.......................................................71
Les nombres.........................................................72
Type de donnes Variant...........................................73
Les erreurs de type..................................................73
Les expressions......................................................74
Visibilit des variables.................................................................76
Tableaux.......................................................................................78
Chapitre 6 Tests conditionnels................................................. 83
Quest-ce quun test conditionnel?.............................................83
If Then Else.........................................................84
Traiter plus de deux choix..........................................85
Oprateur logique dans une condition.............................88
Imbrication de tests conditionnels..............................................89
Select Case..................................................................................91
Chapitre 7 Boucles.................................................................. 95
For Next.......................................................................................95
Sortir de la boucle................................................. 100
While Wend..............................................................................101
Imbrication de boucle While Wend.............................. 103
Do Loop.....................................................................................104
Expression logique................................................ 106

9782100589418-Maniez-Sommaire.indd 4

01/02/2013 11:46:17

Table des matires _____________________________________

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

______________________________

Formation VBA Office 2013

Chapitre 12 Programmer Access............................................ 191


Collections dAccess..................................................................192
Objets dAccess..........................................................................193
Objet DoCmd............................................................................194
Objet Form................................................................................197
Mise en pratique........................................................................203
Remplir une liste par programmation............................ 203
Remplir un champ automatiquement............................ 207
Chapitre 13 ADO................................................................. 209
Installation dADO....................................................................209
Objets dADO............................................................................211
Objet Connection.....................................................................213
Objet Recordset.........................................................................214
Mise en pratique........................................................................216
Exemples pour Access............................................ 216
Exemples dutilisation dun fichier ACCDB sans Access...... 220
Chapitre 14 Programmer Outlook......................................... 229
Modle dobjets..........................................................................229
Objet MailItem..........................................................................230
Objet MAPIFolder....................................................................233
Accs un sous-dossier de la Bote de rception................ 234
Mise en pratique........................................................................235
Envoyer un message partir dune BD......................... 235
Analyser tous les messages entrants............................. 236
Exporter les messages dans une BD............................. 238
Exporter les contacts dans une BD.............................. 240
Chapitre 15 Programmer PowerPoint.................................... 243
Objet Application.....................................................................243
Collection Presentations...........................................................245
Collection Slides.......................................................................251
Collection Shapes......................................................................256
Mise en pratique........................................................................259

9782100589418-Maniez-Sommaire.indd 6

01/02/2013 11:46:17

Table des matires _____________________________________

VII

Partie 4 Programmation VBA avance


Chapitre 16 Crer des formulaires......................................... 265
Exemple de UserForm pas pas................................................266
Mise en pratique........................................................................279
Cration du UserForm........................................... 283
Chapitre 17 Grer des fichiers texte....................................... 289
Objet FileSystemObject............................................................290
Objet TextStream......................................................................291
Mise en pratique........................................................................294
Cration de fichiers au format CSV............................. 294
Chapitre 18 Dboguer un programme.................................... 297
Erreurs de programmation.........................................................297
Erreurs de syntaxe................................................ 298
Erreurs dexcution............................................... 299
Erreurs de logique................................................. 305
Dbogage...................................................................................306
Dbogueur..................................................................................307
Lancement du dbogueur......................................... 308
Fonctionnement du dbogueur................................... 308
Visualisation des variables dans le dbogueur................... 314
Gestion des erreurs....................................................................316
Chapitre 19 Aller plus loin.................................................... 319
Organiser les macros..................................................................319
Prendre de bonnes habitudes.....................................................320
Se documenter...........................................................................323
Dvelopper pour Office sans VBA............................................325
Index....................................................................................... 327

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.

qui sadresse ce livre?


Cet ouvrage est un livre dinitiation et il ne ncessite donc aucune
connaissance pralable en programmation; il vise par consquent un
public de dbutants. Il sadresse en priorit aux utilisateurs de la suite
Office qui souhaitent apprendre la programmation afin damliorer leur
productivit. Les personnes utilisant Office et possdant dj une exprience de programmeur peuvent galement profiter de ce livre, mais
ngliger la lecture des chapitres consacrs aux rudiments de la programmation. Cet ouvrage nest pas un ouvrage de rfrence et il ne prtend
donc pas lexhaustivit ; de nombreuses informations sont sciemment passes sous silence afin de clarifier le propos et de ne pas semer

9782100589418-Maniez-Sommaire.indd 9

01/02/2013 11:46:18

______________________________

Formation VBA Office 2013

la confusion dans lesprit du lecteur par un apport trop important de


connaissances nouvelles.
La dmarche pdagogique mise en uvre dans ce livre est similaire
la mthode de programmation par raffinements successifs; cette mthode reprend en fait un principe cartsien qui stipule quil faut commencer par les objets les plus simples et les plus aiss connatre, pour
monter peu peu, comme par degrs, jusqu la connaissance des plus
composs . La dernire partie de cet ouvrage propose ceux qui le
souhaitent, des pistes pour quils puissent approfondir les sujets abords
dans ces pages ou bien explorer dautres horizons plus complexes de la
programmation sous Office.

Pourquoi apprendre programmer


Office?
La premire raison est productiviste. La programmation, mme un niveau peu lev, va vous permettre de gagner un temps prcieux, surtout
si vous accomplissez des tches rptitives. En effet, lautomatisation
des tches va augmenter votre productivit, parfois dans des proportions
que vous nimaginez mme pas. Outre le gain de temps, vous allez galement vous affranchir des tches pnibles et pouvoir ainsi vous consacrer
des tches plus nobles. En dfinitive, vous constaterez que lamlioration est non seulement quantitative, mais galement qualitative.
La deuxime raison est quen programmant vous allez pouvoir bnficier dun logiciel sur mesure car vous allez crer tout ce qui vous
manque. Les possibilits de paramtrage dOffice sont dj importantes,
mais en programmant, vous allez contrler exactement les traitements
de votre systme dinformation. Apprendre programmer ouvre des horizons quasiment infinis et il est impossible dinventorier toutes les applications pratiques. En matrisant les rudiments de la programmation,
vous allez dj pouvoir inventer des commandes et des fonctions qui
nexistent pas dans le logiciel (par exemple des fonctions dExcel qui
vous manquent). Vous allez aussi pouvoir contrler la validit des informations qui sont saisies dans Excel ou Access. Dans tous ces logiciels,
il est extrmement facile de saisir des donnes mais ds que lon veut
exercer un contrle minimal sur les informations qui sont saisies, il faut
avoir recours la programmation. Et si lon rflchit bien, on saperoit
quil est inutile de traiter des donnes par de savants calculs si lon na

9782100589418-Maniez-Sommaire.indd 10

01/02/2013 11:46:18

Avant-propos ________________________________________

XI

pas pris la prcaution de sassurer de la validit de ces informations.


De la mme manire, si vous dveloppez des modles qui doivent tre
utiliss par dautres, la programmation vous aidera dfinir des crans
daide spcifiques ou bien des formulaires de saisie personnaliss qui faciliteront la tche de ceux qui doivent entrer les informations.
La dernire raison est dordre intellectuel. Apprendre programmer,
cest devenir acteur du processus informatique. Quand on programme,
on est moins passif devant sa machine et on acquiert une meilleure
connaissance du fonctionnement matriel et logiciel de lordinateur. En
mme temps, on acquiert certains types de raisonnements logiques qui
peuvent servir dans dautres domaines que celui de la programmation.
Aprs avoir lu cet ouvrage:
vous aurez une bonne ide de ce quest la programmation;
vous matriserez les concepts de base de la programmation;
vous saurez crire de petits programmes sous Office;
vous pourrez vous lancer dans lapprentissage dun langage de programmation plus puissant.

Importance des exemples de code


Il est impossible de concevoir un ouvrage traitant de la programmation Office
sans de nombreux exemples de code car, si lon apprend programmer
en programmant, on tudie galement la programmation en examinant
le code de programmes crits par dautres. Imprimer le code de tous les
exemples au sein de cet ouvrage ne serait gure raisonnable car cela
prendrait une place considrable; il est dautre part prouv que la recopie
dun listing imprim engendre de nombreuses erreurs de retranscriptions.
Cest pour cette raison que ne sont imprims dans ce livre que de courts
exemples ou bien des extraits de programmes plus longs. Il est absolument
ncessaire que vous vous procuriez la totalit des exemples de code de
cet ouvrage qui sont disponibles sur www.dunod.com la page ddie
louvrage, ou bien sur mon site personnel www.cosi.fr dans la rubrique
Code des ouvrages.

9782100589418-Maniez-Sommaire.indd 11

01/02/2013 11:46:18

XII

______________________________

Formation VBA Office 2013

Un ouvrage vraiment conu


pour les dbutants
Cest peut-tre parce que je narrivais pas trouver les livres que javais
envie de lire que je me suis mis en crire. Cela ne veut pas dire que
mes livres sont meilleurs que les autres, mais tout simplement quils correspondent mieux mon mode dapprentissage.
Quand jai commenc apprendre programmer au dbut des annes
1980, jai dvor des dizaines de livres sur le sujet. Aprs toutes ces annes passes lire cette littrature technique sur la programmation, je
suis arriv la conclusion quil nexistait pas vritablement douvrage
conu pour les dbutants qui ny connaissent rien du tout, les livres
de programmation tant avant tout conus pour les informaticiens.
Comme mon credo est que tout le monde peut programmer et que la
programmation ne doit surtout pas tre rserve aux informaticiens, il
existe un vritable problme pour les gens qui ne sont pas informaticiens et qui souhaitent nanmoins sinitier la programmation. Ce livre
sadresse ces personnes qui veulent dcouvrir les joies (et les peines) de
la programmation avec Office. Cet objectif implique que la pdagogie
mise en uvre dans cet ouvrage prenne vritablement en compte le
manque dexprience du lecteur. Je ne prendrai quun seul exemple qui
illustre bien cette diffrence de traitement pdagogique; dans les livres
de programmation, il est ncessaire dapprendre la syntaxe (cest--dire
la grammaire) du langage de programmation tudi. En gnral, tous les
livres commencent par dcrire la syntaxe formelle, puis prennent des
exemples. Nous sommes persuads que cette mthode ne fonctionne
pas avec des dbutants qui ne sont pas habitus au formalisme de la description de la syntaxe du langage. Nous pensons au contraire quil faut
commencer par les exemples et ventuellement passer au formalisme,
aprs avoir tudi de nombreux exemples.

Pourquoi apprendre la programmation de


cinq logiciels en mme temps?
Dans les premires versions dOffice, chaque logiciel de la suite avait son
propre langage et les langages de programmation taient donc incompatibles entre eux; ainsi, par exemple, Word Basic ntait pas compatible
avec Access Basic. Avec lavnement dOffice 2000, Microsoft a ralis
un effort considrable dharmonisation et VBA est maintenant luni-

9782100589418-Maniez-Sommaire.indd 12

01/02/2013 11:46:18

Avant-propos ________________________________________ XIII

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.

Comment apprendre programmer


Office?
Au risque de rappeler une vidence, pour apprendre programmer
Office, il faut dj apprendre Office. Cette vrit premire mrite
dtre rpte tant on a vu dutilisateurs se lancer dans lapprentissage
de la programmation sans matriser les fonctionnalits lmentaires de
Word (par exemple, les styles, les modles ou bien encore les tableaux),
dExcel (criture dune formule, adresse relative ou absolue, etc.) ou
dAccess (cration de tables, de requtes ou de formulaires). Si vous
pensez que vos connaissances dOffice sont imparfaites, vous devrez
donc au pralable les approfondir.
Une fois que ces connaissances sont acquises, il faut apprendre le
langage de programmation VBA et le modle dobjets des applications
Office. Nous emploierons ici souvent lanalogie avec lapprentissage des
langues vivantes et lambition de ce livre est donc de vous enseigner
la syntaxe (le langage VBA) et le vocabulaire (le modle dobjets) de
chacun des logiciels de la suite afin que vous puissiez crire vous-mme
rapidement des programmes.
Il existe cependant une difficult importante quand on veut apprendre une langue trangre: par o commencer? La tche est immense et
la logique voudrait quavant de sexprimer on commence par matriser
la grammaire et le vocabulaire. Mais cette approche pdagogique est
bien peu efficace et chacun dentre nous se rend compte que lon napprend bien une langue quen la pratiquant, la thorie ne pouvant venir
que dans un deuxime temps.

9782100589418-Maniez-Sommaire.indd 13

01/02/2013 11:46:18

XIV

______________________________

Formation VBA Office 2013

Nous allons donc apprendre programmer en programmant et nous


tudierons la thorie seulement quand nous en aurons rellement
besoin.

Quelle version dOffice faut-il utiliser


avec ce livre?
Tous les exemples de cet ouvrage ont t conus et tests avec la
version 2013 dOffice sous Windows 8. Il est possible quils fonctionnent galement avec les versions prcdentes, mais nous ne pouvons le
garantir.

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

________________________

Chapitre 1. Quest-ce que programmer?

Rillettes aux deux saumons


Dcouper grossirement en petits ds un pav de saumon cru de 200g
et faites-le mariner au rfrigrateur pendant 4heures dans de laneth, du
sel, du poivre et le jus dun citron vert. Mlanger la prparation toutes les
heures.
Une fois le saumon cru marin, ajouter 200g de saumon fum et mixer
le tout. Rajouter 400g de fromage blanc 0% de matire grasse ainsi
quune cuillre soupe de moutarde lancienne et un peu de vinaigre
balsamique.
Afin de rendre la prparation plus ferme, rajouter 5 cuillers soupe de
son davoine et bien mlanger, puis mettre au rfrigrateur pendant deux
heures.
Rectifier lassaisonnement en cas de besoin et rajouter ventuellement de
la ciboulette, du persil et des cpres.
Servir sur du pain grill ou des galettes aux sons de bl et davoine.

Dans cette recette de cuisine qui est la porte de tous, on trouve


en fait une bonne partie des concepts de la programmation que nous
tudierons tout au long de cet ouvrage, comme les boucles, les tests
conditionnels et les fonctions.
Si vous ntes pas trs port sur la cuisine et que cet exemple ne vous
dit pas grand-chose, vous avez sans doute dj ralis le montage dun
meuble en kit; cette opration sapparente galement la ralisation
dun programme informatique. Si vous commencez rflchir certaines oprations de la vie quotidienne, vous vous rendrez alors compte
quil existe de nombreuses activits o lon doit reproduire en squence
toute une srie dactions afin daboutir un rsultat. Prendre son petitdjeuner le matin ou bien se laver les dents sont en gnral des activits
qui sont parfaitement codifies et que vous accomplissez tous les jours
sans vous poser de questions. Pourtant, au sens informatique du terme,
il sagit de programmes que vous excutez. Programmer consiste crire
le scnario complet de ces activits pour arriver un rsultat toujours
identique ; dans le cas du petit-djeuner, le but est dingrer des aliments qui apporteront suffisamment de calories pour vous permettre de
tenir le coup jusquau repas de midi. Excuter un programme consiste
effectuer les unes aprs les autres les diffrentes instructions dun scnario qui bien entendu na pas besoin dtre crit dans la vie courante:
prendre le tube de dentifrice, ouvrir le tube, taler la pte sur la brosse
dents, refermer le tube, etc.

9782100589418-Maniez-Chap01.indd 4

06/02/2013 09:57:55

Plusieurs niveaux de programmation ___________________________

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.

Plusieurs niveaux de programmation


De la mme manire quil existe des recettes de cuisine plus ou moins
compliques, il existe plusieurs niveaux de programmation. On peut
considrer que le premier niveau de programmation dans Office consiste ni plus, ni moins, paramtrer le logiciel afin quil rponde nos
exigences particulires. Ainsi, le simple fait de renseigner la bote de
dialogue des options de Word est une programmation basique dans la
mesure o lon va donner des instructions Word pour quil se comporte de la manire souhaite (par exemple, afficher les codes de champ).
De la mme manire, la rorganisation du ruban est aussi une forme
lmentaire de programmation.
Le deuxime niveau est lautomatisation de certaines tches rptitives grce la sauvegarde des oprations accomplies les unes la suite
des autres: on parle alors de macro-commandes (ou macros). Il existe
certains logiciels (notamment Word et Excel) qui permettent denregistrer la squence des oprations que vous tes en train de raliser et qui
vous autorisent ensuite rejouer cette squence quand vous le dsirez.
Cest un peu le principe du magntoscope: vous enregistrez et vous rejouez autant de fois que vous le voulez et quand vous le voulez.
Le troisime niveau est lcriture de fonctions qui sont absentes du
logiciel que vous utilisez, que ce soit le systme dexploitation ou bien
un des logiciels de la suite Office. Imaginons que vous ayez souvent besoin dans Excel de convertir des valeurs exprimes en minutes en valeurs exprimes en heures; ainsi la valeur 230 devra tre convertie
en 3heures et 50minutes. ma connaissance, une telle fonction
nexiste pas dans Excel et vous pouvez, laide du langage de programmation dOffice, crire votre propre fonction de conversion et faire en
sorte que votre programme devienne une nouvelle fonction intgre
dExcel.

9782100589418-Maniez-Chap01.indd 5

06/02/2013 09:57:56

________________________

Chapitre 1. Quest-ce que programmer?

Le dernier niveau est lcriture de programmes complets prenant en


charge une tche complexe, par exemple un logiciel de facturation. Le
programme prend en compte tous les aspects dune application: linterface utilisateur (les botes de dialogue et les formulaires de saisie), les
calculs et les impressions.
Un programme consiste donc en une squence dinstructions ncessaires pour atteindre un but. Avant dcrire un programme, il faut toujours dterminer prcisment le but atteindre et chacun comprendra
que plus lobjectif est complexe, plus le programme sera long et difficile
crire.

Les langages de programmation


La recette de cuisine cite plus haut est rdige en langage naturel alors
que les programmes informatiques scrivent laide de langages de programmation. De la mme manire que les langues vivantes sont censes obir des rgles de grammaire, les langages de programmation
suivent des rgles que lon nomme syntaxe. Alors que les langues naturelles tolrent assez bien les approximations (tout le monde comprend
la phrase Jai mme pas eu peur malgr labsence de la ngation),
les langages informatiques sont beaucoup plus puristes et pointilleux, si
bien que la moindre omission dune virgule, dune parenthse ou bien
dun point sera immdiatement sanctionne. Le caractre strict de la
syntaxe dun langage informatique est parfois mal vcu par les apprentis
programmeurs; il faut bien comprendre que lordinateur, la diffrence
dun tre humain, ne peut pas interprter les mots qui manquent et les
phrases mal construites. Larchitecture binaire dun ordinateur a pour
consquence quun programme est syntaxiquement correct ou incorrect
et quil ne peut pas y avoir de juste milieu. Un programme peut donc
planter, cest--dire sarrter brutalement, parce que vous avez oubli un
point-virgule dans le code.
Dfinition
On appelle code ou code source, voire source, lensemble des lignes
dun programme, et encoder ou coder, le fait de transcrire les actions
excuter dans un langage informatique.

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

parat incertain car on ne sait pas si x vaut 20 (on a additionn puis


multipli) ou 14 (on a multipli puis additionn). La simple utilisation
de parenthses lvera, dans le cas prsent, lambigut.
Remarque
En ralit, la plupart des langages de programmation considreront quil
ny a pas dambigut dans cette formule de calcul car loprateur de la
multiplication est prioritaire sur celui de laddition. Les oprateurs mathmatiques (+, -, * et /) ont un degr de priorit les uns par rapport aux
autres qui dtermine lordre dans lequel les oprations mathmatiques sont
effectues.

Les phases de conception dun programme


Quel que soit le langage employ pour crire un programme, il existe
une mthodologie pour le rdiger. On a lhabitude de dcomposer lcriture dun programme en diffrentes phases.

9782100589418-Maniez-Chap01.indd 7

06/02/2013 09:57:56

________________________

Chapitre 1. Quest-ce que programmer?

La phase dtude pralable


Sil fallait rsumer cette premire tape par une maxime, nous proposerions : Rflchir avant dagir ! . En effet, avant dcrire un programme quelconque, la premire des choses faire est dteindre son
ordinateur et de rflchir. On peut notamment commencer par se poser
les questions suivantes:
Quel est lobjectif de ce programme?
Nest-il pas plus rapide de raliser cet objectif manuellement?
Cet objectif a-t-il rellement un intrt?
Ce programme nexiste-t-il pas dj sous une autre forme?
Ce programme est-il ralisable?
La ralisation de ce programme nest-elle pas trop coteuse?
Bien videmment, il existe de nombreux cas o vous pourrez crire
un programme sans vous poser toutes ces questions. Ainsi, quand vous
voudrez rdiger un programme trs simple pour automatiser une tche
prcise qui nest pas complexe, vous pourrez foncer bille en tte. En
revanche, ds que le projet de programmation devient un peu plus ambitieux, il vaut vraiment mieux se poser des questions avant de programmer. Cette manire de faire sapparente (ou devrait sapparenter)
la pratique des informaticiens professionnels. En tant quamateur, vous
pensez peut-tre pouvoir vous dispenser de toute cette rigueur qui est
lapanage du professionnel, mais vous auriez tort dagir de la sorte. On
peut programmer en dilettante tout en adoptant une dmarche professionnelle; cela nest pas contradictoire! En fait, la programmation est
une discipline exigeante et si lon ne respecte pas un minimum les rgles
du jeu, on risque de ne pas arriver au but que lon stait assign, ce
qui engendrera dconvenues et frustrations. De trs nombreux projets
informatiques ne sont pas mens jusquau bout car on a nglig la phase
de dfinition de lobjectif du logiciel. Si cette description nest pas assez
complte, tout ldifice risque dtre compromis. Ne perdez jamais de
vue que lon ne programme pas pour programmer, mais toujours pour
atteindre un but. Quand un architecte dessine les plans dune maison, il
doit avoir une ide prcise de ce que souhaite son client.

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

Les phases de conception dun programme _______________________

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.

Par exemple, voici lalgorithme pour trouver si un nombre entier est


pair:
Diviser le nombre entier par2,
Si le reste de la division est0, le nombre est pair,
Sinon, le nombre est impair.
On peut alors dcrire tout le droulement du programme dans un langage quasi naturel que lon appellera pseudo-code. Voici un exemple de
pseudo-code qui permet dappliquer un tarif rduit pour les mineurs:
Demander lutilisateur sa date de naissance,
Si lutilisateur a moins de 18ans,
Diviser le prix par deux,
Sinon appliquer le prix normal.

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

________________________

Chapitre 1. Quest-ce que programmer?

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

VBA: un langage de programmation


pour les applications
VBA est lacronyme de Visual Basic pour Applications et vous rencontrerez parfois la dnomination Visual Basic Edition Application qui est
tombe en dsutude. Il sagit donc dune version de Visual Basic pour
les applications. Le langage de programmation Basic est un langage assez ancien qui a t cr en 1965; langage dinitiation (Basic signifie
Beginners All-purpose Symbolic Instruction Code), il a connu dinnombrables versions sur la plupart des systmes dexploitation. Pour Bill Gates,
il sagit pourtant dun langage ftiche car cest le premier programme
quil a crit et commercialis avec son ami Paul Allen. Il sagissait
lpoque dune version de Basic pour un ordinateur baptis Altair. Lorsque nos deux compres crrent Microsoft et proposrent leur systme
dexploitation IBM, une version du langage Basic tait bien videmment propose dans le package. Chacun connat la suite de lhistoire

9782100589418-Maniez-Chap01.indd 10

06/02/2013 09:57:56

VBA: un langage de programmation pour les applications

______________

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.

Diffrences entre Visual Basic et VBA


La principale diffrence entre Visual Basic et VBA rside dans le fait
que VBA a besoin dune application hte pour pouvoir excuter ses programmes. Les applications htes de VBA sont essentiellement les applications de la suite Office, mais dautres programmes, comme Autocad,
peuvent tre programms laide de VBA. Si vous crivez une macro
en VBA pour Word, vous devez absolument possder Word pour faire
tourner votre programme.
En revanche, si vous crivez un programme en Visual Basic, vous
pouvez le compiler afin de produire un fichier excutable autonome qui
pourra tre lanc sur un ordinateur qui ne dispose pas de Visual Basic.
cette diffrence prs, les deux langages sont extrmement proches
et il est particulirement ais de passer de lun lautre.

9782100589418-Maniez-Chap01.indd 11

06/02/2013 09:57:56

12

________________________

Chapitre 1. Quest-ce que programmer?

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

____________________________ Chapitre 2. Enregistrer une macro

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.

Quand devez-vous enregistrer une macro?


Chaque fois que vous ralisez une tche rptitive dans Word ou Excel,
vous devez vous poser la question de lintrt dune macro. Il nest nul
besoin que la tche accomplir soit excessivement longue; il suffit simplement que vous laccomplissiez souvent. Si, par exemple, vous devez
tous les jours imprimer la dixime page dun document, vous pouvez
enregistrer une macro qui automatisera cette tche. Mme si le temps
gagn est en loccurrence minime (une dizaine de secondes), vous devez
systmatiser cette dmarche qui vous permettra au final dconomiser
un temps apprciable.
En crivant des macros, vous allez travailler plus intelligemment et
puis vous gagnerez en efficacit car, quand une macro fonctionne bien,
elle fonctionne bien tout le temps.
A contrario, il ne sert rien denregistrer une macro pour une tche
que vous naccomplissez quune seule fois ou de manire trs pisodique.
Mme si le fait denregistrer une macro nest pas complexe et ne prend
que quelques secondes en plus, il est inutile de le faire si vous navez pas
loccasion dexploiter la macro enregistre.

9782100589418-Maniez-Chap02.indd 14

31/01/2013 14:37:20

Lenregistreur de macro _ _________________________________

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.

Enregistrement de votre premire macro


Imaginez, par exemple, que vous deviez souvent remettre en forme des
documents Word dans lesquels lutilisateur na pas cru bon de saisir un
espace inscable avant le caractre deux-points. Pour ce faire, une simple commande de recherche et de remplacement fait laffaire et cette
opration nest pas trs longue, mais si elle doit se rpter souvent, elle
deviendra vite fastidieuse. Nous allons voir comment nous pouvons facilement lautomatiser grce une macro.
Remarque
Dans un document de traitement de texte, vous devez saisir un espace
inscable avant les caractres deux-points, point-virgule, point dinterrogation, point dexclamation, ainsi quentre les mots qui forment un groupe qui
ne doit pas tre coup, comme dans LouisXVI ou bien encore les dates
et les nombres. Pour visualiser les espaces et les espaces inscables dun
document Word, utilisez la commande Afficher tout qui se trouve dans le
groupe Paragraphe de longlet Accueil (symbole de la pompe essence, le
raccourci clavier tant CTRL +Majuscule +8).

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

You might also like