20-04-2009 Lisez-moi - Read me

Table des matières
Chapitre précédent - Chapitre suivant


Tableur Microsoft Excel



4. Quelques structures de programmation

Pour faciliter la gestion des données passées aux fonctions et aux procédures, on dispose d'instructions plus complexes évidemment que la simple assignation. Nous allons ici en regarder quelques-unes sans trop entrer dans les détails. Quelques exemples nous permettrons d'y voir plus clair.

a. Alternative

Nous l'avons vu dans la feuille de calcul, la fonction SI permet, suivant la valeur (logique) d'une condition, d'évaluer une ou l'autre condition. La même structure existe en Visual Basic.
Elle s'écrit

	Si condition alors
expression_1
sinon
expression_2
fin si
Notre exemple d'attribution de "grade" correspondant à une cote devient:



qui donne



Nous n'avons pas, dans cet exemple, traité différemment des autres l'étudiante Amélie qui n'avait pas de cote comme nous l'avions fait précédemment. Il faudrait ajouter un test sur la nature du contenu de la variable cote pour effectuer un test supplémentaire.
La structure SI ... SinonSi ... Fin Si illustrée ci-contre donne le même résultat:




qui peut encore s'écrire à l'aide de la structure Selon Cas



Remarquons que cette structure est plus souple que le Si. On pourrait encore l'écrire

b. Boucle

Dans de nombreuses situations, on doit effectuer des opérations de manière répétitive. Le cas le plus simple est celui où on veut connaître la somme de plusieurs nombres entrés dans la fonction sous forme d'une série d'arguments. Ne perdons cependant pas de vue que, au sein des feuilles de calcul d'Excel, on peut utiliser directement la fonction Somme! Ce que nous faisons ici a surtout un but d'illustration.
Parmi les structures répétitives, il faut mentionner la boucle Pour ... Suivant. Voyons un exemple où nous passerons le tableau des valeurs en argument à la fonction

i. argument tableau




La fonction a deux arguments: x qui est un tableau, c'est-à-dire une plage de cellule dans Excel (du type A3:A17); n est le nombre d'éléments sur lesquels il faut faire la somme.
Une variable s est initialisée à zéro. Ensuite, pour toutes les valeurs de i allant de 1 à n par pas de 1 : i est initialisé à 1, comparé à la dernière valeur, ici n; s'il est plus petit ou égal à celle-ci l'instruction de la boucle est exécutée. A l'ancienne valeur de s (d'abord 0) est additionnée la valeur contenue dans la case x(i) pour i égal à 1, c'est-à-dire la première case du tableau. Le résultat est placé dans la case s où il écrase le contenu précédent. Et l'opération est recommencée pour toutes les valeurs de i. A la fin des opérations, on a dans s la somme des éléments du tableau x. s est ensuite assignée à sommevec. Ce qui donne

ii. produit scalaire - moyenne pondérée

Un exemple courant en science est le calcul de produit scalaire: on a deux vecteurs et il s'agit de faire la somme des produits des composantes de même nom (ou de même indice si on préfère). C'est la même opération que celle qui consiste à calculer un prix total à partir de différentes quantités de produits de prix unitaires différents ou encore le calcul d'une moyenne pondérée.
La fonction ci-dessous réalise l'opération souhaitée:




Deux paramètres de type tableau et un paramètre n qui donne la dimension des tableaux
L'utilisation pour le calcul d'une moyenne pondérée serait par exemple:



iii. autre exemple: factorielle

La factorielle du nombre 5 (qui s'écrit 5!) est donnée par le produit 1*2*3*4*5. Ceci s'écrit extrêmement facilement sous forme d'une fonction




dont l'utilisation donne

c. Récursivité

Visual Basic permet la récursivité. En d'autres termes, une fonction ou une procédure peut s'appeler elle-même.
Prenons le cas de la factorielle évoquée ci-dessus: il est clair, d'après la définition que
n! = n * (n-1)!
Donc, pour calculer la factorielle de n, il suffit de multiplier n par la factorielle de n-1.
Dans la pratique, on écrira, par exemple en Visual Basic



Lorsque nécessaire, la fonction se rappelle elle-même avec le nouvel argument (ici x - 1). Attention: il faut prévoir une condition de sortie. Dans notre cas, dès que x (ou plutôt le dernier x dans la succession des x) prend la valeur 1, il n'y a plus d'appel à la fonction et la valeur de factor peut être renvoyé à la version de la fonction qui venait de l'appeler, permettant ainsi le calcul de factor(2) puis de proche en proche factor(3) etc. jusqu'au x voulu.

d. Utilisation des fonctions de l'application

Il peut être utile, nécessaire, rentable d'utiliser les fonctions de l'application. Celles-ci rencontrent déjà un très grand nombre de situations et apportent des solutions efficaces aux opérations que l'on souhaite effectuer. Comment opère-t-on? Il suffit de précéder le nom de la fonction de Excel par exemple du mot Application suivi d'un point. Nous allons examiner deux exemples simples.

i. somme



La fonction sommevec_2 a comme paramètre le tableau y.
La fonction Excel prédéfinie Somme renvoie la somme des éléments du tableau.
Ensuite, ce résultat est assigné à la fonction sommevec_2

ii. épure


Considérons à nouveau un tableau formé d'une liste de prénoms et de noms. Pour effectuer un tri alphabétique des individus répertoriés dans la liste, comme nous l'avons vu, nous avons intérêt à créer une nouvelle information combinant pour chaque personne le nom et le prénom. Ceci permettra d'obtenir une classification correcte des informations moyennant le fait que nous réglions le problème des caractères spéciaux. Nous allons écrire une fonction en Visual Basic faisant appel aux fonctions prédéfinies.
Le tableau est constitué comme suit:



En colonne B nous avons les prénoms, puis en C les noms, en D, une formule qui concatène nom, une virgule et un espace puis le prénom (B1&", "&C1).
On peut évidemment recopier cette colonne et l'épurer en supprimant manuellement les espaces, traits d'union et autres apostrophes. Ou bien on emploie les fonctions prédéfinies. Par exemple la fonction SUBSTITUE(texte;"essai";épreuve") remplace dans tout le texte toutes les occurrences du mot "essai" par le mot "épreuve. Ceci donne, pour la suppression des trois caractères spéciaux:
=SUBSTITUE(SUBSTITUE(SUBSTITUE(D2;" ";"");"-";"");"'";"") où le texte se trouve en D2. C'est cette formule qui est utilisée en colonne F.

Par contre, en colonne E nous avons utilisé la fonction épure définie comme suit



La structure de cette fonction est nettement plus compréhensible que la structure imbriquée utilisée en colonne F. Si nécessaire, des ajouts ou des modifications peuvent se faire beaucoup plus simplement dans épure.
Ces quelques exemples ne font qu'effleurer les possibilités de programmation dans Excel.
Nous n'avons pas abordé les nombreuses structures de données, matrices, variant, booléen ni les autres structures de programmation existantes. Visual Basic permet de manipuler des objets, fenêtres boutons, feuilles, dialogues qui permettent de construire de véritables applications personnalisées.
Il semble que la dernière version du logiciel Excel (incluse dans Office 98) perde la possibilité de programmer dans un dialecte français de Visual Basic et que seul le dialecte anglais soit utilisable. Néanmoins, l'utilisation des fonctions personnalisées en français reste possible car elles sont "traduites" automatiquement dans Office 98.



Commentaires - Remarques à Eddy Kestemont