0% ont trouvé ce document utile (0 vote)
251 vues35 pages

Programmation Événementielle Avec VBA: Plan Du Cours

Transféré par

Marwan Ghazali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
251 vues35 pages

Programmation Événementielle Avec VBA: Plan Du Cours

Transféré par

Marwan Ghazali
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

25/09/2022

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

Capturer un évènement  Gestionnaire


d’évènement. Private Sub bouton1_Click()
 VBA attribut à chaque évènement un Traiter l’évènement
gestionnaire par une procédure particulière End Sub

[Link] - ENSMR

2
25/09/2022

5 Programmation événementielle avec


le VBA
 VBA : Visual Basic pour Application
 Langage fortement associé à la suite bureautique MS-OFFICE: Word, Powerpoint,
Access et Excel…
 C'est un enrichissement de VB par des fonctions spécifiques à chaque
application (Excel, Word, Access....).
 VBA et Excel
 Automatiser une succession d’actions faites dans une feuille
 Notion Macro Excel

 Commandes et boutons personnalisés


 Créer des interfaces graphiques et des applications conviviales

[Link] - ENSMR

6 L'onglet Développeur dans Excel 2013

[Link] - ENSMR

3
25/09/2022

7 Environnement de développement (1)


Accès à la programmation VBA => ALT+F11

Éditeur

Explorateur de
projet

[Link] - ENSMR
Propriétés

8 Environnement de développement (2)


Accès à la programmation VBA

Pour insérer un contrôle dans la feuille Développeur

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

 Un projet contient des modules de codes, par


défaut :
 Un module de code par feuille
 Un module pour le classeur intitulé
« ThisWorkbook »
 Il est possible d’ajouter aux projets des
modules supplémentaires comme :
 Les modules standards
 Les formulaires (UserForms)
 Les modules de classe

