Vous êtes sur la page 1sur 12

Extrait : 12 pages sur 21

PAD INPT

Cours VBA, Semaine 1

A LGORITHMIQUE ET

PROGRAMMATION 1

maijuin 2006

Algorithmique et programmation : les bases (VBA)


Corrig
Rsum
Ce document dcrit lcriture dans le langage VBA des lments vus en algorithmique.

Table des matires


1 Pourquoi dfinir notre langage algorithmique ?

2 Structure dun algorithme


2.1 Exemple dalgorithme : calculer le primtre dun cercle
2.2 Structure de lalgorithme . . . . . . . . . . . . . . . . .
2.3 Identificateurs . . . . . . . . . . . . . . . . . . . . . . .
2.4 Commentaires . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.

3
3
3
4
4

3 Variables
3.1 Quest ce quune variable ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Dfinition dune variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4
4
4

4 Types fondamentaux
4.1 Les entiers . . . . . . . .
4.2 Les rels . . . . . . . . .
4.3 Les boolens . . . . . .
4.4 Les caractres . . . . . .
4.5 Les chanes de caractres

5
5
5
5
6
6

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.
.

5 Constantes

6 Expressions

7 Instructions dentre/sorties
7.1 Opration dentre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 Opration de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6
6
7

8 Affectation

Cours VBA, Semaine 1

c INPTPAD

1/21

A LGORITHMIQUE

ET PROGRAMMATION

Algorithmique et programmation : les bases (VBA)

9 Structures de contrle
9.1 Enchanement squentiel . . . . . . . . .
9.2 Instructions conditionnelles . . . . . . . .
9.2.1 Conditionnelle Si ... Alors ...
9.2.2 Conditionnelle Si ... Alors ...
9.2.3 La clause SinonSi . . . . . . . .
9.2.4 Conditionnelle Selon . . . . . . .
9.3 Instructions de rptitions . . . . . . . . .
9.3.1 Rptition TantQue . . . . . . . .
9.3.2 Rptition Rpter ... Jusqu . .
9.3.3 Rptition Pour . . . . . . . . . .
9.3.4 Quelle rptition choisir ? . . . .

. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
FinSi . . . . . . . . . .
Sinon ... FinSi . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

9
9
9
9
11
13
14
15
15
18
20
21

Liste des exercices


Exercice 1 : Cube dun rel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Exercice 2 : Permuter deux caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Exercice 3 : Cube dun rel (avec une variable) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Exercice 4 : Une valeur entire est-elle paire ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Exercice 5 : Maximum de deux valeurs relles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Exercice 6 : Signe dun entier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Exercice 7 : Rponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Exercice 8 : Somme des premiers entiers (TantQue) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Exercice 9 : Saisie contrle dun numro de mois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Exercice 10 : Plusieurs sommes des n premiers entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Exercice 11 : Saisie contrle dun numro de mois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Exercice 12 : Somme des premiers entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Cours VBA, Semaine 1

c INPTPAD

2/21

A LGORITHMIQUE

ET PROGRAMMATION

Algorithmique et programmation : les bases (VBA)

1 Pourquoi dfinir notre langage algorithmique ?


2 Structure dun algorithme
2.1 Exemple dalgorithme : calculer le primtre dun cercle
Un exemple dalgorithme/programme est donn ci-dessous. Il dcrit comment obtenir le primtre dun cercle partir de son diamtre. Cet exemple est volontairement trs simple.
Listing 1 Programme VBA pour calculer le primtre dun cercle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

Attribute VB_Name = "exo00_calculer_perimetre"


*********************************************************************
Auteur : Claude Monteil <monteil@ensat.fr>
Version : 1.0
Titre : Dterminer le perimetre dun cercle partir de son rayon.
*********************************************************************
Sub perimetre_cercle()
Const PI As Double = 3.14159
Dim rayon As Double le rayon du cercle lu au clavier
Dim perimetre As Double le perimetre du cercle
EffacerEcran "Primtre dun cercle"
1.Saisir le rayon
Afficher "Rayon = "
Saisir rayon
2.Calculer le perimetre
perimetre = 2 * PI * rayon
par definition
3.Afficher le perimetre
Afficher "Le perimetre est : " & perimetre
End Sub

