Cours VBA

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 71

Université Mohammed Premier

École Nationale de Commerce et de Gestion


d’Oujda

Niveau : 1ère année

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

Année universitaire : 2018 / 2019 1


Souvenirs…

Ce que vous avez vu (S1)


• Réaliser des feuilles de calcul
• Utiliser des formules
 Excel calcule pour nous !

2
Être fainéant intelligemment…

L’ordinateur DEVRAIT faire toutes les tâches


bêtes qui nous prennent du temps !

Petits exemples :

3
Être fainéant intelligemment…

On ne devrait pas refaire plusieurs fois la même


chose !

Exemple : si je veux calculer souvent l’âge d’une


personne, je ne devrais expliquer à l’ordinateur
comment faire qu’une seule fois !

4
5
Donner des ordres à la machine !

• Langage de programmation : langage qui nous permet


de donner des ordres compréhensibles par la machine

• Sous Excel : langage VBA (Visual Basic pour


Applications)

• Programme VBA = une macro

Les macros nous permettent de donner des ordres à


EXCEL !

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 s'agit simplement d'un langage développé par Microsoft qui permet de


communiquer avec l’ordinateur et de lui demander de faire et répéter un grand
nombre de fois tout ce qu’on peut faire à la main (opérations complexes
longues et répétitives, comptabilité) .

Il est utilisé en majeure partie avec les logiciels de la suite Office :Word,
Excel, PowerPoint, Access…
8
VBA ou VB ou Visual Basic

• La terminologie autour de Visual Basic peut mener à une


certaine ambiguité.

• VBA = Visual Basic pour Application


– Disponible avec MS Office (Excel, Access, Word)

• VB = Visual Basic
– Langage de programmation contenu dans MS Office mais également
intégré dans Visual Studio pour faire des applications indépendantes

• Finalement les 2 termes sont presque identiques

9
Syntaxe de base

• Il faut toujours indiquer où se trouve le début et


la fin du programme que l’on écrit.
Indique le début

Sub nom_du_programme()

séquences d’instructions

End Sub

Indique la fin
10
Pratique: 1er exemple

Sub afficher_texte()

MsgBox "Bonjour !"

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.

<Portée> <identificateur> as <type>


• un identificateur (nom de la variable),
 a, b, taux, age…
• un type,
 Byte, Integer, Boolean, Double, String, Variant
• une portée,
Public, Private, Dim

Exemple:
Dim Age as Integer
12
Les variables

En Visual Basic, on considère env. 12 types de variables. Les plus utilisées:


INTEGER : nombre entier (entre - 32768 et 32768)
LONG : entier long de -2 147 483 648 à -2 147 483 648
DOUBLE : nombre décimal ( : double précision)
STRING : chaîne de caractères alphanumériques
BOOLEAN : ne peut prendre que 2 valeurs : true (1 ou -1) ou false (0)

13
Autres types :

Byte Valeurs binaires


Currency Nombre monétaire
Date date et heure
Decimal Un nombre décimal
Single Décimal de petite taille
Object Référence à un objet quelque soit son type
Variant type particulier pouvant être n'importe quel autre type

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.

Les variables locales sont déclarées par l'instruction Dim au niveau


d'une procédure ou d'une fonction
Dim ma_variable As Integer
La portée des variables globales s'étend au niveau du module dans
lesquelles elles sont déclarées.
Public var_publique As Integer

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.

Pour déclarer une constante, utilisez l’instruction Const, selon la syntaxe


suivante :
Const nom [As type] = expression

L'instruction Const sert à déclarer les constantes, qui peuvent être typées ou
non

Const TVA As Integer= 20

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

•Il faut qu’il y ait concordance de type entre l’expression et la variable


• soit elles sont de même type,
• soit VBA sait comment transcrire un type dans un autre.

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

Si.. Alors … Sinon… Fin Si IF… THEN… ELSE…. END IF


TANT QUE…………… DO WHILE…
FIN TANTQUE LOOP
POUR i allant de 1 à N faire For i= 1 to N
Suivant i Next i
REPETER…. DO………..
JUSQU'A………. LOOP UNTIL……….

19
Environnement de programmation

Quand vous ouvrez Excel, une vue standard ressemble à ceci:

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

 L’éditeur Visual Basic est l’environnement dans lequel vous


pouvez programmer en VBA.
 Icône Visual basic dans le ruban « Développeur »
 ALT-F11

 Trois fenêtres principales dans le VBE


 Exploreur de projet
 Properties
 Code

 Deux autres fenêtres dans le VBE, utilisées pour le débogage


 Exécution
 Espions

22
Environnement de programmation

Exploreur de Fenêtre de Code


Projet

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

Affiche le code VBA pour la partie


sélectionnée de l’exploreur de projet.

Quand vous enregistrez des macros, elles


sont automatiquement créées sous forme de
code VBA dans l’éditeur de Visual Basic.

Il y a trois types de macros ou procédures


Procédures Sub
Procédures Function
Procédures Evènement

25
Pseudo-codes
Algorithme Calcul_Intérêt_VAcquise

Réel somme_initial, taux, intérêt, valeur_acquise

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

Intérêt  somme_initiale * taux /100


valeur_acquise  somme_initiale + Intérêt

Écrire ‘‘ L’intérêt fourni est de ’’ , intérêt , ‘‘ dirhams’’


Ecrire ‘‘ La somme après un an sera de ’’, valeur_acquise, ‘‘ dirhams’’
Fin
26
Démarche à suivre pour l’écriture et l’exécution d’un programme

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.

Édition d’un programme

