Excel /VBA
Juin 2014
SOMMAIRE I. Introduction à Excel VBA
II. L’enregistreur de macro
III. L’environnement Visual Basic Editor
IV. Les divers moyens pour exécuter une macro
V. Le modèle objet d’Excel
VI. Les fonctions définies par l’utilisateur
VII. Le langage VBA
VIII. Les objets UserForm
Excel /VBA
Juin 2014
Introduction à Excel VBA EXCEL VBA (Visual Basic pour Application) est un langage
de programmation permettant d’utiliser du code Visual Basic pour exécuter les nombreuses fonctionnalités de l’Application EXCEL.
Quelques définitions : Un programme écrit en VBA est souvent appelé une macro. Les macros permettent notamment d’automatiser des
tâches répétitives réalisées sous EXCEL. Les macros peuvent aussi être utilisées pour créer des
boîtes de dialogue afin de rendre une application développée sous EXCEL plus conviviale.
Une macro peut être créée en utilisant l'enregistreur de macros, qui ne nécessite aucune connaissance du langage VBA.
Excel /VBA
Juin 2014
L’enregistreur de macro
L’enregistreur de macro permet d’écrire du code VBA à partir d’opérations effectuées manuellement sous EXCEL.
Exercice
Excel /VBA
Juin 2014
L’environnement Visual Basic Editor Nous allons maintenant examiner le code VBA produit.
Pour ce faire, il faut utiliser l’éditeur de Visual Basic, VISUAL BASIC EDITOR (VBE), qui s’exécute dans une
fenêtre différente de celle d’EXCEL. Ouvrir VBE en activant la commande Alt + F11 ou en cliquant
sur le bouton VISUAL BASIC .
Excel /VBA
Juin 2014
L’EXPLORATEUR DE PROJETS
L'explorateur de projets affiche une liste hiérarchisée des différents projets
VBA associés aux classeurs EXCEL ouverts.
A chaque classeur EXCEL ouvert est associé un projet VBA.
Un projet VBA associé à un classeur regroupe les éléments du classeur, comme ses feuilles de calcul ou des boîtes de dialogue, et les procédures et les fonctions associées au classeur et stockées dans un ou plusieurs modules de code.
Le projet VBA associé au classeur TEST-MACRO.XLS est composé de deux dossiers :
le dossier MICROSOFT EXCEL OBJETS
le dossier MODULES
Excel /VBA
Juin 2014
LES MODULES DE CODE
L’explorateur de projets permet ( à l’aide du clic droit de la souris) :
d’ouvrir un module de code d’insérer un nouveau module de code
ou d’en supprimer un
Toutes les macros sont enregistrées dans un module de code. L’enregistreur de macro a inséré le module de code MODULE1 qui contient la macro MACRO1. Un module de code peut contenir plusieurs macros. On peut insérer autant de modules de code qu’on le désire.
Remarque :
Excel /VBA
Juin 2014
LES PROCEDURES
Une macro est appelée en VBA une procédure, c’est une suite d'instructions qui ne retourne pas de valeur.
VBA permet également d’écrire des fonctions. Une fonction est une suited'instructions qui retourne une valeur.L’enregistreur de macro ne génère que des procédures. Une procédurecommence par le mot clé Sub suivi du nom de la procédure et elle se termine par le mot clé End SubSub Macro1()
Instructions…
End Sub
Modifier la macro MACRO 1
Excel /VBA
Juin 2014
LES Fonctions définies par l’utilisateurVBA offre la possibilité de créer ses propres fonctions, qui
peuvent être utilisées dans EXCEL comme n’importe quelle fonction intégrée.Une fonction est une suite d'instructions qui retourne une valeur. Elle commence par le mot clé Function suivi du nom de la fonction et d’une liste d’arguments entre parenthèses, qui peut être vide. Elle se termine par le mot clé End Function. Une fonction a la syntaxe suivante :
Function NomFonction([argument_1,..., argument_n])
Instructions...NomFonction = Expression ‘valeur de retour
...End Function
Notez q’une fonction indique la valeur à retourner en initialisant son nom avec la valeur de retour.
Excel /VBA
Juin 2014
TYPE DE DONNÉES
Ne peut prendre que les valeurs True ou False. Ce type de données utilise 2 octets pour stocker la variable.
I. Boolean
Ce type de données comprend les valeurs entières de 0 à 255 et utilise 1 octet pour stocker la variable.
II. Byte
Ce type de données comprend les valeurs entières de -32 768 à 32 767, utilise 2 octets pour stocker la variable.
III. Integer
Ce type de données comprend les valeurs entières de -2 147 483 648 à 2 147 483 647, utilise 4 octets pour stocker la variable.
IV. Long
Excel /VBA
Juin 2014
V. Single Ce type de données comprend les valeurs à virgules flottantes est comprise entre -3,402823E38 et -1,401298E-45 pour les nombres négatifs et entre 1,401298E-45 et 3,402823E38 pour les positifs, utilise 4 octets pour stocker la variable.VI. Double
Ce type de données comprend les valeurs à virgules flottantes est comprise entre -1,79769313486231E308 et -4,94065645841247E-324 pour les nombres négatifs et entre 4,94065645841247E-324 et 1,79769313486231E308 pour les positifs, utilise 8 octets pour stocker la variable.
VII. Date Ce type de données comprend les dates comprises entre le 1er janvier 100 et le 31 décembre 9999, les heures allant de 00:00:00 à 23:59:59. Toute valeur de date peut être attribuée à une variable de type Date ou de type Double. Ce type utilise 8 octets pour stocker la variable.
Excel /VBA
Juin 2014
Quelques définitions :
Les Variables
C'est un nom qui représente l'emplacement en mémoire d'une valeur, Il est préférable de déclarer la variable en début de portée (début de procédure, fonction ou module) et de préciser son type : Dim variable as type, exemple : Dim UnTexte as String qui déclare la variable UnTexte de type chaîne
VIII. String
Il existe deux types de chaînes :
* Les chaînes de longueur variable peuvent contenir environ 2^31 caractères. * Les chaînes de longueur fixe peuvent contenir de 1 à 2^16 caractères.
Les Constants
C'est un nom qui représente l'emplacement en mémoire d'une valeur, Il est préférable de déclarer la variable en début de portée (début de procédure, fonction ou module) et de préciser son type : Const CONSTANTE as type = valeur, exemple : Const MACONSTANTE as String = "ceci est une constante" qui déclare que la constante MACONSTANTE, de type chaîne est égal à "ceci est une constante".
Excel /VBA
Juin 2014
Les variablesUne 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 celluleEx : Nom = " toto " ‘ on met toto dans nomCells(1,1) = nom ‘ on met ce qu’il y a dans
‘ nom dans la cellule A1
Excel /VBA
Juin 2014
Exemple : l’échange de données
Sub echange()‘ Pour échanger les contenus de A1 et B2
x = range("B2") range("B2") = range("A1") range("A1")= xEnd sub
Excel /VBA
Juin 2014
Poser une questionPour poser une question :Nom = inputbox("quel est votre nom ?")
Inputbox permet de poser une question à l’utilisateur. On récupère la réponse en la copiant dans une variable (par exemple)
Excel /VBA
Juin 2014
Formulaire avec des InputBoxDemande et copie le prénom de
l’utilisateur en B1 et le nom en B2
Exercice : recopiez et testez
Sub question() prenom = InputBox("quel est votre prenom ?") range("B1") = prenom nom = InputBox("quel est votre nom ?") range("B2") = nomEnd sub
Excel /VBA
Juin 2014
Petite remarque…Attention :
Le résultat d’InputBox est du texte
x = inputbox("rentrez votre age")
Le résultat sera : "22" et non pas 22 !
Pour avoir la valeur numérique :
x = val(inputbox("rentrez votre age"))
Excel /VBA
Juin 2014
Le débuggeur (dévermineur)Utile pour repérer les erreurs (bugs) dans une
macro. Permet de : Exécuter une macro pas à pas Voir le contenu des variables Et plus…
Excel /VBA
Juin 2014
Exécuter pas à pas Aller dans l’éditeur Se placer dans la macro à exécuter Allez dans déboggage/pas à pas détaillé (F8)
pour avancer d’un pas
Excel /VBA
Juin 2014
Voir le contenu d’une variableOn utilise pour cela des espions Cliquer sur la variable avec le bouton droit Sélectionner ajouter un espion
Lors de l’exécution pas à pas, le contenu de la variable est affiché.
Excel /VBA
Juin 2014
RépétitionPour répéter n fois la même chose :
solution classique - le « copier - coller »
Ex : affichez 5 fois « bonjour » :Sub begaie()msgbox "Bonjour“msgbox "Bonjour“msgbox "Bonjour“msgbox "Bonjour“msgbox "Bonjour“End Sub
Excel /VBA
Juin 2014
La boucle For Pour répéter n fois une séquence d’opération
:
Sub begaie() For i = 1 to 5 msgbox "Bonjour“ NextEnd Sub
Écrire et tester avec le débuggeur. Placez un espion sur la variable i
Excel /VBA
Juin 2014
La boucle for : explication
Sub begaie()
For i = 1 to 10
msgbox "Bonjour“
Next
End Sub
i : iterateur
1 : valeur de départ
10 : valeur d’arrivée
Excel /VBA
Juin 2014
La boucle forFor (iterateur) = (départ) to (arrivée)
(Instructions)
Next
Au départ, l’itérateur vaut (départ)
A chaque itération :
- les instructions sont exécuté
- l’itérateur est incrémenté
On répète jusqu’à atteindre (arrivée)
Excel /VBA
Juin 2014
Les répétitions (bis)Compter de 1 à 5 :
Sub begaie()msgbox “Attention : 1"msgbox “Attention : 2"msgbox “Attention : 3"msgbox “Attention : 4"msgbox “Attention : 5“Msgbox “Boom !“End Sub
Excel /VBA
Juin 2014
La boucle for : exemple 2
Sub compte() For i = 1 to 5 msgbox “Attention : ” & i Next msgbox “boom !”End Sub
Écrire et tester avec le débuggeur. Placez un espion sur la variable i
Top Related