Vous êtes sur la page 1sur 37

Introduction la programmation et

lalgorithmique en VBA pour Excel


Ccile Le Pape
cecile.lepape@lip6.fr
http://webia.lip6.fr/~lepape/ens/infogen1

Rfrences
http://aigespc57.cicrp.jussieu.fr/algo/index.htm Introduction
l'algorithmique. Christophe Darmangeat
Programmation et Algorithmique en VBA pour Excel. Anne
Brygoo et al. (Ed. Dunod.)
Excel 2003, Programmation VBA. Daniel-Jean David (Ed.
Eyrolles)
Les cahiers d'exercices Excel 2007 : Macros et programmation
en VBA. Pierre Rigollet (Ed. ENI)

Prambule
Ce cours est une introduction lalgorithmique et la
programmation.

Programmer vous permet deffectuer des calculs automatiques complexes

Vous apprendrez simultanment rflchir (algorithmique) et


programmer dans un langage concret (VBA)

Lanne prochaine, nous poursuivrons ce cours par un cours de


programmation VBA/Excel avanc (objets, formulaires, activeX, )

Il est illustr par lapprentissage du langage VBA pour Excel.

VBA pour Excel a t choisi (au lieu de C) pour sa simplicit


dapprentissage par les dbutants.

Il permet dcrire des programmes interactifs graphiques excuts dans le


tableur Excel, comptence ludique et utile en entreprises.

Plan du cours 1
1. Information et ordinateurs
1.

Reprsentation de linformation dans un ordinateur

2.

Codage binaire et hexadcimal

2. Introduction lalgorithmique
1.

Dfinition dun algorithme

2.

De lalgorithme au programme

3. Programmer en VBA avec Excel

1.

Prsentation dExcel

2.

Lditeur de programmes VBE

Architecture des ordinateurs


carte mre

CPU (microprocesseur)
mmoire vive (RAM)

cran

cartes de priphriques

alimentation

clavier

lecteur de disque (CD,


DVD)
disque dur

souris
5

Les ordinateurs ne pensent pas, ils calculent !


Les ordinateurs sont capables de traiter du texte, de jouer de la
musique, de projeter des vidos, de faire tourner des jeux, etc.
Pourtant, ils ne sont capables que dune seule chose : faire des
calculs. Cest le rle du microprocesseur.
Lorsquun ordinateur traite du texte, de limage, du son ou de la
vido, il ne traite quune seule chose : des nombres.
Plus simple, il ne connat pas le nombre 3 ou -10, encore moins
2,51 ou .
Un ordinateur manipule exclusivement des informations
binaires.

Quest-ce quune information binaire ?


Cest une information qui ne peut avoir que deux tats

ouvert ou ferm, libre ou occup, militaire ou civil, assis ou couch, blanc


ou noir, vrai ou faux, etc.

L'information binaire est prsente dans le monde courant

pile charge ou dcharge, secrtaire absente ou prsente, cart perfore ou


non perfore, circuit lectrique ouvert ou ferm, etc.

Un ordinateur possde diffrents supports physiques capables de


stocker de linformation binaire

La mmoire vive (la RAM ) est forme de millions de composants


lectroniques qui peuvent retenir ou relcher une charge lectrique.
La surface dun disque dur, dune bande ou dune disquette est recouverte
de particules mtalliques qui peuvent, grce un aimant, tre orientes dans
un sens ou dans lautre.
Sur un CD-ROM, on trouve un long sillon troit irrgulirement perc de
trous.

Reprsentation dune information binaire

La coutume veut quon symbolise une information binaire, quel


que soit son support physique, sous la forme de 1 et de 0.

Il faut bien comprendre que ce nest l quune reprsentation, une


image commode, que lon utilise pour parler de toute information
binaire : cest une abstraction utile pour reprsenter
linformation.
On utilise des abstractions (pas seulement binaires) tous les jours :

une mappemonde permet de se reprsenter la terre

la carte du mtro permet de se reprsenter le rseau des stations

le chiffre 4 peut avoir diffrentes reprsentations : 4

4+3=7 est une abstraction mathmatique qui vite dutiliser des morceaux
de bois ou des cailloux pour compter

IV

100

La numrotation de position
Pour reprsenter un nombre, aussi grand soit-il, nous disposons
dun alphabet spcialis : une srie de 10 signes qui sappellent
les chiffres : 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9.
Lorsque nous crivons un nombre en mettant certains de ces
chiffres les uns derrire les autres, lordre dans lequel nous
mettons les chiffres est capital.