2.2 Structure de lalgorithme


La structure dun programme Visual BASIC est proche de celle dun algorithme. Dans lenvironnement Excel, une fois lanc lditeur Visual BASIC (menu "Outils / Macro / Visual BASIC
Editor", ou raccourci ALT-F11), il faut crer un module (menu "Insertion / Module") dans lequel on crit le programme. On peut sauvegarder rgulirement le programme (inclus dans le
fichier Excel) par le menu "Fichier / Enregistrer" (ou icne correspondante, ou raccourci Ctrl-S,
le S tant linitiale de Save ou Sauvegarder). On peut aussi sauvegarder un module de manire
spare en lexportant (menu "Fichier / Exporter un fichier") : cela cre un fichier dextension
.bas (pour Basic), qui peut ensuite tre rimport dans dautres classeurs Excel, ou dautres environnements utilisant Visual Basic. Le module commence classiquement par un cartouche faisant
apparatre le nom des auteurs du programme, la version ou la date de ralisation et lobjectif du
programme. Ces lments sont mis dans des commentaires (cf. plus bas) et seront donc ignors
par linterprteur. Les dclarations et instructions sont regroupes entre Sub NomDuProgramme et
Cours VBA, Semaine 1

c INPTPAD

3/21

A LGORITHMIQUE

ET PROGRAMMATION

Algorithmique et programmation : les bases (VBA)

End Sub.

La constante PI est dfinie par le mot-cl Const. Il correspond donc une dfinition.
Notons quen Visual BASIC les constantes sont types. Les instructions sont les mmes que
celles prsentes en langage algorithmique mme si elles ont une forme un peu diffrente.
Remarque : Dans le cadre de lapplication de cet enseignement de lalgorithmique en Visual BASIC, nous utiliserons comme premire instruction de tous les exemples linstruction
EffacerEcran "Nom de lexemple" qui a pour effet deffacer la feuille de calcul courante (utilise comme cran daffichage) et dafficher en tte de la feuille le message mis entre guillemets
( adapter chaque exemple, bien videmment). Ceci permettra que les affichages raliss lors
de lexcution-test dun programme en cours de mise au point ne soient pas mlangs avec les
affichages raliss lors des prcdentes excutions.

2.3 Identificateurs
Un identificateur est un mot de la forme : une lettre (y compris le soulign) suivie dun
nombre quelconque de lettres et de chiffres ou du caractres soulign (mme touche de clavier
que le 8).
Remarque : Bien quil soit possible en VBA dutiliser des lettres accentues, cette pratique est
bannir pour des raisons de compatibilit !

2.4 Commentaires
Un commentaire commence par (caractre "quote" situ sur la touche 4) et se termine la
fin de la ligne.

3 Variables
3.1 Quest ce quune variable ?
3.2 Dfinition dune variable
En VBA, on utilise le mot-cl Dim suivi par le nom de la variable, le mot-cl As puis le type
de la variable.
1
2
3

Dim prix_unitaire As Double


prix unitaire dun article (en euros)
Dim quantite As Integer
quantit darticles commands
Dim nom As String
nom de larticle

Les types et leur signification seront prsents dans la suite du cours. On peut dclarer plusieurs
variables sur une mme ligne condition de sparer chaque dfinition (nom de variable puis
As puis le type) par une virgule. Ce raccourci est usuellement utilis si le mme commentaire
sapplique toutes les variables.
1

Dim a As Integer, b As Integer, c As Integer

Cours VBA, Semaine 1

c INPTPAD

trois entiers

4/21

A LGORITHMIQUE

ET PROGRAMMATION

Algorithmique et programmation : les bases (VBA)

Attention : Le type doit imprativement tre rpt pour chaque variable (il serait incorrect
dcrire Dim a, b, c As Integer, les 2 premires variable a et b se voyant affecter un type par
dfaut qui nest pas Integer).

4 Types fondamentaux
Les oprateurs de comparaison entre les types fondamentaux se notent : <, >, <=, >=, = et <>.

4.1 Les entiers