Tout nouveau programme est édité au sein d’un module.


S’il n’y a pas encore de module ouvert, vous devez sélectionner
InsertionModule.
Le module « Module1 » est créé et l’éditeur VBE ouvre la fenêtre de code
[Module1 (code)].
Vous pouvez alors saisir le texte du programme.
27
L’exécution des programmes

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.

La sauvegarde des programmes

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

Lors de la première utilisation de l’éditeur VBE, choisir deux options :

La première rend obligatoire la déclaration des variables. Il convient de


sélectionner Outils>Options, puis de choisir Editeur et de cocher «
Déclaration des variables obligatoire ».

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.

 La deuxième option à retenir est de cocher « Vérification automatique de la


syntaxe ». Cette option permet un meilleur suivi du système concernant la
vérification de la syntaxe.
29
APPLICATION

Prenez par exemple le programme proposé précédemment


(Calcul_Intérêt_VAcquise()) et réalisez les étapes suivantes :
1. Ouverture d’une application Excel.
2. Ouverture de l’éditeur VBE après avoir créé l’onglet Développeur.
3. Réglage initial des options de l’éditeur.
5. Ouverture de Module1.
6. Écriture du texte du programme au sein de Module1 et corrections
éventuelles.
7. Exécution du programme et corrections éventuelles du texte.
8. Sauvegarde de l’application Excel.

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.

Assurez-vous que le ruban développeur est actif


Sélectionnez le bouton Office (en haut à gauche)
Cliquez sur Options Excel.
Dans l’onglet Standard, cochez “Afficher l’onglet Développeur dans le ruban” et
cliquez sur OK.
Le ruban Développeur est maintenant visible dans Excel.
31
Visual Basic Editor

permet de :
• Visualiser,
• Modifier,
• Ou écrire
des macros VBA/Excel

32
• Ouvrez Visual Basic Editor

• Choisissez votre module (s’il n’y en a pas insérez un nouveau


module)

• Tapez votre macro :

Sub nom_macro()

End sub

33
Une macro qui dit bonjour

• Msgbox "Bonjour !"


Affiche « Bonjour » dans une boîte de dialogue

• 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

L’accès aux objets


Il existe différent moyen d’appeler/faire référence aux objets :

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 « = »

• Affectation : pour « copier » des informations d’un endroit


à un autre.
• Se note :
Range("A1") = Range("B2")
• Se lit :

Cellule A1 Cellule B2

38
L’affectation : ATTENTION

Range("A1") = Range("B2")

• On copie ce qu’il y a à droite, on le met à


gauche
• DIFFERENT DU ‘’ = ‘’ MATHEMATIQUE
• On peut mettre un calcul à droite (le calcul
est réalisé avant la copie)
Exemple :
Range("A1") = range("B2") + range("B1") * 2
39
Exemple de macro

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

Une variable = une « case mémoire » temporaire


• Même fonctionnement qu’une cellule, mais reste
en mémoire (invisible)
• On lui choisit un nom (quelconque), et on l’utilise
comme une cellule
Ex :
Nom = " Alami " ‘ on met Alami dans nom
Cells(1,1) = nom ‘ on met ce qu’il y a dans
‘ nom dans la cellule A1

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

Pour poser une question :


prenom = inputbox("quel est votre prenom ?")

Inputbox permet de poser une question à l’utilisateur. On


récupère la réponse en la copiant dans une variable ou
une dans une cellule

43
Formulaire avec des InputBox

Demande et copie le prénom de l’utilisateur


en B1 et le nom en B2
Sub question()
Dim prenom as String
prenom = InputBox("quel est votre prénom ?")
Range("B1") = prenom

Range("B2") = InputBox("quel est votre nom ?")


End sub

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 :

MsgBox (Left("Bonjour" , 3))

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 :

MsgBox (Right("Bonjour" , 4))

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

MsgBox (Mid("Bonjour tout le monde" , 9 ))

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

Les fonction Trim


Supprimer tous les espaces superflus à l'exception des espaces simples
entre les mots

Notation:

Trim (" chaine " ) : suppression des espaces à gauche et à droite

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 »

If "Bonjour" like "*on*" Then


MsgBox ("existe" )
Else
MsgBox ("n’existe pas" )
End If

55
Manipuler les chaînes de caractères

L’opérateur Like

Le caractère * peut remplacer : aucun, un ou plusieurs caractères

If "Bonjour" like " *on*" Then

MsgBox ("existe" )

Else

MsgBox ("n’existe pas" )

End If

56
Manipuler les chaînes de caractères

L’opérateur Like

Le caractère # peut remplacer : un caractère numérique de 0 à 9

If "20 Rue" like "## R*" Then

MsgBox ("existe" )
Else

MsgBox ("n’existe pas" )

End If

57
Manipuler les chaînes de caractères

L’opérateur Like

Le caractère ? peut remplacer un caractère quelconque

If "A2C5K" like "?????" Then

MsgBox ("existe" )
Else

MsgBox ("n’existe pas" )

End If

58
Manipuler les chaînes de caractères

Nous pouvons également remplacer un caractère en fonction d'une


plage de caractères ou de caractères précis :
 [abc] remplace un des caractères suivants : a b c
 [a-g] remplace un des caractères suivants : a b c d e f g
 [369] remplace un des caractères suivants : 3 6 9
 [2-5] remplace un des caractères suivants : 2 3 4 5

Pour remplacer un caractère non compris dans les valeurs entre


crochets, un ! doit être ajouté après [
59
Les fonctions mathématiques

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

Vous aimerez peut-être aussi