Cours VBA : Programmation Évènementielle et Structures de Contrôle
Cours VBA : Programmation Évènementielle et Structures de Contrôle
VISUAL BASIC
Support de cours VBA --------------------------------------------------------------------------------------------------------------
VISUAL BASIC
Visual Basic est dérivé du langage Basic. Cependant Visual Basic utilise un modèle de programmation
évènementielle. Dans une application évènementielle, l’exécution ne suit pas un ordre prédéfini.
Différentes section de code sont exécutées en réponse à des évènements. Les évènements peuvent être
déclenchés par les actions des utilisateurs, par des messages en provenance du système ou d’autres
applications. L’ordre des évènements détermine l’ordre dans lequel le code s’exécute. Par conséquent, le
parcours suivi par le programme dans le code de l’application diffère à chaque exécution. Un élément
essentiel de la programmation évènementielle est l’écriture de code capable de répondre aux différents
évènements possible dans une application.
L’exemple suivant montre comment une structure SELECT CASE peut servir à afficher le
message approprié en fonction de l’âge d’une personne. Si la variable âge correspond à
l’une des valeurs CASE, le message adapté à l’âge s’affiche dans une zone de texte.
- La boucle FOR…. NEXT : Cette boucle permet d’exécuter à plusieurs reprises un groupe
d’instruction. Dans une procédure évènementielle, elle remplace une longue suite
d’instructions similaires. Visual Basic vous permet de définir une seule fois un ensemble
d’instruction et de demander qu’il soit exécuté autant de fois que vous le souhaitez.
Dans une boucle FOR NEXT début et fin déterminent la durée d’exécution de la boucle. A
titre d’exemple la boucle FOR NEXT ci-dessous émet quatre BIP rapide via le haut-parleur
de l’ordinateur.
FOR I = 1 TO 4
BEEP
NEXT I
La variable I utilisée dans la boucle est une simple lettre qui par convention représente la
première valeur entière du compteur dans une boucle FOR NEXT. A chaque exécution de la
boucle ce compteur est incrémenté de 1. La valeur de début. Au dernier passage elle
contient la valeur 4 la valeur de fin.
L’instruction EXIT … FOR : l’instruction EXIT FOR vous permet de quitter une boucle FOR
NEXT avant la fin de son exécution. C’est un moyen de répondre à un évènement spécifique
qui survient au cours de la réalisation de la boucle.
FOR I = 1 TO 10
Nom = Inputbox (« Taper votre Nom ou taper Terminer pour quitter »)
If Nom = « Terminer »
EXIT FOR
NEXT I
L’instruction EXIT FOR demande à l’utilisateur de saisir dix nom et quitte la boucle. Dès que
vous saisissez « Terminer » ou si les dix noms ont été saisie. L’instruction EXIT FOR est
également utilisée avec l’instruction IF ELSE. Elles vous permettent par exemple
d’interrompre une boucle lorsqu’une valeur limite prédéfinie est atteint.
DO WHILE condition
Instruction
LOOP
Il est essentiel de définir votre condition de test de manière à ce que la boucle comporte un
dispositif de sortie. Si le test de la boucle n’aboutit jamais à la valeur FALSE elle sera
exécutée indéfiniment, et vous perdrez le contrôle de votre programme.
DO
Support de cours VBA --------------------------------------------------------------------------------------------------------------
Dans cette boucle l’utilisateur saisit un nombre après l’autre que le programme élève au
carré puis affiche dans la feuille. Malheureusement l’utilisateur ne peut pas quitter le
programme car la condition requise pour quitter : une valeur négative. La variable nombre
n’est jamais réalisé. En effet lorsque l’utilisateur entre -1 le programme l’élève au carré et
la variable au carré et la variable nombre reçoit alors la valeur 1. La solution consiste à fixer
une autre condition de sortie.
= Egal
<> différent
> Supérieur
< Inférieur
3. Les types d’erreurs : Dans un programme Visual Basic on rencontre généralement trois types d’erreurs :
les erreurs de syntaxe, les erreurs d’exécutions et les erreurs logiques.
Support de cours VBA --------------------------------------------------------------------------------------------------------------
- Une erreur de syntaxe : C’est une erreur de programmation comme un mot clé mal
orthographié qui ne respecte pas les règles définit par Visual Basic. Visual Basic se charge
de vous montrer certaines erreurs de syntaxe en cours de saisie. Vous ne pourrez exécuter
aucun programme tant que vous n’aurez pas corrigé ces erreurs de syntaxes.
- Une erreur d’exécution : Elle entraine l’interruption inattendue d’un programme en cours
d’exécution. Ces erreurs se produisent lorsqu’un évènement extérieur ou une erreur de
syntaxe non corrigé oblige le programme à s’interrompre en cours d’exécution, un nom de
fichier mal orthographié dans une fonction par exemple.
- Une erreur logique : C’est une erreur d’origine humaine. Il s’agit d’une erreur de
programmation qui fait que le code va générer des résultats faux. La majeure partie des
efforts de débogage sont centrés sur la détection des erreurs logiques commises par le
programmeur.
4. Les variables
Une variable et un emplacement temporaire de stockage pour les données d’un programme. Votre code
peut contenir une ou plusieurs variables contenant des mots clés, des nombre, des dates ou des
propriétés. Les variables vous permettent d’attribuer un nom concis et mnémotechnique à chaque
ensemble de données avec lequel vous avez prévu de travailler. Les variables peuvent contenir des
informations saisies par l’utilisateur lorsqu’il exécute le programme, des résultats de calcul ou des jeux de
données que vous souhaitez afficher sur votre feuille.
4.1. Déclaration des variables : Pour déclarer explicitement une variable avant de l’utiliser en principe en
début de procédure d’évènements, il suffit de taper le nom de cette variable à la suite de l’instruction DIM
(pour dimension). Cette déclaration réserve de l’espace mémoire à la variable lors de l’exécution du
programme et permet à Visual Basic de savoir quel type de données il doit s’attendre à rencontrer lors de
l’exécution du programme. A titre d’exemple l’instruction suivante crée l’espace pour une variable
nommée Nom dans un programme.
Dans cette ligne de code, la variable Nom peut être suivie de la valeur qui lui est affecté. Visual Basic vous
permet d’identifier le type de données d’avance de manier à faciliter le contrôle de la quantité de mémoire
qu’utilise votre programme. Par exemple, si la variable est destinée à détenir un nombre entier (sans
virgule) vous allez le déclarer comme tel pour économiser de l’espace mémoire.
Sachez que par défaut, Visual basic réserve de l’espace nécessaire au fonctionnement d’un type de variable
nommé variant qui peut déterminer les données de toute taille au format. Cette variable générique
extrêmement simple peut répondre à tous vos besoins de programmation.
Il peut se révéler délicat de designer des variables car il faut employer des noms à la fois concis, intuitif.
Pour éviter toute confusion, respectez les conventions suivantes lorsque vous nommez des variables :
- Faites commencer les noms de variable par une lettre car il s’agit d’une exigence de Visual
Basic. La longueur d’une variable est limitée à 256 caractères et les virgules sont interdites.
Support de cours VBA --------------------------------------------------------------------------------------------------------------
- Rendez les noms de variable descriptif en combinant un ou plusieurs mots. Lorsque cela
parait logique par exemple le nom de variable tva_vente est plus explicite que taux ou taxe
- Combinez capitale, bas de casse et si vous le souhaitez nombre. Par convention la première
lettre de chaque mot est en capitale comme par exemple DateNaissance.
- N’utilise pas les mots clés, les objets ou des propriétés de Visual Basic comme variable.
ains cas, vos programmes devront accueillir divers outils de gestion des nombre, conversion d’une va en un
type par exemple ou calcul d’une expression mathématique complexe. Les fonctions suivantes vous
aideront à travailler avec les nombre dans vos formules. A l’instar des autres fonctions, les fonctions
mathématiques doivent être utilisées dans une instruction pour retourner une valeur au programme. Dans
le tableau suivant, n représente une variable ou une expression soumis à la fonction pour évaluation.
Support de cours VBA --------------------------------------------------------------------------------------------------------------
UCASE Fait passer les lettres de la chaine en capitale UCASE (« kim ») = KIM
LCASE Fait passer les lettres de la chaine en bas de casse LCASE(« KIM ») = kim
7. Les évènements
Propriétés Action
CAS PRATIQUE
GESTION DU PERONNEL
Private Sub Exit
Matricule Matricule If age inf 20 then
Enfant.visible = true
Nom Nom
Else
Prénom Prénom Enfant.visible = false
End if
Age Age End Sub
Enfant Enfant
Catégorie Catégorie
Private Sub Enter
Salaire Net Salaire net If categories = “A’’ then
INPS = 2 500
INPS INPS Else
If categories = “B’’ then
IGR IGR
INPS = 3 000
Salaire Brut Salaire Brut Else
INPS = 4 000
End if
End Sub
La méthode RUN : La méthode RUN vous permet d’exécuter une procédure Function ou Sub par Microsoft
Access ou définie par l’utilisateur.
Argument Description
D Indépendant
Private Sub
OK Run « Delta », a, b, c
End Sub
Else
If delta = 0 then
X1 = X2 = -b/2*a
End if
End if
Msgbox “delta =” & delta & vbcrlf + “X1 est = “& X1 & vbcrlf + “X2 est = “ & X2
End sub
Support de cours VBA --------------------------------------------------------------------------------------------------------------
La Fonction INPUTBOX
Affiche une invite dans une boite de dialogue attend que l’utilisateur tape du texte ou clique sur un bouton
puis renvoie le contenu de la zone de texte sous la forme d’une valeur de type string
Elément Description
La Fonction Msgbox
Affiche un message dans une boite de dialogue et attend que l’utilisateur clique sur le bouton puis renvoie
une valeur de type integer qui indique le bouton choisi par l’utilisateur.
Elément Description
Exemple
MISE A JOUR
ATTENTION ERREUR
OK Annuler
Support de cours VBA --------------------------------------------------------------------------------------------------------------
AnNaiss
Age =calcul_age(AnNaiss)
Support de cours VBA --------------------------------------------------------------------------------------------------------------
La procedure de recherché
Bouton de recherché
End Sub
Les Tables : Un RecordSet de type table est une image directe d’une table, le jeu d’enregistrement contient
tous les enregistrements qui sont contenus dans la table, l’ordre de enregistrements correspond a celui de
la table. La recherche des enregistrements n’est malheureusement possible que sur les champs qui
comportent un index. Les modifications des enregistrements sont immédiatement répercutées dans la
table.
Les Dynaset : Le type Dynaset (feulle de réponse dynamique) contient le résultat de la requête. Les
données peuvent être issues de plusieurs tables ou requêtes. Le Type Dynaset contrairement au Recordset
table permet la recherche d’enregistrement sur tous les champs. Si vous modifiez des enregistrements dans
un Dynaset ces modifications peuvent être prises en compte par les tables sous jacentes.
Le SnapShot : Le type Snapshot (instantané) représente l’état instantané d’un jeu d’enregistrement lors de
la création d’un jeu d’enregistrement tous les enregistrements sont copiés dans le jeu d’enregistrement
Snapshot a partir de la table concernant les modifications ne sont pas répercutées vers les tables d’origine.
Un jeu d’enregistrement Snapshot est ainsi totalement indépendante des tables ou les données sont
extraites. Ce type de Recordset est bien adapté pour exploiter certaine situation.
End Sub
Support de cours VBA --------------------------------------------------------------------------------------------------------------