Le type entier se note Integer. La division entire seffectue avec loprateur \, et le reste
de la division entire sobtient avec loprateur Mod.
1
2

20 \ 3
6 (le quotient de la division entire de 20 par 3)
20 mod 3
2 (le reste de la division entire de 20 par 3)

Remarque : Les dbordements de capacit sur les oprations entires provoquent une erreur
lexcution. Ainsi, le type Integer est limit des valeurs entre -32678 et +32767. Pour des
capacits plus grandes, on peut utiliser le type Long, permettant des valeurs entre + ou - 2 milliards.

4.2 Les rels


Il existe deux types rels, les rels en simple prcision (Single), autorisant 7 chiffres significatifs en virgule flottante, et les rels en double prcision (Double), autorisant 15 chiffres
significatifs. La valeur absolue sobtient par la fonction prdfinie Abs. La partie entire dun
rel sobtient par la fonction Int ou la fonction Fix : ces 2 fonctions ont un comportement
identique pour les rels positifs (par exemple Int(3.14) correspond 3) mais se diffrencient
pour les rels ngatifs (Int(-3.14) correspond -4, tandis que Fix(-3.14) correspond -3).
On peut galement arrondir un rel en un entier avec la fonction Round : Round(3.14) vaut 3, et
Round(3.5) vaut 4.

4.3 Les boolens


Le type boolen est Boolean. Les deux valeurs que peuvent prendre des variables boolennes
se notent True et False. Les oprateurs logiques se notent And pour Et, Or pour Ou et Not pour
Non.
Remarque : Les expressions boolennes sont toujours values totalement, mme si un rsultat
partiel permet de connatre le rsultat total. Par exemple, True Or expression calculera toujours
lexpression, mme si on sait que le rsultat sera forcment True quelle que soit la valeur de
lexpression.

Cours VBA, Semaine 1

c INPTPAD

5/21

A LGORITHMIQUE

ET PROGRAMMATION

Algorithmique et programmation : les bases (VBA)

4.4 Les caractres


Le type caractre nexiste pas en tant que tel en VBA. Ce nest quun cas particulier des
chanes de caractres (cf. paragraphe suivant). Les fonctions algorithmiques Chr et Ord se notent
respectivement Chr(i) et Asc(c).
1
2

c = "A"
la valeur de c est "A"
i = Asc(c)
la valeur de i est 65, code ASCII de "A"

4.5 Les chanes de caractres


Une chane se dclare avec le mot-cl String. Une chane peut contenir jusqu 64 milliers
de caractres. Il nest pas utile de spcifier de taille maximale dans la dclaration dune variable
chane.
1
2

Dim chaine As String


chaine = "bonjour"

5 Constantes
Les constantes sont dfinies en utilisant le mot-cl Const la place de Dim, en faisant suivre
le type de la variable par sa valeur derrire le symbole = :
1
2
3
4
5

Cons PI As Single = 3.1415


Valeur de PI
Const MAJORITE As Integer = 18
Age correspondant la majorit
Const TVA As Single = 19.6
Taux de TVA en %
Const CAPACITE as Integer = 160
Nombre maximum dtudiants dans une promotion
Const INTITULE As String = "Algorithmique et programmation"
par exemple

6 Expressions
7 Instructions dentre/sorties
7.1 Opration dentre
En standard, le VBA utilise linstruction InputBox qui permet deffectuer une saisie dans une
bote-message fugitive. Dans le cadre de ce module dalgorithmique, nous utiliserons linstruction Saisir qui permet de saisir au clavier la valeur dune variable et de garder trace dans la
feuille de calcul courante de ce qui a t saisi :
1

Saisir Variable1

Attention : Il ne faut pas utiliser de parenthses autour de la variable, contrairement linstruction algorithmique Lire(Variable1). Une variante de linstruction de saisie permet de proposer
lutilisateur une valeur par dfaut qui sera affecte la variable sil se contente de valider la
saisie sans entrer de valeur particulire :
Cours VBA, Semaine 1

c INPTPAD

6/21

A LGORITHMIQUE

1
2

ET PROGRAMMATION

Algorithmique et programmation : les bases (VBA)

