Excel : Programmation (TP4).

Transcription

Excel : Programmation (TP4).
Université du Littoral Côte d’Opal
GTE, FI1
Octobre 2013
Durée : 4 heures
Excel : Programmation (TP4).
1
L’éditeur de Visual Basic
Avant d’écrire notre premier programme, il nous faut lancer l’éditeur Visual Basic. C’est l’objet de l’exercice
suivant :
Exercice.
a) Par défaut, les outils de programmation sont masqués. Pour les mettre en évidence, cliquer sur l’onglet
Fichier puis sur le bouton Options. Sélectionner la catégorie Personnaliser le ruban. Enfin, dans la
zone Onglets principaux, cochez Développeur puis valider 1 .
b) Vérifier que l’onglet Développeur apparaı̂t. Sélectionnez-le et cliquez sur l’icone Visual Basic.
Comme illustré sur cette image, l’éditeur Visual Basique se compose de trois zones.
Figure 1 – L’environnement de développement Visual Basique.
L’exercice suivant est une première illustration de ce qu’est un programme :
Exercice.
a) Saisir sur une fauille d’Excel les données suivantes :
b) Après avoir inséré un module dans l’éditeur VBA en cliquant, au niveau de la zone des projets, sur le bouton
droit de la souris. Modifier le nom par défaut (qui est Module 1) au niveau de la feuille de propriétés,
saisir le code suivant :
c) À votre avis, que va faire ce code ?
d) Exécutez ce programme : se placer sur Excel sous l’onglet Développeur, dans la zone code, cliquer sur
Macros puis sur Executer. Que remarquez-vous ?
1. Pour Excel 2003, il suffit de se placer dans le menu Outils-Macro puis de sélectionner l’option Visual Basic Editor
i) On remarque que le précédant programme commence par Public Sub delta() et se termine par End sub.
Cela signifie que tout ce qui se situe entre ces deux lignes de code constitue les instructions servant à
exécuter la procédure nommée delta().
ii) Une procédure peut dépendre d’un ou de plusieurs paramètre. Nous verrons cela plus tard.
iii) L’instruction, par exemple Dim a as Double, permet de réserver un espace mémoire, pour y stocker un
nombre de type Double. Le tableau ci dessous résume les caractéristiques des types les plus courants :
Double
Long
Date
String
Boolean
Représente les nombres à virgule
Entiers
Toutes les dates entre le 1er janvier 100 et le 31 decembre 9999
Pour les mots et les phrases
true ou false
iv) L’instruction par exemple, a = Cells(2,3) , permet de lire ce qu’il y a dans la cellule 2C. Le signe = est
une instruction d’affectation. L’instruction a = Cells(2,3) signifie, lire le contenu de la cellule 2C et le
recopier dans la case mémoire nommée a
v) Finalement, le programme précédent permet de lire dans Excel les paramètres a, b et c et de calculer puis
d’afficher le discriminant ∆ de l’équation ax2 + bx + c = 0.
1.1
1.1.1
Les bases du langage.
Les tests
C’est ce qui permet à un programme de faire des choix :
Algorithme
Si a ≥ b
u←v+w
a←a+b
sinon
u←v−w
a ← a + 2b
fin si
Programme
if(a >= b) then
u=v+w
a=a+b
else
u=v−w
a = a + 2b
end if
On peut aussi avoir la situation suivante (avec autant de sinon, si) :
Algorithme
Si a 6= b
i←j+k
w ← r/t
sinon, si (a − b > c)
i←j+k
sinon
i ← j + 3k
fin si
Programme
if(a <> b) then
i=j+k
w = r/t
else if(a − b > c)
i=j+k
else
i = j + 3k
end if
Exercice. Compléter le programme précédent pour afficher la ou les éventuelles solutions. On utilisera aussi
le type string pour afficher du texte aidant à l’interprétation des résultats.
Exercice. Dans la feuille de calcul suivante, vous visualisez le résultat des rencontres entre six équipes. En
colonne A le nom des équipes, en colonne B les points au classement et en colonne C le résultat du dernier
match.
Ecrire un programme permettant de mettre à jour la colonne B en fonction des résultats du dernier match (+3
en cas de victoire, +1 en cas de match nul, +0 en cas de défaite.)
Exercice. Sachant qu’un même module peut contenir plusieurs procédures et qu’une procédure peut en appeler
une autre, réécrire le programme précédent de manière beaucoup plus concise.
Lorsque le nombre de cas à traiter par l’instruction if devient trop important, il vaut mieux utiliser select
case dont le principe est illustré par le tableau suivant :
Algorithme
selon essai
si essai = 0 t=1
si essai 1 ou 2 t=8
si essai 3 à 10 t=15
sinon t=100
fin selon
Programme
select case essai
case 0 t=1
case 1, 2 t=8
case 3 to 10 t=15
case else t=100
end select
Exercice. Reprendre l’exercice précédent en utilisant select case.
1.1.2
Les boucles
Afin de comprendre le principe des boucles, considérons un exemple. le code suivant lit le nombre situé sur
la cellule 1A et affiche sa table de multiplication :
Les boucles interviennent lorsqu’un même bloc d’instructions a besoin d’être répété plusieurs fois. La valeur
d’un paramètre étant itérée à chaque tour.
Voici différents schémas d’utilisation des boucles :
Algorithme
Pour i allant de 1 jusqu’à n faire
u←u+1
v ←v+u
fin pour
Programme
for i = 1 to n
u=u+1
v =v+u
next i
Si l’on ne souhaite pas que la variable d’itération (i dans le tableau ci dessus) varie par pas de 1, on peut
utiliser le mot clé step
Algorithme
Pour i allant de 1 jusqu’à n de 2 en 2 faire
u←u+1
v ←v+u
fin pour
Programme
for i = 1 to n step 2
u=u+1
v =v+u
next i
Exercice. Etant donné un entier n sur la cellule 1A
a) Ecrire un programme qui calcule la somme des nombres de 1 à n.
b) Ecrire un programme qui calcule la somme des entiers pairs inférieurs ou égaux à n.
c) Quelle fonction d’Excel génère des nombres aléatoires ?
d) Ecrire un programme qui affiche sur une ligne 20 nombres aléatoires entre 1 et 1000.
e) Ecrire un programme qui affiche le plus grand et le plus petit des 20 nombres précédents.
1.1.3
Enregistrement d’une macro
Suite à un exercice précédent, la table de multiplication est mal présentée. On souhaiterait mettre en
forme les données (centrer et mettre en gras) de manière à les rendre plus présentables. Pour cela un première
méthode consiste à créer une macro. Une deuxième méthode, illustrée par l’exercice suivant consiste à utiliser
l’enregistreur de macros. Cet outil va enregistrer (dans une macro, sous forme de code VBA) toutes les
manipulations effectuées dans Excel.
Exercice.
a) Pour lancer l’enregistrement, cliquer en bas à gauche sur son icône (à côté du message prêt) :
b) Une boı̂te de dialogue vous invite à proposer un nom pour la macro. Choisir un nom et cliquer sur ok
c) Dès lors, toutes les actions que vous effectuez vont être enregistrées dans une macro (celle que vous venez
de nommer). Sélectionner la plage contenant la table de multiplication, centrer et mettre en caractère gras.
d) Arrêter l’enregistrement en cliquant à nouveau au même endroit en bas à gauche.
Vous pouvez maintenant, sur l’éditeur VBA, visualiser le code de l’enregistrement. il devrait ressembler à
cela (les commentaires en moins) :
e) En retirant la plage sélectionnée et ce qui est inutile, on obtient (tester) :
Exercice. On reprend l’exercice sur les équipes AAAA, BBBB,...
a) En utilisant insertion tableau, classer les lignes de manière à ce que les équipes avec le plus de points
apparaissent en premier.
b) Créer une macro qui fait cela.
c) Tester. Comment modifier le code pour pouvoir l’utiliser plusieurs fois de suite conjointement avec notre
précédent programme permettant de remettre à jour les points des équipes.
Exercice. Ecrire un programme qui étant donné une plage sélectionnée contenant des nombres en affiche les
valeurs du plus petit et du plus grand.