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.