2034 est diffrent de 4203.

Cest la position des chiffres dans le nombre qui donne sa valeur.

2034 = 2*1000+0*100+3*10+4*1.
= 2*103+0*102+3*101+4*100.

La base dcimale
En base dcimale, deux rgles sappliquent pour lcriture dun
nombre :
Rgle 1 : nous utilisons un alphabet numrique de dix
symboles.

Nous nous servons de dix chiffres, pas un de plus, pas un de moins.

Rgle 2 : la position dun de ces dix chiffres dans un nombre


dsigne la puissance de dix par laquelle ce chiffre doit tre
multipli pour reconstituer le nombre.

10

Si je trouve un 7 en cinquime position partir de la droite, ce 7 ne


reprsente pas 7 mais 7*104, soit 70 000.

Attention au dcalage de 1 entre la position et la puissance de 10 ! Si le 7


est en premire position, il reprsente 7*100, soit 7. Ce sont les units.

La reprsentation binaire
La base binaire

Les ordinateurs ont des dispositifs physiques faits pour stocker des
informations binaires. Lorsquon reprsente une information stocke par un
ordinateur, le plus simple est donc dutiliser un systme de reprsentation
deux chiffres : les fameux 0 et 1. Cest la base binaire.

Les octets

11

Avec un emplacement dinformation dordinateur, on est limit deux


choses diffrentes seulement. Avec une telle information binaire, on ne va
pas loin. Voil pourquoi, ds leur invention, les ordinateurs ont t conus
pour manier ces informations par paquets de 0 et de 1. Et la taille de ces
paquets a t fixe 8 informations binaires. Ce sont les octets.

La reprsentation binaire
Une information binaire, symbolise couramment par
0 ou 1, sappelle un bit (en anglais... bit, pour binary
digit).
Un groupe de huit bits sappelle un octet (en anglais,
byte)
Donc, mfiance avec le byte (en abrg, B majuscule),
qui vaut un octet, c'est--dire huit bits (en abrg, b
minuscule).

12

La base binaire : dcodage


En base binaire, les rgles sont les suivantes:
Rgle 1 : nous utilisons un alphabet numrique de deux
chiffres, 0 et 1.
Rgle 2 : la position dun de ces deux chiffres dans un nombre
dsigne la puissance de deux par laquelle ce chiffre doit tre
multipli pour reconstituer le nombre.
Dcodage de loctet 10110101

10110101 = 1*27+0*26+1*25+1*24+0*23+1*22+0*21+1*20
= 128+32+16+4+1
= 181

en base 2
13

en base 10

La base binaire : codage (1)


Il suffit de rechercher dans notre nombre les puissances successives de 2.

Codage de 186.

14

186 est compris entre 0 et 255 donc 186 se code sur 8 bits
Dans 186, on trouve 1 x 128, soit 1 x 27.
Je retranche 128 de 186 et jobtiens 58. Dans 58, on trouve 0 x
64, soit 0 x 26.
Je ne retranche donc rien. Dans 58, on trouve 1 x 32, soit 1 x 25.
Je retranche 32 de 58 et jobtiens 26. Dans 26, on trouve 1 x 16,
soit 1 x 24.
Je retranche 16 de 26 et jobtiens 10.Dans 10, on trouve 1 x 8,
soit 1 x 23. Je retranche 8 de 10 et jobtiens 2.
Dans 2, on trouve 0 x 4, soit 0 x 22.
Je ne retranche donc rien. Dans 2, on trouve 1 x 2, soit 1 x 21.
Je retranche 2 de 2 et jobtiens 0.Dans 0, on trouve 0 x 1, soit 0
x 20.
Il ne me reste plus qu reporter ces diffrents rsultats (dans
lordre !) pour reconstituer loctet : en binaire, 186 est
reprsent par : 10111010

27 26 25 24 23 22 21 20
?

La base binaire : codage (2)


L'autre mthode pour convertir un nombre dcimal en base 2 est d'utiliser des
successions de divisions entires par le nombre 2, jusqu obtenir un quotient
de 0. Le rsultat est obtenu en lisant les restes obtenus en sens inverse.

Codage de 186

15