[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

 Le VBA est un langage orienté Objet

[Link] - ENSMR

12 Qu’est ce qu’un objet?

 En Visual Basic, un objet correspond à l’un des éléments de l’application Excel:


 Un classeur : Workbook
 Une feuille de calcul : WorkSheet
 Une colonne : Column
 Une ligne : Row
 Une plage de cellules : Range
 Une cellule : Cells
 Etc.
 Un Objet contient des membres qui peuvent être
 des propriétés,
 des méthodes (des fonctions)

[Link] - ENSMR

6
25/09/2022

13 Propriétés des objets

 Une propriété correspond aux caractéristiques d’un


objet.
 Exemples :
 Pour une cellule, les propriétés sont :
 la valeur, la taille, la couleur, la police de caractère etc.
 Pour une feuille, les propriétés sont :
 le nom, la visibilité etc.
 Les objets Excel dont dotés d’attributs (ou propriétés)
 Les propriétés sont différentes d’un objet à un autre
[Link] - ENSMR

14 Méthodes des objets

 Une méthode correspond à une action effectuée sur un objet


 Exemples :
 Une cellule peut être copiée, collée, effacée, etc.
 Une feuille peut être copiée, supprimée, renommée, etc.

[Link] - ENSMR

7
25/09/2022

15 Accès aux propriétés et méthodes des


objets
 Un objet est associé à une méthode ou à une propriété en les séparant par
un point:
 Objet.Méthode
 [Link]été
 Exemple :
 Sheets(« Feuil1 »).Delete
 Association des objets entre eux. Exemple:
 Workbooks("[Link]").Sheets("Feuil1").Cells(3, 1) =
Workbooks("[Link]").Sheets("Feuil1").Cells(1, 1)

 Association des propriétés ou des méthodes. Exemple:


 Cells(1,1).[Link]=255

[Link] - ENSMR

16 Accès aux cellules et des plages de


cellules
 Accès à la cellule via l’objet Cells(numéro de ligne,
numéro de colonne)
 Accès à la plage de cellules via l’objet Range
(Référence)
 Exemple : pour sélectionner des cellules de A1 à C5 :
 Range( "A1:C5").select
 [A1:C5].select
 Range(Cells(1,1),Cells(5,3)).select

[Link] - ENSMR

8
25/09/2022

17 Les feuilles et les cellules

 Exemple pour sélectionner la cellule A4 de la feuille 2:

Sheets("Feuil2").Select Sheets("Feuil2"). Select


Sheets("Feuil2").Range("A4").Select
Range("A4").Select Cells(4,1).Select

 Exemple pour sélectionner des cellules distinctes:


Sheets("Feuil2"). Select
Range("A4, B5").Select

 Exemple pour sélectionner une plage de cellules:

Sheets("Feuil2"). Select
Range("A1: A10").Select
[Link] - ENSMR

18 Quelques propriétés des cellules

 Cells(1,2).Value : permet d’avoir le contenu de la cellule A2


 Cells(1,2). ClearContents : permet d’effacer le contenu de la cellule A2
 Cells(1,2). [Link] : permet de modifier la taille de la police de caractères
 Cells(1,2). [Link] = true : cette instruction permet de mettre en gras le
texte de la cellule A2
 Cells(1,2). [Link] = RGB(0,255,0) : cette instruction permet de mettre la
cellule en vert
 Cells(1,2).Style = "Currency " : style monétaire

[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

 Une fonction se caractérise par l’écriture de l’instruction Function et de


l’instruction End Function
 Une procédure qui retourne une valeur en fin de traitement
Function Nom_Feuille()
Nom_Feuille = [Link]
End Function

[Link] - ENSMR

10
25/09/2022

21 Macro

 Automatiser un ensemble d’actions répétitives


 Développeur/Enregistrer une macro
 Enregistrer le fichier Excel sous format xlsm (prenant en charge les
macros) !!!

[Link] - ENSMR

22 Exemple1 : Créer une macro


 Réorganiser les colonnes automatiquement
 Exemple :
 Colonne A sera mise à la colonne D
 Colonne B sera mise à la colonne C
 Colonne C sera mise à la colonne B
 Colonne D sera mise à la colonne A

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

23 Exemple 1 : Créer une macro (suite)

[Link] - ENSMR

24 Fonction Utile : IsEmpty

 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

 Nom d’une variable :


 Doit commencer par une lettre, puis lettres, chiffres et quelques caractères
spéciaux
 Pas de différence de casse
 Caractères invalides: #, $, %, &, !
 Maximum 254 caractères

[Link] - ENSMR

13
25/09/2022

28 Types des données

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

29 Déclarer des variables

 Forcer la déclaration: ajouter en


début de module
 Option Explicit Ou

 Portée au niveau de la procédure courante:


 Dim ou Static dans la procédure
 Dim nomVariable As type

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

 Données peuvent être non typées explicitement


 Gourmant en espace mémoire à éviter !!!!
 Il peut gérer tout type de valeurs
 Très souple et utile quand on ne connaît pas à l’avance
le type à utiliser.

[Link] - ENSMR

15
25/09/2022

32 Instructions

 Affectation : =
 Différent : <>
 Opérateurs : +, *, /, -, ^, &, \, Mod
 Opérateur logique : Not, And, Or, Xor

[Link] - ENSMR

33 Structure d’une fonction


Le nom de la fonction

 Syntaxe :
Function NomFonction(nom_parmaètres as type) as type de donnée

End Function Type de la valeur retournée


par la fonction

Les paramètres en entrée de


la fonction

[Link] - ENSMR

16
25/09/2022

34 Structure d’une procédure

 Une suite de traitements sans retourner de valeur


 Mot Clé Sub

Syntaxe :
Sub NomProcédure(nom_parmaètres as type)

End Sub

[Link] - ENSMR

35 Sub, Function : paramètres

 Deux façons de passer un paramètre à une Function ou Sub :


 Par valeur, le nom du paramètre est précédé par ByVal.
 Par référence, le nom du paramètre est précédé par ByRef.

 Exemple : Transmission des variables par référence

[Link] - ENSMR

17
25/09/2022

36 Variables globales

 Une variable déclarée à l’extérieur de toute Function ou Sub est


globale.
 Deux types de visibilités sont possibles :
 Public, visible depuis tous les modules,
 Private, visible uniquement dans le module courant.

[Link] - ENSMR

37 Portée de variables (1)

On exécute ex1, puis ex2, puis ex3.


Que va afficher ex3 ?

[Link] - ENSMR

18
25/09/2022

38 Portée des variables (2)

 Quand l’exécution d’un programme rencontre une


variable:
1. Si la variable est définie localement
 il utilise la version locale
2. Sinon, si la variable est globale
 il utilise la version globale
3. Sinon, c’est à dire la variable n’est déclarée nulle part et dans
ce cas VB a deux solutions
 Option Explicit : une erreur
 Sinon, la variable est initialisée à 0

[Link] - ENSMR

39 Les structures conditionnelles


Syntaxes :
If Condition Then If <condition1> Then
[Instructions] <instructions 1>
End If ElseIf <condition2>
Then
<instructions 2>
If Condition Then
Else
[Instructions]
<instructions 3>
Else
End If
[Instructions]
End if

[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

Do While Condition While Condition


Instructions Instructions
Loop Wend

[Link] - ENSMR

20
25/09/2022

42 For Each Next

 For Each Élément In Ensemble  Exemple :


Instructions Sub Affichage
Next Élément Villes = Array("Rabat", "Casablanca", "Agadir")
Dim nomVilles As Variant
'iterating using For each loop.
For Each Item In Villes
nomVilles = nomVilles & Item & Chr(10)
Next
MsgBox nomVilles
end sub

[Link] - ENSMR

43 Les tableaux (1)

 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

44 Les tableaux (2)

 Tableaux dynamiques
 Création
 MonTableau() As Integer

 Redimensionnement
 ReDim MonTableau(NombreElement)

 Redimensionner en gardant les données déjà présentes


 ReDim Preserve MonTableau(NombreElements)

[Link] - ENSMR

45 Exemple : Temps de remplissage de cellules et de


tableau

[Link] - ENSMR

22
25/09/2022

46 Les boîtes de dialogues

 La boîte de dialogue Msgbox permet d’afficher un message.


 Syntaxe
 Msgbox Texte, [Boutons], [Titre]
 Texte : correspond au message à afficher
 Boutons : choix des boutons (oui, non, annuler, etc.) + autres options
 Titre : Titre de la boîte de dialogue

[Link] - ENSMR

47 Les possibilités du 2ème argument de


msgbox

[Link] - ENSMR

23
25/09/2022

48 InputBox

 La boîte de dialogue InputBox demande à l'utilisateur d'entrer une valeur


 Syntaxe
 Rep = InputBox("Texte ?", "Titre", "Valeur par défaut")

[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

50 Propriétés des objets

 Les objets Excel dont dotés d’attributs (ou propriétés)


 [Link]été : permet d’accéder à la propriété de cet objet
 Exemple:
 [Link] = false
 [Link] = false

[Link] - ENSMR

51 Méthodes des objets Excel

 Procédures ou fonctions liées aux objets


 Objet.méthode argument1, argument2, ..

 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

52 Variables : type objet

 Pour utiliser un objet, il faut commencer par le déclarer puis


l'instancier :
Dim monObjet As MaClasse
Dim monObjet as New MaClasse
Set monObjet = New MaClasse
monObjet.param1 = 10
[Link] ...

 Lorsque l’objet n’est pas instancié mais seulement déclaré, il est


alors équivalent à "Nothing" .
 Destruction d'un objet Set monObjet = Nothing
 Il existe de nombreux objets prédéfinis dans Excel : WorkBook,
Range

[Link] - ENSMR

53 Les collections d’objets


 On rajoute un « s »
 Workbooks : collection des objets Workbook
 Worksheets : collection des objets Worksheet

 Faire appel à un élément d’une collection par 2


méthodes:
 Appel par le nom de l’élément
 Ex: Worksheets("Feuil1")
 Appel par l'indice
 Ex: Worksheets(1)

[Link] - ENSMR

26
25/09/2022

54 Les objets d’Excel – objet Range


 L’objet Range correspond à l’union des cellules ou plages de cellules
 Range(« cel1 [,cel2, ….]) ou Range(« plage1 [,plage2, ..] »)

 Propriétés :
 Count : nombre de cellule désigné par l’objet Range
 MsgBox Range("B1:B45").Count ‘affiche 45

 Row : renvoie le numéro de la première ligne de la plage


 Column : renvoie le numéro de la première colonne de la plage
 [Link] : propriété booléenne pour indiquer si les fontes des cellules sont
en gras ou pas

[Link] - ENSMR

55 Les objets d’Excel – objet Range

 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

56 Exemple d’utilisation du type « Range »

 Le type RANGE désigne une plage de cellules, c’est un type spécifique à


Excel.

[Link] - ENSMR

57
Exemple d’utilisation du type « Range »

Lignes et colonnes commencent à


l’indice 1, ∀ la position de la plage dans
la feuille.

[Link] - ENSMR

28
25/09/2022

58 Utilisation for Each avec Range

 La boucle For Each est adaptée au parcours des collections (une plage de
cellules est une collection de cellules).

[Link] - ENSMR

59 Affectation avec « Set »

 Affectation d’une variable objet doit être réalisée à l’aide de l’instruction


Set

[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

Exemple d’Évènements pour


61
Worksheet

[Link] - ENSMR

30
25/09/2022

62 Exemple d’événement de Workbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)


If MsgBox("Etes-vous certain de vouloir fermer ce classeur ?", 36,
"Confirmation") = vbNo Then
Cancel = True
End If
End Sub

[Link] - ENSMR

63 Gestion des erreurs


 Dans son comportement par défaut l’exécution s’arrête et un
message est affiché.
 On peut spécifier un autre comportement si une erreur se produit,
trois comportemens sont possibles :
 On Error Goto 0, le comportement par défaut
 On Error Resume Next, ignorer les erreurs et passer à l’instruction suivante.
 On Error Goto <label>, sauter à <label> (ligne marqué de <lable>:) si une
erreur se produit.
 Si une erreur se produit la variable Err est initialisée.

[Link] - ENSMR

31
25/09/2022

64 Gestion des erreurs

 La variable Err contient plusieurs membres, les plus importants :


 Number, contient le numéro unique de l’erreur.
 Description, contient la description de l’erreur.
 Raise, produit une erreur (utile pour signaler des erreurs à d’autres parties du
programme.
 Clear, permet de nettoyer la dernière erreur.

[Link] - ENSMR

65 Exemple de Gestion d’erreur

[Link] - ENSMR

32
25/09/2022

66 Objet « UserForms »
 Les « UserForms » sont des objets graphiques qu’on peut afficher dans
Excel.

 On utilise des « UserForms » pour interagir avec un utilisateur.

 Un « UserForm » est toujours composé d’une fenêtre sur laquelle


s’affichent des contrôles graphiques.

 La boite à outils de Excel propose plusieurs contrôles : boutons, zones


de texte, liste de choix, etc.

 Chaque contrôle propose des évènements qui permettent


d’interagir avec l’utilisateur.

 Chaque « UserForm » gère son propre module.


[Link] - ENSMR

67 Création d’un formulaire (UserForm)

[Link] - ENSMR

33
25/09/2022

Code associé à un « UserForm »


68

Évènement
click du bouton

Accès à une
propriété d’un
autre contrôle

[Link] - ENSMR

69 Exercice : Création d’un formulaire

[Link] - ENSMR

34
25/09/2022

70 Références

 [Link]
 [Link]
 [Link]

[Link] - ENSMR

35

Vous aimerez peut-être aussi