20-04-2009 Lisez-moi - Read me
Tableur Microsoft Excel
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.
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
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

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
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:

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
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.
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.

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
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