186/2=93 reste 0
93/2=46 reste 1
46/2=23 reste 0
23/2=11 reste 1
11/2=5 reste 1
5/2=2
reste 1
2/2=1
reste 0
1/2=0
reste 1
fin de la division car quotient nul
Soit (en lisant les restes obtenus en sens
inverse) : 10111010

27 26 25 24 23 22 21 20
?

Octets et choix de codage dun nombre


Un octet peut servir coder 256 nombres diffrents car chaque bit
de loctet peut occuper deux tats

2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 = 28 = 256 possibilits

Diffrents choix sont possibles pour interprter un octet

la srie des nombres entiers de 1 256


la srie des nombres entiers de 0 255, comme vu prcdemment
la srie des nombres entiers relatifs de +127 +128

Cest une pure affaire de convention, de choix de codage.


Si lon veut coder des nombres plus grands que 256, ou des
nombres ngatifs, ou des nombres dcimaux, on va donc tre
contraint de mobiliser plus dun octet.

16

Avec deux octets, on a 256 x 256 = 65 536 possibilits.


Avec trois octets, on passe 256 x 256 x 256 = 16 777 216 possibilits.

Octet et codage de texte


Un octet peut coder un caractre au lieu d'un nombre

Il y a 26 lettres dans lalphabet. Mme en comptant diffremment les


minuscules et les majuscules, en y ajoutant les chiffres et les signes de
ponctuation, on arrive un total infrieur 256.

Quel caractre doit tre reprsent par quel tat de loctet?

Si ce choix tait librement laiss chaque informaticien, ou chaque


fabricant dordinateur, la communication entre deux ordinateurs serait un
vritable casse-tte. Loctet 10001001 serait par exemple traduit par une
machine comme un T majuscule, et par une autre comme une parenthse
fermante !

LASCII (American Standard Code for Information Interchange)


est un standard international de codage des caractres et des signes
de ponctuation.

17

01001110 est le codage du N (majuscule) et 01101110 du n (minuscule).

Le codage hexadcimal
Le codage hexadcimal est un codage de position en base 16.

En base seize, 16 nombres diffrents se reprsentent avec un seul symbole,


parmi {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}.

Un octet est reprsent par deux valeurs hexadcimales

Loctet est dcompos en deux paquets de 4 bits : les quatre de gauche et


les quatre de droite.

Avec 4 bits, nous pouvons coder 24= 16 nombres diffrents.

Le codage hexadcimal constitue une alternative pratique au


codage binaire car il est plus conomique et plus lisible

18

10011110 en binaire <=> 9E en hxadcimal

Le codage hexadcimal

Codage en base hexadcimale de 1001111


1.
2.
3.
4.

Dcodage de 4A

4A = 4*161 + A*160, avec A valant 10 en base dcimale


= 64 + 10
= 74

Pour viter toute ambiguit, les langages informatiques utilisent


une notation prfixe par 0x

19

dcomposition en 2 paquets de 4 bits : 1001 1110


1001 = 23+20 = 8 + 1= 9
1110 = 23+22+21 = 8 + 4 + 2 = 14 qui scrit E en base 16.
Le nombre scrit donc en hexadcimal : 9E

0x41 41

Introduction lalgorithmique

20

Quest-ce que lalgorithmique ?


Vous avez dj excut des algorithmes

Si vous avez-vous dj ouvert un livre de recettes de cuisine

Si vous avez dj dchiffr un mode demploi traduit pour faire fonctionner


un magntoscope ou un rpondeur tlphonique rticent

Vous avez dj fabriqu et fait excuter des algorithmes

Si vous avez dj indiqu un chemin un touriste gar

Si vous avez fait chercher un objet quelquun par tlphone

Lalgorithmique est une aptitude partage par la totalit de


lhumanit et qui ne sapplique pas seulement linformatique

21

Dfinition dun algorithme


On peut comparer un algorithme une recette de cuisine. Les
ingrdients ncessaires la ralisation du gteau sont les donnes
ou entres. L'algorithme est une suite d'actions qui produira des
rsultats ou sorties.
La recette du brownie
sucre
ENTREES

sucre
vanill

noix de pcan
oeuf

chocolat

ALGORITHME

SORTIES
22

Recette du brownie

brownie

farine

beurre
Poudre
damandes

Suite dactions dun algorithme


Les actions (ou instructions) qui composent un algorithme sont
squentielles

Les actions se suivent et doivent tre ralises l'une aprs l'autre,


