Programmation Événementielle Avec VBA: Plan Du Cours
Programmation Événementielle Avec VBA: Plan Du Cours
Programmation
événementielle avec VBA
Mme I. BENMILOUD
2ère année 2022-2023
ENSMR
2 Plan du cours
Séance 1 :
Introduction générale
Langage Visual Basic
Objets de VBA, Procédures évènementielles, gestion des erreurs
Séance 2 :
Exercices
Séance 3 :
Création d’une application « Gestion des salariés »
[Link] - ENSMR
1
25/09/2022
3 Programmation procédurale
La programmation procédurale est un paradigme de programmation basé
sur le concept d'appel procédural.
Une procédure (routine, sous-routine, méthode ou fonction) contient
simplement une série d’instructions à réaliser au fur à mesure.
Une procédure peut être appelée à n'importe quelle étape de l'exécution
du programme, incluant d'autres procédures voire la procédure elle-même
(récursivité).
Avantages : La possibilité de réutiliser le même code à différents
emplacements dans le programme: Sub NomDePrcédure1()
sans avoir à réécrire le même code. ‘ici Traitement1
End Sub
le programme est modulaire et mieux structuré.
Sub NomDePrcédure()
‘ici Traitement
NomDePrcédure1()
[Link] - ENSMR
End Sub
4 Programmation événementielle
évènements
• Cliquer sur un des boutons
de souris
• Frappe du clavier
• Changer une valeur
• Sélectionner un élément Prog 1. Capturer les évènements
dans une liste VBA 2. Traiter les évènements
[Link] - ENSMR
2
25/09/2022
[Link] - ENSMR
[Link] - ENSMR
3
25/09/2022
Éditeur
Explorateur de
projet
[Link] - ENSMR
Propriétés
Editeur de VBA
MACROS
[Link] - ENSMR
4
25/09/2022
9 Présentation de l’éditeur
Explorateur de projets
Notions de module
Fenêtre propriétés
Fenêtre d’exécution
[Link] - ENSMR
10 Projet VBA
[Link] - ENSMR
5
25/09/2022
11 Code VBA
Le code Visual Basic est toujours contenu dans un module, mais dans un
même projet, on doit suivre les règles suivantes:
Le module standard doit contenir un code générique utilisant les objets du
classeur et les fonctions accessibles dans tout le projet
Les UserForms ne contiennent que le code de leur propre fonctionnement
Chaque classe est dans un module de classe distinct
Le module ThisWorkbook ne contient que le code évènementiel du classeur
Chaque module de feuille ne contient que le code évènementiel de la feuille
[Link] - ENSMR
[Link] - ENSMR
6
25/09/2022
[Link] - ENSMR
7
25/09/2022
[Link] - ENSMR
[Link] - ENSMR
8
25/09/2022
Sheets("Feuil2"). Select
Range("A1: A10").Select
[Link] - ENSMR
[Link] - ENSMR
9
25/09/2022
19 Procédures : Sub
Toutes les lignes de code (instructions) doivent être écrites dans une ou
plusieurs procédures
Une procédure se caractérise par l’écriture de l’instruction Sub
(Subroutine) et de l’instruction End Sub
Sub Changer_couleur()
Range("A1:C5").[Link] = 128
End Sub
[Link] - ENSMR
20 Fonctions : Function
[Link] - ENSMR
10
25/09/2022
21 Macro
[Link] - ENSMR
Sub Copy_Colonnes ()
' test1 Macro
Range("A1:A13").Select
[Link]
Sheets("Destination").Select
Range("D1").Select
[Link]
[Link] - ENSMR End Sub
11
25/09/2022
[Link] - ENSMR
Cette fonction prend comme paramètre une cellule et retourne True ou False
selon que la cellule est vide ou non.
Syntaxe : IsEmpty(cellule)
i=1
do While IsEmpty(cells(i,1)) = False
Dim DLig As Long
If cells(i,1).value <0 Then DLig = Range("C1"). End(xlDown).Row + 1
cells(i,1).value = 0
End If
Dim DLig As Long
i=i+1
DLig = Range("C16000").[Link](xlup).Row +
loop 1
[Link] - ENSMR
12
25/09/2022
26
Langage Visual Basic
[Link] - ENSMR
27 Les Variables
[Link] - ENSMR
13
25/09/2022
Type Valeurs
Boolean Vrai, faux
Integer Entiers
Long Entiers
Single Réels
Double Réels
Currency 4 chiffres après la ,
Date 1/1/100 à 31/12/9999
String Chaines de caractères
Object Tout objet
Variant N'importe quel type
[Link] - ENSMR
[Link] - ENSMR
14
25/09/2022
30 Variables particulières
Les variables Statiques
Ne sont pas réinitialisées à la sortie de la procédure (ex, pour des
compteurs)
Static Compteur As Integer
Les Constantes
la valeur est donnée et ne peut pas être changée
Const Pi As Double = 3.1415
Les dates
Doivent être mises entre dièses sous la forme:
[Link] - ENSMR
31 Type « Variant »
[Link] - ENSMR
15
25/09/2022
32 Instructions
Affectation : =
Différent : <>
Opérateurs : +, *, /, -, ^, &, \, Mod
Opérateur logique : Not, And, Or, Xor
[Link] - ENSMR
Syntaxe :
Function NomFonction(nom_parmaètres as type) as type de donnée
[Link] - ENSMR
16
25/09/2022
Syntaxe :
Sub NomProcédure(nom_parmaètres as type)
End Sub
[Link] - ENSMR
[Link] - ENSMR
17
25/09/2022
36 Variables globales
[Link] - ENSMR
[Link] - ENSMR
18
25/09/2022
[Link] - ENSMR
[Link] - ENSMR
19
25/09/2022
40 Select Case
[Link] - ENSMR
41 Boucles
Syntaxes :
For Compteur = Début To Fin Step Do
Pas
[instructions] Instructions
Next Compteur Loop While Condition
[Link] - ENSMR
20
25/09/2022
[Link] - ENSMR
Déclaration
Dim MonTableau(1 to 100) As Integer
Index débute à 0 par défaut;
Option Base 1
Tableaux multidimensionnels
Dim MonTableau(1 to 10, 1to 10) As Integer
La vitesse d'exécution de VBA est beaucoup plus rapide dans les Arrays
que dans les cellules du tableur
[Link] - ENSMR
21
25/09/2022
Tableaux dynamiques
Création
MonTableau() As Integer
Redimensionnement
ReDim MonTableau(NombreElement)
[Link] - ENSMR
[Link] - ENSMR
22
25/09/2022
[Link] - ENSMR
[Link] - ENSMR
23
25/09/2022
48 InputBox
[Link] - ENSMR
49 Notion d’objets
Un objet est une variable dont le type est une classe appartenant au projet
courant où à une bibliothèque.
Un objet se déclare à l’aide de Dim comme pour toute variable.
Un objet doit être crée avec une instruction New et l’attribution du résultat
de New se fait obligatoirement à l’aide de Set.
Un objet non initialisé contient Nothing.
Un Objet contient des membres qui peuvent être
des propriétés,
des méthodes (des fonctions)
[Link] - ENSMR
24
25/09/2022
[Link] - ENSMR
Exemple
Range(« A1:C12 »).Select ‘permet de sélectionner la plage de cellules
Sheets(« Feuil1 »).activate
[Link]
[Link] : ajout d’un nouveau classeur
[Link] - ENSMR
25
25/09/2022
[Link] - ENSMR
[Link] - ENSMR
26
25/09/2022
Propriétés :
Count : nombre de cellule désigné par l’objet Range
MsgBox Range("B1:B45").Count ‘affiche 45
[Link] - ENSMR
Méthodes
Find(nformation) : renvoie un objet Range qui représente la première cellule ou
cette information appraît
Activate : active la première cellule du range en question
Select
Clear : efface le contenu des cellule
ClearFormats : efface le format des cellules
Copy, Cut, Past : permet de copier, couper ou coller les contenus des cellules
désignées
Justify : aligne le contenu des cellules
[Link] - ENSMR
27
25/09/2022
[Link] - ENSMR
57
Exemple d’utilisation du type « Range »
[Link] - ENSMR
28
25/09/2022
La boucle For Each est adaptée au parcours des collections (une plage de
cellules est une collection de cellules).
[Link] - ENSMR
[Link] - ENSMR
29
25/09/2022
Évènements
60
Les évènements permettent l'interaction entre votre programme et
l'utilisateur.
Ce sont des procédures qui se déclenchent automatiquement lorsqu'une
action prédéfinie survient dans :
L’application Excel, feuille de calcul, UserForm, contrôles ..
Quelques exemples :
Ouverture d’un classeur
Ajout d’une feuille
Click de souris sur bouton
Changement de contenu d’une cellule
Changement de la cellule courante
[Link] - ENSMR
[Link] - ENSMR
30
25/09/2022
[Link] - ENSMR
[Link] - ENSMR
31
25/09/2022
[Link] - ENSMR
[Link] - ENSMR
32
25/09/2022
66 Objet « UserForms »
Les « UserForms » sont des objets graphiques qu’on peut afficher dans
Excel.
[Link] - ENSMR
33
25/09/2022
Évènement
click du bouton
Accès à une
propriété d’un
autre contrôle
[Link] - ENSMR
[Link] - ENSMR
34
25/09/2022
70 Références
[Link]
[Link]
[Link]
[Link] - ENSMR
35