Algorithmique du S1
En VBA, les commentaires sont un apostrophe, mais comme ça cassait mon API, j'ai mis des % à la place.
Le VBA, c'est quoi ?
Le VBA pour Visual Basic for Applications est un langage permettant d'interagir avec les outils Office.
Notamment utilisé pour Excel, il permet de manipuler la feuille de calcul de façon automatisée.
Les variables
Notion de variable
Les variables sont très importantes en informatique. Elles permettent de contenir une information.
Pour réussir à l'examen, il n'y pas besoin de savoir précisément comment elles sont gérées par votre ordinateur.
Par contre, vous aurez besoin de savoir deux choses essentielles sur leur fonctionnement.
Schéma pratique de la variable
Les variables sont organisée de la façon suivante sur votre ordinateur :
Note : La référence d'une variable peut-être vu comme son adresse postale. Elle permet d'identifier la variable dans la mémoire.
Déclarer une variable en VBA
La syntaxe pour déclarer une variable est la suivante :
Il existe plusieurs types en VBA, les principaux utilisé seront :
- Les entiers : Integer et Long
- Les réels : Single et Double
- Les chaines de caractères : String
- Les valeurs de vérité : Boolean
- Tout les types : Variant
Attention ! Une variable doit être initialisée avant d'être utilisée.
On aurait ainsi le code suivant :
Opérations sur les variables
Opérations sur les réels et les entiers
Il est possible d'effectuer les opérations arithmétiques élémentaires sur ces deux types.
Opérations sur les chaines de caractères
Il est possible de concaténer deux chaines de caractères avec l'opérateur de concaténation.
Les tableaux
Les tableaux permettent d'avoir plusieurs variables de même type sous un même nom. Ils peuvent être de plusieurs dimensions :
- 1 Dimension : une liste
- 2 Dimensions : une matrice
- 3 Dimensions : un tableau 3D
- etc…
Pour choisir la taille du tableau, on a deux possibilités :
- Un intervalle d'indices entre min et max choisis
- Un intervalle d'indices de 0 à max choisi
Ca donne ça en VBA :
Comme pour toute variables, on ne connaît pas la valeur par défaut des cases des tableaux créés, il faut donc les initialiser avec une boucle (qu'on verra plus tard).
Pour accéder à une case d'un tableau, on utilise la syntaxe suivante :
Instructions Entrée/Sortie (E/S)
Les instructions d'Entrée/Sortie permettent d'interagir avec l'utilisateur.
Entrée
Elle permet d'affecter une variable à la demande de l'utilisateur.
Sortie
Elle permet d'afficher une fenêtre à l'utilisateur avec un message.
On utilisera souvent l'opérateur de concaténation pour afficher des messages plus compréhensibles pour l'utilisateur.
Exercice 1
Écrire une procédure qui demande l'âge de l'utilisateur et renvoie les deux années de naissances possibles.
Les conditions
Lorsqu'on programme, on souhaite souvent qu'un morceau de code soit exécuté sous certaines conditions, c'est pour cela qu'il existe les conditions :
On vérifie que la condition soit vraie selon les calculs Booléens (soit 0, soit 1, 1 étant 'vrai').
Ainsi, si on choisit que la condition soit une variable qui vaut 1, la condition sera toujours vraie.
L'ordinateur vérifie les choses dans cet ordre :
Si la condition du If est vérifiée (donc vraie), il exécute le code 1
Sinon, si la condition du ElseIf est vérifiée, il exécute le code 2
Sinon, il exécute le code 3.
Vous noterez bien que les parties ElseIf et Else sont optionnelles. Il est possible d'avoir uniquement :
Les conditions sont des relations simples entre deux variables :
Exercice 2
Écrire une procédure qui demande l'âge de l'utilisateur et affiche s'il est majeur ou mineur.
Les boucles
Pour les parcours de tableaux, ou pour pouvoir faire plusieurs fois la même chose sans avoir à s'embêter, les boucles permettent d'exécuter plusieurs fois un même morceau de code.
Les boucles utilisent des conditions. Tant que celles-ci sont vraies, on continue d'éxécuter le code dans la boucle.
Il faut faire attention lorsque qu'on écrit une boucle à ne pas provoquer de boucles infinies.
C'est-à-dire que la condition ne devient jamais fausse et que le programme ne s'arrête jamais.
Les boucles While et Do While
Ces deux boucles sont extrêmement simples. Elles se contentent de vérifier une condition pour recommencer.
La seule différence entre les deux est le moment de la vérification de la condition.
Là où la boucle While vérifie la condition avant de commencer le code à l'intérieur, la boucle Do While vérifie la condition après avoir éxécuté le code.
La boucle For
Un peu plus complexe, la boucle For se comporte comme une boucle While dont la condition est un compteur.
Il y a plusieurs façon de l'écrire, mais dans tous les cas, il est nécessaire de déclarer une variable qui sera notre compteur.
Exercice 3
Écrire une procédure qui initialise un tableau en demandant à l'utilisateur les valeurs à rentrer.
Les fonctions et procédures
Imaginons des étapes A, B et C.
On vous demande alors de faire ces étapes dans un ordre différent selon l'objet de départ.
Comment procéder de façon efficace ?
Une façon de faire est de créer les étapes A, B et C de façon isolée. Et c'est exactemet ça que sont les procédures et les fonctions.
Plutôt que d'écrire 100 fois le même code, il suffit de le détacher en une procédure ou une fonction pour pouvoir l'utiliser plusieurs fois.
Les procédures
Vous en avez déjà utilisé, c'est le Sub de vos programmes.
Pour déclarer une procédure, il faut respecter la syntaxe suivante :
Pour appeler un procédure depuis un endroit dans le code, on utilise l'instruction Call :
Les fonctions
Les fonctions sont comme des procédure, la seule différence est qu'elles renvoient un valeur. Une fonction est donc typée.
Pour déclarer une fonction, il faut respecter la syntaxe suivante :
Pour appeler une fonction, il suffit d'écrire son nom avec ses arguments :
Les arguments
Les arguments sont des variables d'entrée pour les procédures et les fonctions.
Comme nous l'avons vu, une variable correspond grossièrement à une référence et une valeur. C'est pour ça que les arguments peuvent être passés par valeur ou par référence
Qu'est-ce que ça implique ?
Une variable passée par référence doit être une variable. Si celle ci est modifiée dans la fonction ou procédure, elle le sera aussi pour le code en dehors de la procédure/fonction.
Une variable passée par valeur peut être une variable ou un résultat de calcul. Si celle ci est modifiée dans la fonction ou procédure, elle ne le sera pas pour le code en dehors de la procédure/fonction.
Petit exemple permettant de voir comment définir des arguments :
Affichera 42, 15, 25
Intéragir avec la feuille de calcul
Pour cela, on utilise la fonction Cells(ligne, col).
Cela permet à la fois d'affecter une valeur et de la récupérer.
Ainsi, si on veut récupérer la valeur de la case A1, on fera :
A l'inverse, si on veut affecter une valeur à la case A1, on fera :