On ne peut pas faire cuire le brownie avant d'avoir mis la pte dans le
moule.

Lalgorithme du brownie :
1.
2.
3.
4.
5.
6.
7.
8.
23

Mlanger les sucres semoule et vanill, les oeufs et la farine tamise


Faire fondre le beurre
Mlanger le beurre la pte
Faire fondre le chocolat
Mlanger le chocolat la pte
Mlanger les noix de Pcan et la poudre d'amande la pte
Versez la pte dans un moule gteau beurr
Mettre cuire 35 minutes dans le four prchauff 170C.

Reprsentation sous forme dorganigramme


chocolat, sucre semoule,sucre vanill, oeufs,
farine, beurre, poudre damandes, noix de Pcan
Mlanger les sucres semoule et vanill, les ufs et la farine tamise
Faire fondre le beurre
Mlanger le beurre la pte
Faire fondre le chocolat
Mlanger le chocolat la pte
Mlanger les noix de Pcan et la poudre damandes la pte
Verser la pte dans un moule gteau beurr
Mettre cuire 35 minutes dans un four prchauff 170C
brownie
24

Faut-il tre matheux pour tre bon en algo ?


Cette opinion sert rgulirement dexcuse

"Moi, de toute faon, je suis mauvais(e) en algo, jai jamais rien pig aux
maths ". Mais faut-il tre " bon en maths " pour expliquer correctement son
chemin quelquun ?

La matrise de lalgorithmique requiert deux qualits :

25

il faut tre rigoureux. Chaque fois quon crit une srie dinstructions, il
faut se mettre la place de la machine qui va les excuter pour vrifier si le
rsultat obtenu est bien celui que lon voulait. Mais cette opration ne
requiert pas la moindre once dintelligence, uniquement dtre mthodique.

il faut avoir une certaine intuition. Aucune recette ne permet de savoir a


priori quelles instructions permettront dobtenir le rsultat voulu. Cest l,
si lon y tient, quintervient la forme "dintelligence" requise pour
lalgorithmique. Alors, cest certain, il y a des gens qui ont au dpart
davantage cette intuition que les autres. Mais mais dune part, les
rflexes, cela sacquiert, et lexprience finit par compenser largement bien
des intuitions.

De lalgorithme au programme

26

Dfinition dun programme informatique


Ecrire un programme revient crire un algorithme dans un
langage comprhensible par un ordinateur.

Un programme informatique est une liste d'ordres indiquant un


ordinateur ce qu'il doit faire. Il se prsente sous la forme d'une ou plusieurs
squences d'instructions devant tre excutes dans un certain ordre par un
processeur, et comportant souvent des donnes dentres charges dans la
mmoire vive.

Un programme informatique est crit dans un langage de


programmation.

27

Le langage permet la personne qui rdige un programme de faire


abstraction de certains mcanismes internes, gnralement des
activations et dsactivations de commutateurs lectroniques, qui aboutissent
au rsultat dsir.
Contrairement un algorithme qui scrit dans un langage de pseudo-code,
un programme doit tre correct syntaxiquement (pas de fautes
dorthographe !).
Un mme algorithme peut tre crit dans des dizaines de langages de
programmations diffrents.

Langages de programmation
Le langage machine

Cest la suite de bits qui est interprte par le processeur de l'ordinateur lors
de l'excution d'un programme, chaque instruction tant caractrise par un
code dopration.

Exemple en MIPS : 000000 00001 00010 00110 00000 100000


signifie " ajouter les registres* 1 et 2 et placer le rsultat dans le registre 6"

Le langage d'assemblage (ou simplement assembleur)

28

Langage proche du langage machine qui peut tre directement interprt


par le processeur de l'ordinateur tout en restant lisible par un humain, cr
pour faciliter le travail des programmeurs. Il consiste reprsenter les
combinaisons de bits employes en langage binaire par des symboles.

Exemple : mov 1,$0x61 signifie "mettre la valeur hexadcimale 61


dans le registre 1 ".

*registre = case mmoire propre au processeur.

Langages de programmation
Le langage C

Langage dassemblage de haut niveau qui offre une syntaxe plus lisible que
lassembleur tout en permettant de gardant la matrise des ressources
utilises (ex : lusage de la mmoire). Utilis pour programmer les systmes
dexploitation (ex : Linux), les systmes embarqus (ex : lecteur mp3), les
calculs intensifs,
Exemple : int i = 3; signifie "rserver un emplacement mmoire de la
taille dun entier, nommer-le i, et y mettre la valeur 3"

