Cours VBA
Cours VBA
Cours VBA
Informatique de gestion I
Visual Basic for Applications
Contenu :
• Visual Basic pour Ms Excel
• Déclaration des variables
• Instruction d’affectation
• Opérateurs
• Environnement Visual Basic pour Ms Excel
• Macro (procédure Visual Basic) :
• Affectation d’une macro à un objet VB
• Portabilité d’une macro Présenté par :
• Les fonctions VBA
Redouane ESBAI
2
Être fainéant intelligemment…
Petits exemples :
3
Être fainéant intelligemment…
4
5
Donner des ordres à la machine !
6
But du cours
• Maîtriser Excel
• S’initier (un peu) à la programmation
• Comprendre le langage Visual Basic for
Applications (VBA)
• Savoir réaliser des macros sous Excel
• (réaliser un projet Excel complet)
7
Qu’est ce que le VBA ?
VBA = Visual Basic pour Applications.
VBA permet d’automatiser les tâches, de créer des applications complètes, de
sécuriser les saisies et les documents, de créer de nouveaux menus et de
nouvelles fonctions.
Il est utilisé en majeure partie avec les logiciels de la suite Office :Word,
Excel, PowerPoint, Access…
8
VBA ou VB ou Visual Basic
• VB = Visual Basic
– Langage de programmation contenu dans MS Office mais également
intégré dans Visual Studio pour faire des applications indépendantes
9
Syntaxe de base
Sub nom_du_programme()
séquences d’instructions
End Sub
Indique la fin
10
Pratique: 1er exemple
Sub afficher_texte()
End Sub
11
Les variables
C’est une zone de la mémoire centrale permettant d’enregistrer une valeur
et de l’utiliser ensuite pour faire des traitement.
Exemple:
Dim Age as Integer
12
Les variables
13
Autres types :
14
Portée et durée de vie des variables
Les variables peuvent être déclarée à l'intérieur des procédures ou en
dehors des procédures après les mots :
Dim, Private ou Public.
Pour qu'une variable puisse être utilisée par toutes les procédures de
tous les modules, il faut la déclarer en utilisant l'instruction Public au
lieu de l'instruction Dim
15
Constantes
Une fois qu’une valeur a été affectée à une constante, celle-ci ne peut être
modifiée par la suite.
L'instruction Const sert à déclarer les constantes, qui peuvent être typées ou
non
16
VBA : Affectation
Ranger une information (valeur) dans la zone mémoire associé à une
variable, et donc modifier la valeur de la variable.
Syntaxe :
NomDeVariable = Expression
Sub txPrixHT_AfterUpdate
Dim Résultat as Double ’ la variable résultat est un réel
Dim A, B as Boolean ’ ici A est du type Variant !!
B=3<5
Résultat = 5,5 * 4
A = "Hello Word "
End Sub
17
Opérateurs de comparaison Opérateurs logiques.
= And
<> Or
< Not
> Xor
<=
>=
Opérateur d’Affectation =
Opérateur de concaténation &
18
Quelques commandes de base en VBA…
Algorithme VBA
Ecrire ‘‘donnez A’’ A = InputBox(‘‘donnez A’’)
lire A
A 2*B A = 2*B
Ecrire ‘‘la valeur de A est’’, A MsgBox (‘‘la valeur de A est’’) & A
19
Environnement de programmation
20
Environnement de programmation
L’éditeur de Visual Basic n’est pas présent par défaut. Pour l’activer, cliquez
sur le bouton office en haut à gauche, puis « Options Excel » et cochez
« Afficher l’onglet Développeur dans le ruban ».
21
Environnement de programmation
22
Environnement de programmation
Fenêtre
Propriétés
Fenêtre
Espions
Fenêtre
Exécution
23
L’exploreur de projet
Liste tous les projets appartenant au classeur
ouvert.
Chaque classeur possède un projet et chaque
projet peut avoir différentes parties
Workbook et worksheets (feuilles)
Modules
Forms
Cliquer sur Insertion > Module ou Insertion > User
Form pour ajouter une nouveau module ou une
nouveau formulaire au projet courant. Vous pouvez
aussi utiliser le menu Insertion de la barre d’outil.
24
La fenêtre de code
25
Pseudo-codes
Algorithme Calcul_Intérêt_VAcquise
Début
Écrire ‘‘ Introduisez la somme initiale (en dirhams): ’’
Lire somme_initiale
Écrire ‘‘ Introduisez le taux d’intérêt (ex: 3 pour 3%): ’’
Lire taux
Installation de l’éditeur
1. Cliquez sur l’onglet Office .
2. Choisissez Options Excel.
3. Choisissez Standard.
4. Dans les meilleurs options pour travailler avec Excel, cochez l’option
«afficher l’onglet Développeur dans le ruban», puis cliquez sur OK.
L’éditeur VBE étant ouvert et le texte du programme visible sur l’écran, il suffit,
pour lancer l’exécution du programme, de sélectionner Exécution>Exécuter
Sub/UserForm après avoir placé le curseur au sein du texte. Si le programme
ne contient pas d’erreur, il doit fournir les résultats attendus.
Pour sauvegarder les programmes créés grâce à l’éditeur VBE, vous devez
sauvegarder l’application Excel dans laquelle ils figurent, même si les
programmes n’utilisent pas de feuilles de calcul. Le format de fichier à
utiliser est « Classeur Excel (prenant en charge les macros) », qui crée un
fichier dont l’extension est .xlsm
28
Les options à choisir lors de la première utilisation de VBE
Cette option crée une obligation supplémentaire pour le programmeur ; mais elle
conduit à une programmation plus cohérente et plus sûre.
Dès que l’option est retenue, la mention « Option Explicit » est notée
automatiquement en tête des pages qui contiennent les programmes.
30
Macro - Commande
Les macros sont techniquement définies comme des unités de code VBA.
Les macros sont une façon d’automatiser une série d’actions dans une
application Excel.
Les macros peuvent être créées soit directement sous forme de code VBA
dans l’éditeur de Visual Basic, soit via Macros ou avec l’enregistreur de macro.
permet de :
• Visualiser,
• Modifier,
• Ou écrire
des macros VBA/Excel
32
• Ouvrez Visual Basic Editor
Sub nom_macro()
End sub
33
Une macro qui dit bonjour
• La macro :
Sub Test()
msgbox " Bonjour "
End sub
34
Éléments de programmation orientée- objet
Les objets
VBA est un langage orienté Objet, chaque élément est un objet :
Application : représente l’application en cours d’utilisation (Excel)
Le classeur est l’objet Workbook
Une feuille est l’objet Sheet
Une plage de cellule (ou une cellule) est l’objet Range ou Cells
Exemples
Range("A1") : la cellule A1
Cells(3,2) : la cellule B3
Sheets("Feuil1") : la feuille Feuil1
Workbooks("TP1.xlsx") :le classeur TP1
Application :l’application Excel active
35
Éléments de programmation orientée- objet
Exemples
Workbooks("Classeur1.xlsx").Sheets("Feuil1")
Application.Workbooks("Classeur1.xlsx").Sheets("Feuil1")
Application.Workbooks("Classeur1.xlsx").Sheets("Feuil1").Range("A1:C5")
36
Exemples
1) Range
Ecrire un numéro dans plusieurs cellules:
Range("A1:B10") = 1
Range("A1","B10") = 1
Ecrire un numéro dans 5 cellules non contigües
Range("A1, A3, A5, A7, A9") = 1
2) Cells
Ecrire la valeur 7 dans la cellule D3 (ligne 3, colonne 4)
Cells(3,4) = 7
37
L’affectation « = »
Cellule A1 Cellule B2
38
L’affectation : ATTENTION
Range("A1") = Range("B2")
Sub macro_de_test()
Range("B1") = Range("A1")*2
Cells(1,3) = Cells(1,2)*2
Range("A1") = Range("C1")
Range("A1") = Range("A1")-20
End sub
Exercice :
On met 10 dans A1 et on exécute cette macro
• Que contiendra la cellule A1 ?
40
Les variables
41
Exemple : l’échange de données
Sub test()
‘pour échanger deux valeurs
Dim x as Integer
x = range("B2")
range("B2") = range("A1")
range("A1")= x
End sub
42
Poser une question
43
Formulaire avec des InputBox
Exercice :
recopiez et testez
44
Manipuler les chaînes de caractères
La fonction Len
Compter le nombre de caractères dans une chaine de caractères
Notation:
Len("chaine de caractères")
Exemple :
MsgBox (Len("Bonjour"))
45
Manipuler les chaînes de caractères
La fonction Left
Extraire une portion de caractères en partant de la gauche
Notation:
Left ("chaine de caractères" , nombre de caractères à extraire )
Exemple :
46
Manipuler les chaînes de caractères
La fonction Right
Extraire une portion de caractères en partant de la droite
Notation:
Right ("chaine de caractères" , nombre de caractères à extraire )
Exemple :
47
Manipuler les chaînes de caractères
La fonction Mid
Extraire une chaîne de caractères à l'intérieur d'une autre chaîne
Notation:
Mid ("chaine de caractères" ,m , n)
m : La position du caractère qui marque le début de la partie à extraire
n : Le nombre de caractères à renvoyer
Exemple :
MsgBox (Mid("Bonjour tout le monde" , 9 , 4))
Si vous souhaitez récupérer toute la chaîne à partir du 9eme caractère, n'indiquez pas le
dernier argument n
48
Manipuler les chaînes de caractères
La fonction UCase
Passer l'ensemble d'une chaîne en majuscule
Notation:
UCase ("chaine de caractères")
Exemple :
MsgBox (UCase("Bonjour tout le monde" ))
49
Manipuler les chaînes de caractères
La fonction LCase
Passer l'ensemble d'une chaîne en minuscule
Notation:
LCase ("chaine de caractères")
Exemple :
MsgBox (LCase("INFORMATIQUE" ))
50
Manipuler les chaînes de caractères
La fonction Replace
Remplacer des caractères dans une chaîne
Notation:
Replace(" chaine" , " caractère à remplacer", " caractère remplacée" )
Exemple :
Remplacez les caractères & par « de » dans la chaine.
MsgBox (Replace("Informatique & Gestion & 2ème année " , "&" , " de"))
51
Manipuler les chaînes de caractères
Notation:
52
Manipuler les chaînes de caractères
La fonction ASC
Permet de récupérer la valeur d'un caractère dans un jeu de caractères.
Notation:
ASC("caractère")
Exemple :
MsgBox (ASC("a"))
53
Manipuler les chaînes de caractères
La fonction CHR
Permet de récupérer un caractère en fonction de sa valeur dans un jeu de
caractères.
Notation:
CHR (nombre)
Exemple :
MsgBox (CHR(97))
54
Manipuler les chaînes de caractères
L’opérateur Like
Permet de comparer deux chaines de caractères
Notation:
"chaine1" like "chaine2"
Exemple :
Vérifie si la chaîne « on » existe dans la chaîne « bonjour »
55
Manipuler les chaînes de caractères
L’opérateur Like
MsgBox ("existe" )
Else
End If
56
Manipuler les chaînes de caractères
L’opérateur Like
MsgBox ("existe" )
Else
End If
57
Manipuler les chaînes de caractères
L’opérateur Like
MsgBox ("existe" )
Else
End If
58
Manipuler les chaînes de caractères
La fonction Int
Renvoie la partie entière d'un nombre.
Notation:
Int(nombre)
Exemple :
MsgBox (int(23.6))
Si le nombre est négatif, Int retourne le premier entier négatif inférieur ou égal à
ce nombre, par exemple, Int convertit -8,4 en -9
60
Les fonctions mathématiques
La fonction Round
Renvoie un nombre arrondi à un nombre spécifié de positions décimales.
Notation:
Round(nombre, nombreDécimal)
Exemple :
MsgBox (Round(23.253 , 2))
61
Les fonctions mathématiques
La fonction Rnd
Renvoie une valeur contenant un nombre aléatoire entre 0 et 1
Notation:
Rnd
Exemple :
MsgBox (Rnd)
Pour générer une valeur entière aléatoire dans une plage donnée , on utilise la
formule :
Int ( (valeurMax – valeurMin + 1) * Rnd + valeurMin)
62
Les fonctions de type Date
La fonction Day
Renvoie une valeur indiquant un nombre entier compris entre 1 et 31, qui
représente le jour du mois.
Notation:
Day ( date)
Exemple :
MsgBox (Day ("08/ 06 / 2018"))
63
Les fonctions de type Date
La fonction Month
Renvoie une valeur indiquant un nombre entier compris entre 1 et 12, qui
représente le mois de l’année.
Notation:
Month( date)
Exemple :
MsgBox (Month ("08/ 06 / 2018"))
64
Les fonctions de type Date
La fonction Year
Renvoie une valeur indiquant un nombre entier qui représente l’année.
Notation:
Year( date)
Exemple :
MsgBox (Year("08/ 06 / 2018"))
65
Les fonctions de type Date
La fonction DateDiff
Renvoie une valeur indiquant le nombre d'intervalles de temps entre deux
dates données.
Notation:
DateDiff ("interval" , date1, date2 )
interval : est une chaine précisant l’unité du temps de la valeur retournée, il peut
être:
d : jours
m : mois
yyyy : années
Exemple :
MsgBox (DateDiff("yyyy" , " 08/04/1998" , "08/06/2018"))
66
Les fonctions de type Date
La fonction DateAdd
Permet d’ajouter ou de soustraire un intervalle du temps sur une date
Notation:
DateAdd("interval" , nombre, date)
interval : est une chaine précisant l’unité du temps de la valeur retournée, il peut
être:
d : jours
m : mois
yyyy : années
Exemple :
MsgBox (DateAdd("m" , 9 , "08/06/2017"))
67
Les fonctions de type Date
La fonction Now
Renvoie une valeur indiquant la date et l'heure en cours fournies par la date
et l'heure système de votre ordinateur.
Notation:
Now
Exemple :
MsgBox (Now)
68
Les fonctions d’information
La fonction IsEmpty
Renvoie une valeur de type Boolean indiquant si une variable a été
initialisée.
Notation:
isEmpty(variable)
Exemple :
MsgBox (isEmpty(range("a1"))
MsgBox (isEmpty(range("a2"))
69
Les fonctions d’information
La fonction IsNumeric
Renvoie une valeur de type Boolean qui indique si une expression peut être
interprétée comme un nombre.
Notation:
isNumeric(variable)
Exemple :
MsgBox (isNumeric(range("a1"))
MsgBox (isNumeric(range("a2"))
70
Les fonctions d’information
La fonction IsDate
Renvoie une valeur de type Boolean qui indique si une expression peut être
convertie en date.
Notation:
isDate(variable)
Exemple :
MsgBox (isDate(range("a1"))
MsgBox (isDate(range("a2"))
MsgBox (isDate(range("a3")) 71