Saisir Duree, 5
la valeur 5 est affiche en prslection dans la bote-message :
si lusager valide directement par la touche Retour-chariot, la valeur 5 sera af

7.2 Opration de sortie


En standard, le VBA utilise linstruction MsgBox qui permet dafficher des informations dans
une bote-message fugitive. Dans le cadre de ce module dalgorithmique, nous utiliserons linstruction Afficher qui permet dafficher les informations dans la feuille de calcul courante.
1

Afficher "La dure vaut " & Duree

Noter lutilisation de loprateur de concatnation & pour composer un message unique rassemblant plusieurs informations mises bout bout (ici, une chane littrale et le contenu dune variable).
Attention : Tout comme pour linstruction de saisie, il ne faut pas utiliser de parenthses autour
des informations afficher, contrairement linstruction algorithmique Ecrire("La dure vaut", Duree).
Il est galement possible dutiliser la forme suivante utilisant la virgule comme sparateur :
1

Afficher "La dure vaut ", Duree

Dans ce cas, la valeur de la variable Duree sera place dans la colonne suivante de la feuille
de calcul. Cette forme sera utile si on veut afficher des informations tabules. Noter que, si le
premier lment "La dure vaut " ne rentre pas dans la premire colonne, la partie qui dpasse
sera tronque laffichage et napparatra donc pas. Linstruction Afficher "" utilise avec un
chane vide (symbole " redoubl, et non pas 4 fois la quote simple) permet de sauter une ligne.
Exercice 1 : Cube dun rel
crire un programme qui affiche le cube dun nombre rel saisi au clavier.
Solution :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

R0 : Afficher le cube dun nombre rel


Tests :
0 -> 0
1 -> 1
2 -> 8
-2 -> -8
1.1 -> 1,331
R1 : Raffinage De Afficher le cube dun nombre rel
| Saisir un nombre rel
x: out Rel
| Afficher le cube de x
x: in Rel
R2 : Raffinage De Afficher le cube de x
| crire(x * x * x)

8 Affectation
Laffectation se note avec un signe =.
Cours VBA, Semaine 1

c INPTPAD

7/21

A LGORITHMIQUE

ET PROGRAMMATION

Algorithmique et programmation : les bases (VBA)

Attention : Il ne faut pas confondre laffectation et le test dgalit, mme sils utilisent le mme
oprateur =. Le contexte permet de les diffrencier sans ambigut : un test dgalit apparat
dans une condition place derrire If, While ou Until (cf. chapitre suivant sur les structures de
contrle).
1
2

i = 10
affectation
If i=10 Then
test dgalit

Exercice 2 : Permuter deux caractres


crire un programme qui permute la valeur de deux variables c1 et c2 de type caractre.
Solution : Le principe est dutiliser une variable intermdiaire (tout comme on utilise un rcipient intermdiaire si lon veut changer le contenu de deux bouteilles).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

Attribute VB_Name = "exo02_permuter"


*********************************************************************
* Auteur : Claude Monteil <monteil@ensat.fr>
* Version : 1.0
* Objectif : permuter deux caracteres
*********************************************************************
Sub permuter_caracteres()
Dim c1 As String, c2 As String les deux caracteres a permuter
Dim tmp As String variable intermediaire
EffacerEcran "Permitation de caractres"
1.initialiser c1 et c2
c1 = "A"
c2 = "Z"
Afficher "Avant : c1 = " & c1 & " et c2 = " & c2
2.permuter c1 et c2
tmp = c1
c1 = c2
c2 = tmp
3.afficher pour verifier
Afficher "Aprs : c1 = " & c1 & " et c2 = " & c2
End Sub

Exercice 3 : Cube dun rel (avec une variable)


Reprenons lexercice 1.
3.1 Utiliser une variable intermdiaire pour le rsoudre.
Solution : On reprend le mme R0 et les mmes tests. En fait, seule la manire de rsoudre le
problme change.
1
2
3
4
5

R1 : Raffinage De Afficher le cube dun nombre rel


| Saisir un nombre rel
x: out Rel
| Calculer le cube de x
x: in Rel ; cube: out Rel
| Afficher le cube

6
7

R2 : Raffinage De Afficher le cube de x


| cube <- x * x * x

Cours VBA, Semaine 1

c INPTPAD

8/21

A LGORITHMIQUE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

ET PROGRAMMATION

Algorithmique et programmation : les bases (VBA)

Attribute VB_Name = "exo03_cube_variable"


*********************************************************************
* Auteur : Claude Monteil <monteil@ensat.fr>
* Version : 1.0
* Objectif : afficher le cube dun nombre reel (usage dune variable)
*********************************************************************
Sub cube_var()
Dim x As Double
Dim cube As Double
EffacerEcran "Cube
1.Saisir un nombre
Afficher "Nombre =
Saisir x
2.Calculer le cube
cube = x * x * x
3.Afficher le cube
Afficher "Son cube
End Sub

un nombre saisi par lutilisateur


le cube de x
dun nombre (avec variable)"
reel
"
de x
de x
est : " & cube

3.2 Quel est lintrt dutiliser une telle variable ?


Solution : Lintrt dutiliser une variable intermdiaire est damliorer la lisibilit du programme car elle permet de mettre un nom sur une donne manipule. Ici on nomme cube la
donne x * x * x.
De plus, ceci nous a permis, au niveau du raffinage, de dcoupler le calcul du cube de son affichage. Il est toujours souhaitable de sparer calcul des oprations dentres/sorties car linterface
avec lutilisateur est la partie dune application qui a le plus de risque dvoluer.
3.3 Excuter la main lalgorithme ainsi crit.
Solution : faire soi-mme !

9 Structures de contrle
9.1 Enchanement squentiel
La squence sexprime comme en algorithmique.

9.2 Instructions conditionnelles


9.2.1 Conditionnelle Si ... Alors ... FinSi
Deux variantes sont utilisables selon que la ou les instructions conditionnes scrivent de
manire courte ou longue. Forme courte :
1

If condition Then une ou plusieurs instructions tenant sur cette unique ligne

Sil y a plusieurs instructions courtes qui tiennent sur la ligne, il faut utiliser : pour sparer
chaque instruction. Forme longue (la plus gnrale) :
Cours VBA, Semaine 1

c INPTPAD

9/21

A LGORITHMIQUE

1
2
3
4
5

ET PROGRAMMATION

Algorithmique et programmation : les bases (VBA)

If condition Then
instruction
...
instruction
End If

Bien noter que, pour la forme courte, la fin de lunique ligne tient lieu de End If implicite. Il est
tout fait possible dutiliser des parenthses autour de la condition si on prfre mieux la mettre
en valeur.
Exercice 4 : Une valeur entire est-elle paire ?
crire un algorithme qui lit une valeur entire au clavier et affiche paire si elle est paire.
Solution :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

R0 : Afficher paire si une valeur entire saisie au clavier est paire


tests
2
5
0

:
-> paire
-> -----> paire

R1 : Raffinage De Afficher ...


| Saisir la valeur entire n
| Afficher le verdict de parit
R2 : Raffinage De Afficher le verdict de parit
| Si n est paire Alors
| | crire("paire")
| FinSi
R3 : Raffinage De n est paire
| Rsultat <- n Mod 2 = 0

Dans le raffinage prcdent un point est noter. Il sagit du raffinage R2 qui dcompose
Afficher le verdict de parit . Nous navons pas directement mis la formule n Mod 2 = 0 .
Lintrt est que la formulation n est paire est plus facile comprendre. Avec la formule,
il faut dabord comprendre la formule, puis en dduire sa signification. n est paire nous
indique ce qui nous intresse comme information (facile lire et comprendre) et son raffinage
(R3) explique comment on dtermine si n est paire. Le lecteur peut alors vrifier la formule en
sachant ce quelle est sense reprsenter.
Raffiner est quelque chose de compliquer car on a souvent tendance descendre trop vite
dans les dtails de la solution sans sarrter sur les tapes intermdiaires du raffinage alors que
ce sont elles qui permettent dexpliquer et de donner du sens la solution.
Dans cet exercice, vous vous tes peut-tre pos la question : mais comment sait-on que
n est paire . Si vous avez trouv la solution vous avez peut-re donne directement la formule
alors que le point cl est la question. Il faut la conserver dans lexpression de votre algorithme
ou programme, donc en faire une tape du raffinage.
Si vous arrivez sur une tape que vous avez du mal dcrire, ce sera toujours une indication
dune tape qui doit apparatre dans le raffinage. Cependant, mme pour quelque chose de simple,
Cours VBA, Semaine 1

c INPTPAD

10/21

A LGORITHMIQUE

ET PROGRAMMATION

Algorithmique et programmation : les bases (VBA)

que vous savez faire directement, il faut tre capable de donner les tapes intermdiaires qui
conduisent vers et expliquent la solution propose. Ceci fait partie de lactivit de construction
dun programme ou algorithme.
Remarque : Il est gnralement conseill dviter de mlanger traitement et entres/sorties.
Cest pourtant ce qui a t fait ci-dessus. On aurait pu crire le premier niveau de raffinage
diffremment en faisant.
1
2
3
4
5
6
7
8
9
10
11
12

R1 : Raffinage De Afficher ...


| Saisir la valeur entire
| Dterminer la parit de n
| Afficher le verdict de parit

n: out Entier
n: in ; paire: out Boolen
paire: in Boolen

R2 : Raffinage De Dterminer la parit de n


| parit <- (n Mod 2) = 0
R2 : Raffinage De Afficher le verdict de parit
| Si paire Alors
| | crire("paire")
| FinSi

On constate ici que la variable intermdiaire paire permet davoir un programme plus
lisible car on a donn un nom la quantit (n Mod 2) = 0.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Attribute VB_Name = "exo04_parite"


*********************************************************************
* Auteur : Claude Monteil <monteil@ensat.fr>
* Version : 1.0
* Objectif : Afficher " paire " si une valeur entire est paire.
*********************************************************************
Sub tester_parite()
Dim n As Integer

valeur saisie au clavier

EffacerEcran "Parit dun nombre"


1.Saisir la valeur entiere n
Afficher "Valeur = "
Saisir n
2.Afficher le verdict de parite
If (n Mod 2 = 0) Then n est paire
Afficher "paire"
End If
End Sub

9.2.2 Conditionnelle Si ... Alors ... Sinon ... FinSi


1
2
3
4
5

If condition Then
instruction
...
Else
instruction

Cours VBA, Semaine 1

c INPTPAD

11/21

A LGORITHMIQUE

6
7

ET PROGRAMMATION

Algorithmique et programmation : les bases (VBA)

...
End If

Exercice 5 : Maximum de deux valeurs relles


tant donnes deux valeurs relles lues au clavier, afficher lcran la plus grande des deux.
Solution :
1
2

R0 : Afficher le plus grand de deux rels saisis au clavier

3
4
5
6

tests
1
2
3

7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

:
et 2 -> 2
et 1 -> 1
et 3 -> 3

R1 : Raffinage De Afficher le plus grand de deux rels ...


| Saisir les deux rels
x1, x2 : out Rel
| Dterminer le maximum
x1, x2 : in ; max : out Rel
| Afficher le maximum
R2 : Raffinage De Dterminer le maximum
| Si x1 > x2 Alors
| | max <- x1
| Sinon
| | max <- x2
| FinSi
Attribute VB_Name = "exo05_max"
*********************************************************************
* Auteur : Claude Monteil <monteil@ensat.fr>
* Version : 1.0
* Objectif : Determiner le max de deux valeurs reelles
*********************************************************************
Sub calculer_max()
Dim x1 As Double, x2 As Double les deux reels saisis au clavier
Dim max As Double
le plus grand de x1 et x2
EffacerEcran "Maximum de 2 nombres"
1.Saisir les deux reels
Afficher "Saisir un premier nombre reel : "
Saisir x1
Afficher "Saisir un second nombre reel : "
Saisir x2
2.Dterminer le maximum
If (x1 > x2) Then
max = x1
Else
max = x2
End If
3.Afficher le maximum
Afficher "max(" & x1 & "," & x2 & ") =" & max
End Sub

Cours VBA, Semaine 1

c INPTPAD

12/21

Vous aimerez peut-être aussi