Le Basic

29

Le BASIC (Beginner's All-purpose Symbolic Instruction Code ) a t


conu la base en 1963 pour permettre aux tudiants ne travaillant pas dans
des filires scientifiques d'utiliser les ordinateurs (et mme de programmer
sa calculatrice), ne ncessitant pas la comprhension du matriel de
lordinateur.
Exemple : INPUT "Quel est votre nom ?"; NOM$ signifie
"afficher le message Quel est votre nom ? dans le terminal et sauvegarder la
rponse dans un emplacement mmoire quon appellera NOM."

Langages de programmation
Le Visual Basic (VB)

Visual Basic est un environnement de dveloppement intgr propritaire


pour le langage BASIC sous Windows, dit par Microsoft.

Le Visual Basic est une volution des Basics prcdents de Microsoft


(Basica, GW Basic, Qbasic) qui permet de crer des applications fentres/
Bnficiant de la simplicit du Basic originel, il permet de crer des
programmes relativement rapidement. Le programmeur en Visual Basic
manipule des lments visuels l'cran auxquels il ne reste plus qu'
associer du code.

Le Visual Basic for Application (VBA)

30

Le langage de programmation des applications de Microsoft Office (Excel,


Word, Access, PowerPoint, FrontPage, Outlook, )

VBA permet dautomatiser les tches, de crer des applications compltes,


de scuriser vos saisies et vos documents, de crer de nouveaux menus et
de nouvelles fonctions pour personnaliser et booster votre logiciel.

De lalgorithme au programme
Pourquoi apprendre lalgorithmique pour apprendre
programmer ? En quoi a-t-on besoin dun langage spcial, distinct
des langages de programmation comprhensibles par les
ordinateurs ?

Lalgorithmique exprime les instructions rsolvant un problme donn


indpendamment des particularits de tel ou tel langage.

Pour prendre une image, si un programme tait une dissertation,


lalgorithmique serait le plan, une fois mis de ct la rdaction et
lorthographe. Or, vous savez quil vaut mieux faire dabord le plan et
rdiger ensuite que linverse

Dans ce cours, nous utiliserons le langage VBA pour Excel pour


programmer (on dit aussi coder) nos algorithmes.

31

Langage simple avec environnement graphique

Aide la saisie et la correction (dbogage) intgre

Programmer en VBA avec Excel

32

Prsentation dExcel
Excel = Tableur

Collection de feuilles (sheet) composes de cellules (cells).

Un cellule est lintersection entre une lignes et une colonne. Ex : A1, B15

33

Les feuilles sont regroupes en classeurs (workbook).

Prsentation dExcel
Utilisation dExcel

Organisation et stockage des donnes. Exemple : les notes des tudiants.

Calculs automatiques. Exemple : la note moyenne dun groupe dtudiants.

Production automatique de graphiques. Exemple : dessiner un histogramme


de rpartition des notes.

recalcul
automatique
de la moyenne

34

Editeur de macro Excel


Macro = programme VBA

Enregistrement de toutes les commandes effectues par lutilisateur pour


viter la rptition dune tche
Mais ce nest rien dautre quun programme crit en VBA.
Avant quExcel nutilise ce langage de programmation, le logiciel utilisait
son propre langage de programmation et une application tait appele
macro , pour macro-commande. Ce terme est rest.

Editeur de code ou VBE (Visual Basic Editor)

35

Cest l'environnement de programmation de VBA. Il se lance par le menu


Outils > Macro > Visual-Basic-Editor ou par le raccourci clavier
Alt+F11 .
Une fois dans VBE, slectionner un texte et obtenez laide avec F1.

Editeur de code VBE

36

1 - Fentre VBAProject. Elle prsente les diffrents projets ouverts et permet de


naviguer facilement entre vos diffrentes feuilles de codes VBA.

2 - Fentre Code. C'est l'endroit ou vous allez saisir votre code VBA.

3 - Fentre Proprits. Proprits de l'objet slectionn.

4 - Fentre Excution. Elle permet de tester une partie du code. Elle peut s'avrer trs
utile pour voir comment s'excutent certaines lignes de code.

Exemple de programme VBA

37

Vous aimerez peut-être aussi