VBA Excel: Application
en Finance
1ʳᵉ Année du Cycle Master en Finance,
Actuariat et Data Science
Faculté des Sciences Juridiques,
Economiques et Sociales de Tétouan
(FSJES de Tétouan)
Université Abdelmalek Essaâdi
2024 - 2025
Dr. AIT EL ASRI Smail
Table des matières
Chapitre 1. Introduction au VBA ....................................................................................................... 5
1. Introduction au VBA ....................................................................................................... 5
1.1. Qu'est-ce que VBA ? ............................................................................................................... 5
1.1.1. Rôle du VBA dans Excel ....................................................................................................... 5
1.1.2. Historique succinct du VBA .................................................................................................. 5
1.1.3. Exemples d'applications du VBA dans Excel ........................................................................ 5
1.1.4. Pourquoi apprendre VBA ?.................................................................................................... 6
1.2. L'environnement de développement VBA (VBE) ................................................................... 6
1.3. Activation de l'onglet Développeur ......................................................................................... 6
1.3.1. Ouverture du Visual Basic Editor (VBE) .............................................................................. 6
1.3.2. Présentation de l'interface du VBE ........................................................................................ 7
1.4. Configuration de l'environnement VBE .................................................................................. 7
2. Votre première macro ...................................................................................................... 8
2.1. Qu'est-ce qu'une macro ? ......................................................................................................... 8
2.2. Enregistrement d'une macro .................................................................................................... 8
2.3. Exemple de macro simple ....................................................................................................... 8
2.4. Visualisation du code VBA ..................................................................................................... 8
2.5. Exécution d'une macro ............................................................................................................ 9
2.6. Modifier le code VBA ............................................................................................................. 9
2.7. Exercice pratique ..................................................................................................................... 9
3. Ce qu'il faut retenir .......................................................................................................... 9
Chapitre 2. Bases et Concepts Fondamentaux du VBA ................................................................... 10
1. Syntaxe VBA ................................................................................................................. 10
1.1. Qu'est-ce que la syntaxe ? ..................................................................................................... 10
1.2. Éléments de base de la syntaxe VBA .................................................................................... 10
1.3. Exemple simple de syntaxe VBA .......................................................................................... 10
2. Variables, Types de données et Constantes.....................................................................11
2.1. Variables .................................................................................................................................11
2.2. Comment déclarer une variable ..............................................................................................11
2.3. Affectation d'une valeur à une variable ..................................................................................11
2.4. Types de données................................................................................................................... 12
2.5. Déclaration implicite vs. explicite (Option Explicit)............................................................. 12
2.6. Constantes ............................................................................................................................. 12
3. Opérateurs et Expressions ............................................................................................. 12
3.1. Opérateurs ............................................................................................................................. 12
3.1.1. Opérateurs arithmétiques ..................................................................................................... 12
3.1.2. Opérateurs de comparaison ................................................................................................. 13
3.1.3. Opérateurs logiques ............................................................................................................. 13
3.1.4. Opérateur de concaténation de chaînes de caractères .......................................................... 13
3.2. Expressions............................................................................................................................ 13
3.3. Ordre des opérations (priorité des opérateurs) ...................................................................... 13
3.4. Exemples d'opérations et d'expressions ................................................................................. 13
4. Structures de contrôle .................................................................................................... 14
4.1. Instructions conditionnelles ................................................................................................... 14
4.2. Boucles .................................................................................................................................. 15
4.3. Exemple d'utilisation des structures de contrôle ................................................................... 15
5. Procédures et Fonctions................................................................................................. 16
5.1. Procédures (Subroutines)....................................................................................................... 16
5.2. Fonctions ............................................................................................................................... 16
5.3. Paramètres (arguments) ......................................................................................................... 16
6. Bonnes pratiques pour les noms et la structure ............................................................. 17
7. Exercices pratiques ........................................................................................................ 18
8. Ce qu'il faut retenir ........................................................................................................ 18
Chapitre 3. Travailler avec le Modèle Objet Excel .......................................................................... 19
1. Introduction ................................................................................................................... 19
2. Comprendre le Modèle Objet Excel .............................................................................. 19
2.1. Qu'est-ce qu'un modèle objet ? .............................................................................................. 19
2.2. La hiérarchie du modèle objet Excel ..................................................................................... 19
2.3. Comprendre les propriétés et les méthodes ........................................................................... 19
2.4. Accéder aux objets ................................................................................................................ 20
2.5. Remarques importantes ......................................................................................................... 20
3. Référencer des Cellules et des Plages............................................................................ 20
3.1. L'objet Range ....................................................................................................................... 20
3.2. Différentes manières de référencer une cellule ou une plage ................................................ 20
3.2.1. Exemples concrets ............................................................................................................... 20
3.3. Sélectionner vs. manipuler directement les cellules .............................................................. 21
4. Manipuler les Classeurs et les Feuilles de calcul .......................................................... 21
4.1. L'objet Workbooks................................................................................................................. 21
4.1.1. Méthodes de l'objet Workbooks ....................................................................................... 21
4.1.2. Propriétés de l'objet Workbook (classeur)......................................................................... 22
4.2. L'objet Worksheets ................................................................................................................ 22
4.2.1. Méthodes de l'objet Worksheets ..................................................................................... 22
4.2.2. Propriétés de l'objet Worksheet (feuille de calcul).......................................................... 22
4.3. Exemples d'utilisation............................................................................................................ 22
5. Lire et Écrire des Données ............................................................................................ 22
5.1. Récupérer les valeurs des cellules ......................................................................................... 22
5.2. Définir les valeurs des cellules .............................................................................................. 23
5.3. Parcourir les lignes et les colonnes (boucles) ........................................................................ 23
6. Exercices pratiques ........................................................................................................ 23
7. Ce qu'il faut retenir ........................................................................................................ 24
Chapitre 4. Interaction Utilisateur et Gestion des Erreurs................................................................ 25
1. Introduction ................................................................................................................... 25
2. 4.1 Interaction Utilisateur .............................................................................................. 25
2.1. L'importance de l'interaction utilisateur ................................................................................ 25
2.2. MsgBox Afficher des messages ........................................................................................... 25
2.2.1. Syntaxe de MsgBox ............................................................................................................ 25
2.2.2. Récupérer la réponse de l'utilisateur .................................................................................... 26
2.2.3. Exemples MsgBox .............................................................................................................. 26
2.3. InputBox Demander une saisie à l'utilisateur ................................................................... 26
2.3.1. Syntaxe de InputBox ....................................................................................................... 26
2.3.2. Récupérer la saisie de l'utilisateur ....................................................................................... 27
2.3.3. Exemples InputBox ......................................................................................................... 27
3. Gestion des Erreurs........................................................................................................ 27
3.1. Types d'erreurs ....................................................................................................................... 27
3.2. On Error GoTo Intercepter les erreurs d'exécution ........................................................ 28
3.3. Syntaxe de On Error GoTo ............................................................................................. 28
3.4. On Error Resume Next Ignorer les erreurs ................................................................ 28
3.5. L'objet Err............................................................................................................................ 28
3.6. Exemple de gestion d'erreurs ................................................................................................. 29
4. Outils de débogage ........................................................................................................ 29
4.1. L'importance du débogage..................................................................................................... 29
4.2. Points d'arrêt (Breakpoints) ................................................................................................... 29
4.3. Exécution pas à pas ............................................................................................................... 29
4.4. La fenêtre Exécution (Immediate Window) .......................................................................... 30
4.5. Les fenêtres Variables locales (Locals Window) et Espion (Watch Window) ....................... 30
4.6. Exemple d'utilisation du débogueur ...................................................................................... 30
4.7. Exercices pratiques ................................................................................................................ 30
5. Ce qu'il faut retenir ........................................................................................................ 31
Chapitre 5. Applications de VBA en Finance .................................................................................. 32
En cours de développement ................................................................................................................... 32
Chapitre 1. Introduction au VBA
1. Introduction au VBA
Cette première partie vous introduit aux fondamentaux du VBA (Visual Basic for Applications).
Vous découvrirez ce qu'est le VBA, son rôle dans Excel, l'environnement de développement et
comment créer vos premières macros. L'objectif est de vous donner une base solide pour aborder
les chapitres suivants.
1.1. Qu'est-ce que VBA ?
Le VBA est un langage de programmation développé par Microsoft pour automatiser des tâches
et étendre les fonctionnalités des applications de la suite Office, en particulier Excel. Il vous
permet de "parler" à Excel et de lui dire précisément ce que vous voulez qu'il fasse.
Contrairement aux fonctions et formules Excel, qui sont conçues pour effectuer des calculs et des
manipulations de données dans des cellules, le VBA permet d'effectuer des opérations plus
complexes et de contrôler l'interface d'Excel.
1.1.1. Rôle du VBA dans Excel
• Automatisation : Remplacer des tâches manuelles et répétitives par des scripts (macros).
Par exemple, la mise en forme de tableaux, le filtrage de données, l'impression de
rapports.
• Personnalisation : Créer des outils spécifiques à vos besoins, des fonctions sur mesure,
des interfaces utilisateurs personnalisées.
• Extension des fonctionnalités : Interagir avec d'autres applications, importer des
données depuis des sources externes, envoyer des emails, etc.
• Efficacité : Gagner du temps, réduire les risques d'erreurs humaines, augmenter la
productivité.
1.1.2. Historique succinct du VBA
Le VBA est basé sur le langage BASIC, un langage de programmation simple et facile à apprendre.
L'intégration de VBA dans les applications Microsoft Office a permis aux utilisateurs d'automatiser
leurs tâches sans avoir à devenir des experts en programmation.
Au fil des années, le VBA a évolué, gagnant en puissance et en flexibilité, tout en conservant sa
relative simplicité d'approche.
1.1.3. Exemples d'applications du VBA dans Excel
• Automatisation de la mise en forme :
o Mettre en forme des tableaux avec des styles uniformes (couleurs, bordures,
polices).
o Appliquer des formats conditionnels basés sur des critères complexes.
o Exemple : Créer une macro qui met en forme tous les tableaux d'un classeur avec
le même style, en un seul clic.
• Traitement et manipulation de données :
o Trier, filtrer, regrouper et extraire des données.
o Effectuer des calculs complexes sur des plages de cellules.
o Concaténer des données de plusieurs feuilles de calcul.
o Exemple : Créer une macro qui extrait les données de ventes d'un mois spécifique,
les trie par ordre décroissant et affiche un graphique récapitulatif.
• Création de rapports et de tableaux de bord :
o Générer des rapports récapitulatifs avec des calculs et des statistiques.
o Afficher des graphiques et des tableaux de bord interactifs.
o Envoyer des rapports par e-mail automatiquement.
o Exemple : Créer une macro qui génère chaque semaine un rapport de
performance basé sur les données de ventes.
• Automatisation des tâches :
o Importer des données depuis des fichiers externes (txt, csv, etc.).
o Exporter des données vers des fichiers.
o Envoyer des emails automatisés avec des pièces jointes.
o Exemple : Créer une macro qui importe automatiquement les données d'un fichier
CSV, met à jour un tableau de bord et envoie un email à votre supérieur pour
l'informer.
1.1.4. Pourquoi apprendre VBA ?
• Gain de temps : Automatisez les tâches répétitives pour vous concentrer sur des activités
à plus forte valeur ajoutée.
• Productivité accrue : Effectuez des opérations complexes rapidement et facilement.
• Réduction des erreurs : Évitez les erreurs manuelles lors de la manipulation de grandes
quantités de données.
• Personnalisation : Adaptez Excel à vos besoins spécifiques, créez des outils et des
applications sur mesure.
• Compétence recherchée : La maîtrise du VBA est une compétence précieuse dans de
nombreux domaines.
1.2. L'environnement de développement VBA (VBE)
1.3. Activation de l'onglet Développeur
Pour accéder aux outils VBA, vous devez activer l'onglet "Développeur" dans le ruban d'Excel.
1. Cliquez sur l'onglet Fichier.
2. Sélectionnez Options.
3. Dans la fenêtre Options Excel, cliquez sur Personnaliser le ruban.
4. Dans la partie droite de la fenêtre, cochez la case Développeur.
5. Cliquez sur OK.
L'onglet "Développeur" est maintenant visible dans le ruban, et vous donne accès aux outils VBA,
notamment l'éditeur VBE (Visual Basic Editor).
1.3.1. Ouverture du Visual Basic Editor (VBE)
Il existe deux méthodes principales pour ouvrir le VBE :
1. Via l'onglet Développeur : Cliquez sur le bouton Visual Basic dans l'onglet
"Développeur".
2. Via un raccourci clavier : Appuyez simultanément sur les touches Alt + F11.
1.3.2. Présentation de l'interface du VBE
L'éditeur VBE est l'environnement dans lequel vous écrivez, modifiez et déboguez votre code VBA.
Il est composé de plusieurs fenêtres principales :
• L'Explorateur de projets (Project Explorer) :
o Située généralement en haut à gauche, cette fenêtre affiche la liste des classeurs
Excel ouverts et leurs composants (modules, formulaires...).
o Chaque classeur est considéré comme un "projet" VBA.
o Cette fenêtre vous permet de naviguer entre les différents projets et leurs
composants.
o Vous pouvez y voir :
▪ VBAProject (NomDeVotreFichier) : Le projet qui correspond à
votre classeur.
▪ Feuil1 (NomDeVotreFeuille): Le module de code de la feuille de
calcul numero 1 (ou 2, 3, etc.)
▪ ThisWorkbook : Le module de code du classeur.
▪ Modules : Le dossier qui contient les modules standards
▪ UserForms: Le dossier qui contient les formulaires (explorés plus loin).
• La fenêtre Propriétés (Properties) :
o Située généralement en bas à gauche, cette fenêtre affiche les propriétés de
l'objet sélectionné dans l'Explorateur de projets (par exemple, le nom d'un
module, le titre d'un formulaire...).
o Vous pouvez modifier ces propriétés. Chaque objet à des propriétés spécifiques.
o Par exemple, vous pouvez modifier le nom d'un module standard en sélectionnant
l'objet Module1 dans l'explorateur de projet, puis en modifiant la
propriété Name dans la fenetre Propriétés.
• La fenêtre Code (Code Window) :
o Située généralement à droite de l'interface.
o C'est dans cette fenêtre que vous écrivez, modifiez et visualisez votre code VBA.
o Pour faire apparaitre une fenetre code, vous devez double-cliquer sur un des
objets dans l'explorateur de projet qui peut contenir du code (module, feuille, etc)
• La fenêtre Exécution (Immediate Window) :
o Généralement située en bas, en dessous de la fenêtre Code.
o Cette fenêtre permet d'exécuter directement des commandes VBA, de tester des
instructions, ou d'afficher la valeur de variables.
o Elle est très utile pour le débogage.
1.4. Configuration de l'environnement VBE
Le VBE offre des options de personnalisation :
Via le menu "Outils" puis "Options...". Vous pouvez y modifier le thème visuel (sombre
ou clair), la taille et la police de l'éditeur, les options d'édition de code (numéro de ligne,
coloration syntaxique...).
2. Votre première macro
2.1. Qu'est-ce qu'une macro ?
• Une macro est une séquence d'instructions VBA (code) qui effectue une tâche spécifique.
Vous pouvez utiliser l'enregistreur de macros pour enregistrer vos actions dans Excel et les
traduire en code VBA. C'est un excellent moyen de débuter.
2.2. Enregistrement d'une macro
1. Dans l'onglet "Développeur", cliquez sur le bouton Enregistrer une macro.
2. Dans la boîte de dialogue "Enregistrer une macro" :
o Nom de la macro : Donnez un nom clair et descriptif à votre macro (par exemple,
"MettreEnGras", "CalculerLaSomme"). Évitez les espaces et les caractères spéciaux
dans le nom.
o Touche de raccourci : Vous pouvez assigner un raccourci clavier à votre macro
(par exemple, Ctrl+Shift+G). C'est optionnel.
o Enregistrer la macro dans : Choisissez où la macro sera enregistrée. L'option par
défaut est "Ce classeur" mais vous pouvez la mettre dans un nouveau classeur, ou
dans le classeur de macros personnelles.
o Description : Ajoutez une description de ce que fait la macro (optionnel mais
recommandé).
3. Cliquez sur OK pour démarrer l'enregistrement.
4. Effectuez les actions que vous voulez automatiser (sélectionner des cellules, modifier le
format, effectuer des calculs...).
5. Pour arrêter l'enregistrement, cliquez sur le bouton Arrêter l'enregistrement dans
l'onglet "Développeur" (il a remplacé le bouton "Enregistrer la macro").
2.3. Exemple de macro simple
1. Enregistrez une macro nommée "MiseEnGras" (sans raccourci).
2. Sélectionnez une cellule (par exemple, A1).
3. Cliquez sur le bouton "Gras" dans l'onglet Accueil.
4. Arrêtez l'enregistrement.
2.4. Visualisation du code VBA
1. Ouvrez l'éditeur VBE (Alt+F11).
2. Dans l'Explorateur de projets, double-cliquez sur le module qui contient votre macro
(généralement Module1).
Vous verrez le code VBA généré par l'enregistreur de macros. Il devrait ressembler à ceci :
Sub MiseEnGras()
Range("A1").Select
[Link] = True
End Sub
• Sub MiseEnGras() : Indique le début de la macro, son nom est "MiseEnGras".
• Range("A1").Select: Sélectionne la cellule A1.
• [Link] = True: Applique le style "gras" à la police de la sélection.
• End Sub : Indique la fin de la macro.
2.5. Exécution d'une macro
1. Depuis l'onglet "Développeur" : Cliquez sur Macros, sélectionnez votre macro et
cliquez sur Exécuter.
2. Depuis le VBE : Placez le curseur dans la macro et appuyez sur F5.
3. Avec un raccourci clavier si vous en avez défini un.
2.6. Modifier le code VBA
• Vous pouvez modifier directement le code VBA généré par l'enregistreur de macros.
• Par exemple, vous pouvez changer Range("A1") par Range("B2") pour que votre
macro modifie la cellule B2.
2.7. Exercice pratique
1. Activez l'onglet Développeur.
2. Enregistrez une macro qui effectue les opérations suivantes :
o Saisir le texte "Bonjour VBA" dans la cellule A1.
o Mettre la cellule A1 en gras.
o Appliquer une couleur de fond bleu clair à la cellule A1.
3. Arrêtez l'enregistrement.
4. Ouvrez l'éditeur VBE et analysez le code.
5. Modifiez le code VBA pour que :
o Le texte "Bonjour VBA" soit écrit en cellule C3.
o La cellule C3 soit en italique.
o La couleur de fond soit verte.
6. Exécutez la macro pour vérifier.
3. Ce qu'il faut retenir
• VBA est un langage de programmation pour automatiser les tâches dans Excel.
• Le VBE est l'environnement de développement VBA.
• L'enregistreur de macros est un outil utile pour générer du code VBA.
• Les macros sont des séquences d'instructions VBA qui effectuent des tâches.
Chapitre 2. Bases et Concepts
Fondamentaux du VBA
Bienvenue dans ce second chapitre, où nous allons explorer les bases et les concepts fondamentaux du
langage VBA. Vous apprendrez comment écrire du code VBA, en utilisant la syntaxe, les variables, les
types de données, les opérateurs, les structures de contrôle, les procédures et les fonctions. Ce chapitre
est essentiel pour comprendre comment construire des macros plus complexes et efficaces.
1. Syntaxe VBA
1.1. Qu'est-ce que la syntaxe ?
La syntaxe d'un langage de programmation est l'ensemble des règles qui régissent la façon
d'écrire des instructions. C'est un peu comme la grammaire d'une langue humaine. Il faut
respecter la syntaxe VBA pour que votre code soit compris et exécuté correctement par Excel.
1.2. Éléments de base de la syntaxe VBA
• Mots-clés (Keywords) : Ce sont des mots réservés qui ont une signification spéciale dans
le langage VBA (par exemple, Sub, Dim, If, For, End). Ils indiquent le type d'action à
effectuer.
• Instructions (Statements) : Ce sont des lignes de code qui effectuent une action précise
(par exemple, assigner une valeur à une variable, afficher un message, exécuter une
boucle). Une instruction est souvent composée de mots-clés, d'opérateurs, de variables,
etc.
• Commentaires : Ce sont des notes que vous pouvez ajouter dans votre code pour
expliquer ce qu'il fait. Les commentaires ne sont pas exécutés par VBA. Pour ajouter un
commentaire, vous utilisez une apostrophe (') en début de ligne. Il est vivement conseillé
d'ajouter des commentaires pour rendre votre code plus lisible et compréhensible, pour
vous-même et pour les autres.
• Indentation : L'indentation consiste à décaler le code vers la droite à l'intérieur des
structures de contrôle (boucles, conditions). Elle n'est pas obligatoire pour le
fonctionnement du code VBA, mais elle est fortement recommandée car elle permet de
rendre le code plus lisible et plus facile à comprendre. L'indentation peut se faire avec les
touches "Tab" (tabulation) ou avec la barre d'espacement.
1.3. Exemple simple de syntaxe VBA
Sub ExempleSyntaxe() ' Début d'une macro (commentaire)
Dim message As String ' Déclaration d'une variable (commentaire)
message = "Bonjour le monde VBA !" ' Affectation d'une valeur à la
variable (commentaire)
MsgBox message ' Affichage du message (commentaire)
End Sub ' Fin de la macro (commentaire)
Dans cet exemple, chaque ligne respecte la syntaxe VBA :
• Sub et End Sub sont des mots-clés.
• Dim est un mot-clé pour déclarer une variable.
• message = "Bonjour le monde VBA !" est une instruction.
• ' Début d'une macro est un commentaire.
2. Variables, Types de données et Constantes
2.1. Variables
Une variable est un espace de stockage nommé en mémoire qui contient des données (chiffres,
textes, etc.) qui peuvent changer pendant l'exécution du code.
2.2. Comment déclarer une variable
On utilise le mot-clé Dim (pour dimension) suivi du nom de la variable, du mot-clé As et du type
de données.
Dim nomVariable As TypeDeDonnées
Exemples :
Dim age As Integer
Dim nom As String
Dim estActif As Boolean
• Dim : Indique que l'on déclare une variable.
• nomVariable : Le nom que vous donnez à la variable (doit commencer par une lettre et
ne doit pas contenir d'espaces ou de caractères spéciaux).
• As TypeDeDonnées : Le type de données que la variable peut stocker.
o Exemples de types de données :
▪ Integer : Nombre entier.
▪ Long : Nombre entier plus grand.
▪ Single : Nombre décimal simple précision.
▪ Double : Nombre décimal double précision.
▪ String : Chaîne de caractères (texte).
▪ Boolean : Valeur booléenne (Vrai ou Faux).
▪ Variant : Peut stocker n'importe quel type de données (attention, moins
efficace en terme de performance).
• Static : Mot clé à la place de Dim pour créer une variable static, ce qui signifie que sa
valeur sera gardée en mémoire à chaque execution de la procédure dans laquelle elle est
définie.
2.3. Affectation d'une valeur à une variable
On utilise le signe égal (=) pour affecter une valeur à une variable :
age = 30
nom = "Jean Dupont"
estActif = True
2.4. Types de données
Chaque variable a un type de données qui spécifie le genre de données qu'elle peut contenir.
Choisir le bon type de données est important car cela influence l'espace mémoire utilisé et les
opérations que vous pouvez effectuer avec la variable.
• Integer : Nombres entiers (ex: -32768 à 32767).
• Long : Nombres entiers plus grands (ex: -2,147,483,648 à 2,147,483,647).
• Single et Double : Nombres décimaux (le Double a plus de précision que Single).
• String : Chaines de caractères (texte).
• Boolean : Valeurs booléennes (True ou False).
• Date : Date et heure.
• Variant : Peut contenir n'importe quel type de données, mais moins efficace en termes
de performance.
2.5. Déclaration implicite vs. explicite (Option Explicit)
• Déclaration implicite : Si vous n'utilisez pas Dim pour déclarer une variable, VBA va la
déclarer automatiquement comme étant de type Variant. Ce n'est pas recommandé car
cela peut conduire à des erreurs difficiles à détecter.
• Déclaration explicite : Utiliser le mot-clé Dim pour déclarer toutes les variables. C'est la
bonne pratique. Pour rendre cette pratique obligatoire dans tous vos modules, vous
pouvez ajouter la ligne Option Explicit en haut de chaque module.
2.6. Constantes
Une constante est une valeur nommée qui ne change pas pendant l'exécution du code. On utilise
le mot clé Const pour déclarer une constante.
Const TVA As Double = 0.20
Les constantes rendent le code plus lisible et plus facile à maintenir, car vous n'avez pas à vous
rappeler des valeurs spécifiques dans tout le code.
3. Opérateurs et Expressions
3.1. Opérateurs
Les opérateurs sont des symboles ou des mots-clés qui effectuent des opérations sur des
variables ou des valeurs.
3.1.1. Opérateurs arithmétiques
o + (addition)
o - (soustraction)
o * (multiplication)
o / (division)
o \ (division entière)
o Mod (reste de la division)
o ^ (puissance)
3.1.2. Opérateurs de comparaison
o = (égal à)
o <> (différent de)
o < (inférieur à)
o > (supérieur à)
o <= (inférieur ou égal à)
o >= (supérieur ou égal à)
3.1.3. Opérateurs logiques
o And (et)
o Or (ou)
o Not (non)
3.1.4. Opérateur de concaténation de chaînes de caractères
o & (concaténer des chaines de caractères)
3.2. Expressions
Une expression est une combinaison de variables, de valeurs et d'opérateurs qui produit une
valeur. Par exemple, age + 10 est une expression.
3.3. Ordre des opérations (priorité des opérateurs)
L'ordre des opérations est important. En VBA, il est similaire à celui utilisé en mathématiques :
1. Parenthèses
2. Puissance
3. Multiplication et Division
4. Addition et Soustraction
5. Opérations de comparaison
6. Opérations logiques
Vous pouvez utiliser des parenthèses pour modifier l'ordre par défaut.
3.4. Exemples d'opérations et d'expressions
Dim x As Integer
Dim y As Integer
Dim resultat As Integer
Dim texte As String
x = 10
y = 5
resultat = x + y ' Addition
resultat = x - y ' Soustraction
resultat = x * y ' Multiplication
resultat = x / y ' Division
resultat = x Mod y ' Reste de la division
resultat = x ^ 2 ' Puissance
texte = "Bonjour" & " " & "tout le monde" ' Concaténation
4. Structures de contrôle
Les structures de contrôle permettent de modifier le déroulement de l'exécution du code en
fonction de certaines conditions. Elles rendent vos macros intelligentes.
4.1. Instructions conditionnelles
• If...Then...End If :
If condition Then
' Code à exécuter si la condition est vraie
End If
• If...Then...Else...End If :
If condition Then
' Code à exécuter si la condition est vraie
Else
' Code à exécuter si la condition est fausse
End If
• If...Then...ElseIf...Else...End If :
If condition1 Then
' Code à exécuter si la condition1 est vraie
ElseIf condition2 Then
' Code à exécuter si la condition2 est vraie
Else
' Code à exécuter si aucune condition n'est vraie
End If
• Select Case :
Select Case expression
Case valeur1
' Code à exécuter si l'expression est égale à valeur1
Case valeur2
' Code à exécuter si l'expression est égale à valeur2
Case Else
' Code à exécuter si aucune valeur ne correspond
End Select
4.2. Boucles
Les boucles permettent d'exécuter un bloc de code plusieurs fois.
• For...Next : Permet de répéter un bloc de code un nombre spécifique de fois.
For compteur = début To fin [Step pas]
' Code à exécuter dans la boucle
Next compteur
• For Each...Next : Permet de parcourir une collection d'objets (par exemple, toutes les
feuilles d'un classeur).
For Each element In collection
' Code à exécuter pour chaque element
Next element
• Do While...Loop : Exécute un bloc de code tant qu'une condition est vraie.
Do While condition
' Code à exécuter tant que la condition est vraie
Loop
• Do Until...Loop : Exécute un bloc de code jusqu'à ce qu'une condition devienne
vraie.
Do Until condition
' Code à exécuter jusqu'à ce que la condition devienne vraie
Loop
4.3. Exemple d'utilisation des structures de contrôle
Sub ExempleStructuresControle()
Dim i As Integer
Dim valeur As Integer
' Boucle For
For i = 1 To 5
[Link] "i = " & i
Next i
' Structure If
valeur = 10
If valeur > 5 Then
[Link] "La valeur est supérieure à 5"
End If
' Boucle Do While
i = 1
Do While i <= 3
[Link] "i (do while)= " & i
i = i + 1
Loop
End Sub
5. Procédures et Fonctions
5.1. Procédures (Subroutines)
Une procédure est un bloc de code qui exécute une tâche spécifique. Elle est définie par le mot-
clé Sub et se termine par End Sub.
Sub NomDeLaProcedure()
' Code de la procédure
End Sub
Les procédures ne renvoient pas de valeur.
5.2. Fonctions
Une fonction est similaire à une procédure, mais elle retourne une valeur après son exécution. On
utilise le mot-clé Function et elle se termine par End Function.
Function NomDeLaFonction() As TypeDeDonnées
' Code de la fonction
NomDeLaFonction = valeurRetournée
End Function
Une fonction peut prendre des paramètres (arguments) en entrée.
5.3. Paramètres (arguments)
Les paramètres sont des valeurs que vous passez à une procédure ou une fonction. Ils sont définis
entre parenthèses après le nom de la procédure ou de la fonction.
Sub NomDeLaProcedure(paramètre1 As TypeDeDonnées, paramètre2 As
TypeDeDonnées)
' Code de la procedure
End Sub
Function NomDeLaFonction(paramètre1 As TypeDeDonnées, paramètre2 As
TypeDeDonnées) As TypeDeDonnées
' Code de la fonction
NomDeLaFonction = valeurRetournée
End Function
Il existe deux manières de passer des paramètres :
• ByVal (By Value) : La fonction reçoit une copie du paramètre. Si la valeur du paramètre
est modifiée dans la fonction, cela n'affectera pas la valeur de la variable originale.
• ByRef (By Reference) : La fonction reçoit une référence au paramètre, et la valeur du
paramètre peut être modifié dans la fonction. ByRef est le comportement par defaut si
aucun mot clef n'est spécifié.
Exemples :
' Procedure sans parametre
Sub AfficherMessage()
MsgBox "Bonjour !"
End Sub
' Procedure avec parametres
Sub AfficherSomme(ByVal a As Integer, ByVal b As Integer)
Dim somme As Integer
somme = a + b
MsgBox "La somme est " & somme
End Sub
' Fonction
Function CalculerAireRectangle(ByVal longueur As Double, ByVal largeur As
Double) As Double
CalculerAireRectangle = longueur * largeur
End Function
Pour utiliser ces procédures et fonctions :
Sub Test()
AfficherMessage
AfficherSomme 10, 20
Dim aire as Double
aire = CalculerAireRectangle(5, 10)
[Link] "Aire = " & aire
End Sub
6. Bonnes pratiques pour les noms et la structure
• Utiliser des noms clairs et descriptifs pour les variables, les procédures et les fonctions.
• Commenter votre code.
• Indenter votre code.
• Diviser votre code en petites procédures et fonctions pour le rendre plus facile à lire et à
maintenir.
• Utilisez des mots clés pertinents pour les variables (prefixe int pour
les Integer, str pour les String, etc.).
7. Exercices pratiques
1. Écrire une procédure qui affiche votre nom et votre âge dans une message box.
2. Écrire une fonction qui calcule la moyenne de trois nombres passés en paramètres.
3. Écrire une procédure qui affiche les nombres impairs de 1 à 20 dans la fenêtre exécution.
4. Écrire une procédure qui affiche tous les noms des feuilles d'un classeur dans la fenêtre
exécution.
5. Modifiez la fonction qui calcule l'aire du rectangle pour qu'elle utilise la passage des
paramètres par reference (byRef).
6. Créez une procédure avec une variable Static pour montrer son fonctionnement.
8. Ce qu'il faut retenir
• La syntaxe est l'ensemble des règles du langage VBA.
• Les variables stockent des données.
• Les types de données spécifient le type de données qu'une variable peut contenir.
• Les opérateurs permettent d'effectuer des opérations sur les données.
• Les structures de contrôle modifient le déroulement du code.
• Les procédures (Sub) et les fonctions (Function) sont des blocs de code qui effectuent des
tâches.
• Les procédures ne renvoient pas de valeur, alors que les fonctions le font.
• Les procédures et fonctions peuvent prendre des arguments passés par valeur ou
référence.
Chapitre 3. Travailler avec le Modele
Objet Excel
1. Introduction
Bienvenue dans ce troisième chapitre, où nous allons explorer le modèle objet d'Excel.
Comprendre ce modèle est essentiel pour pouvoir interagir avec les différents éléments d'Excel
via le code VBA : les classeurs, les feuilles de calcul, les cellules, les plages, etc. Ce chapitre vous
permettra de manipuler Excel de manière programmatique.
2. Comprendre le Modèle Objet Excel
2.1. Qu'est-ce qu'un modèle objet ?
Un modèle objet est une représentation organisée des éléments d'une application sous forme
d'objets, avec leurs propriétés et leurs méthodes. En VBA, le modèle objet d'Excel est une
hiérarchie d'objets (Application, Workbooks, Worksheets, Ranges, etc.) que vous pouvez
manipuler via du code.
Imaginez une arborescence, où chaque objet contient d'autres objets, comme des poupées
russes. Vous commencez par l'objet principal (l'Application Excel) et vous accédez ensuite aux
objets qui s'y trouvent, en suivant une hiérarchie bien définie.
2.2. La hiérarchie du modèle objet Excel
• Application : C'est l'objet racine, qui représente l'application Excel elle-même. Il
englobe tout : les classeurs, les options d'Excel, etc.
• Workbooks : C'est une collection d'objets Workbook, qui représentent les classeurs Excel
ouverts.
o Chaque Workbook est un classeur spécifique.
• Worksheets : C'est une collection d'objets Worksheet, qui représentent les feuilles de
calcul d'un classeur.
o Chaque Worksheet est une feuille de calcul spécifique.
• Ranges : C'est l'un des objets les plus importants. Un Range représente une cellule, une
plage de cellules, une ligne, une colonne, etc.
• Autres objets : Il existe de nombreux autres objets dans le modèle objet Excel (par
exemple, Cells, Rows, Columns, Chart, Shape, etc.),
mais Application, Workbooks, Worksheets et Ranges sont les objets que vous
utiliserez le plus souvent.
2.3. Comprendre les propriétés et les méthodes
• Propriétés : Ce sont des caractéristiques ou des attributs d'un objet. Par exemple, le nom
d'un classeur, la couleur d'une cellule, la valeur d'une cellule. Pour accéder à une
propriété, on utilise l'objet suivi d'un point (.) puis du nom de la propriété. Exemple
: Worksheets("Feuil1").Name ou Range("A1").Value.
• Méthodes : Ce sont des actions que vous pouvez effectuer sur un objet. Par exemple,
ouvrir un classeur, ajouter une feuille de calcul, sélectionner une cellule. Pour exécuter une
méthode, on utilise l'objet suivi d'un point (.) puis du nom de la méthode et de
parenthèses () à la fin. Exemple
[Link]("C:\[Link]") ou Worksheets("Feuil1").Select.
2.4. Accéder aux objets
Pour accéder à un objet, vous devez partir de l'objet racine (Application) et "descendre" dans
la hiérarchie en utilisant la notation pointée (.).
• Exemple
[Link]("Classeur1").Worksheets("Feuil1").Range("A1"
).Value
2.5. Remarques importantes
Vous pouvez omettre l'objet Application car il est sous-entendu dans de nombreux cas
(ex: Workbooks au lieu de [Link]).
La plupart des objets sont des collections. Vous pouvez accéder à un objet spécifique de la
collection en utilisant un index numérique (ex: Workbooks(1)) ou son nom
(ex: Workbooks("[Link]")).
3. Référencer des Cellules et des Plages
3.1. L'objet Range
L'objet Range est fondamental en VBA pour interagir avec les cellules et les plages d'Excel.
3.2. Différentes manières de référencer une cellule ou une plage
• Avec Range("Adresse") : Utilisez l'adresse de la cellule ou de la plage entre guillemets
(ex: Range("A1"), Range("A1:B5")).
• Avec Cells(ligne, colonne) : Utilisez l'index de ligne et de colonne (ex: Cells(1,
1), Cells(3, 2)). La ligne et la colonne sont des nombres.
• Avec une variable contenant l'adresse : Par exemple : dim adresse as
string, adresse = "A1", Range(adresse).
• Avec ActiveCell : La cellule actuellement sélectionnée dans Excel. Il faut éviter de trop
utiliser ActiveCell, car elle peut changer lors de l'exécution du code.
• Avec Rows(ligne) : Accède à la ligne entière (ex : Rows(1)).
• Avec Columns(colonne) : Accède à la colonne entière (ex : Columns("A")).
3.2.1. Exemples concrets
Sub ExemplesReferences()
' Avec Range("Adresse")
Range("A1").Value = "Bonjour"
Range("B1:C3").[Link] = True
' Avec Cells(ligne, colonne)
Cells(2, 1).Value = "Ligne 2, Colonne A"
Cells(5, 5).[Link] = RGB(255, 0, 0) ' Couleur rouge
'Avec ActiveCell
[Link] = "Cellule active"
' Avec Rows/Columns
Rows(1).[Link] = True
Columns("A").[Link] = 15
End Sub
3.3. Sélectionner vs. manipuler directement les cellules
• Sélectionner (Select) : Vous pouvez utiliser la méthode Select pour sélectionner une
cellule ou une plage. Cependant, ce n'est pas la manière la plus efficace, car il est
préférable de manipuler directement les cellules sans les sélectionner.
• Manipuler directement : Vous pouvez utiliser directement l'objet Range pour modifier
ses propriétés. C'est la méthode recommandée, car elle est plus rapide et plus efficace.
C'est une bonne pratique de toujours manipuler directement les objets.
Exemple :
' Mauvaise pratique (sélection) :
Range("A1").Select
[Link] = "Texte"
' Bonne pratique (manipulation directe) :
Range("A1").Value = "Texte"
Dans la seconde version, on manipule directement l'objet Range("A1") sans avoir besoin de le
sélectionner.
4. Manipuler les Classeurs et les Feuilles de calcul
4.1. L'objet Workbooks
L'objet Workbooks est une collection de tous les classeurs Excel ouverts.
4.1.1. Méthodes de l'objet Workbooks
• [Link] : Crée un nouveau classeur.
• [Link]("CheminDuFichier") : Ouvre un classeur existant.
• Workbooks("NomDuClasseur").Close : Ferme un classeur.
4.1.2. Propriétés de l'objet Workbook (classeur)
• [Link] : Le nom du classeur.
• [Link] : Le chemin complet du fichier.
• [Link] : Enregistre le classeur.
• [Link]("CheminDuFichier") : Enregistre le classeur sous un nouveau
nom.
4.2. L'objet Worksheets
L'objet Worksheets est une collection de toutes les feuilles de calcul d'un classeur.
4.2.1. Méthodes de l'objet Worksheets
• [Link] : Ajoute une nouvelle feuille de calcul.
• Worksheets("NomDeLaFeuille").Delete : Supprime une feuille de calcul.
4.2.2. Propriétés de l'objet Worksheet (feuille de calcul)
• [Link] : Le nom de la feuille de calcul.
• [Link] : Détermine si la feuille est visible ou non.
• [Link] Before:=Worksheets(1) : Copie la feuille avant une autre feuille
• [Link] Before:=Worksheets(1) : Déplace la feuille avant une autre
feuille
4.3. Exemples d'utilisation
Sub ExemplesClasseursEtFeuilles()
' Classeurs
[Link]
[Link] "C:\[Link]"
[Link] [Link]
[Link] "C:\[Link]"
' Feuilles
[Link]
[Link] = "NouvelleFeuille"
[Link] [Link]
Worksheets("Feuil1").Delete
End Sub
5. Lire et Écrire des Données
5.1. Récupérer les valeurs des cellules
Pour récupérer la valeur d'une cellule, on utilise la propriété Value de l'objet Range ou Cells.
Dim valeurCellule As Variant
valeurCellule = Range("A1").Value
valeurCellule = Cells(1, 1).Value
5.2. Définir les valeurs des cellules
Pour définir la valeur d'une cellule, on assigne une valeur à la propriété Value de
l'objet Range ou Cells.
Range("A1").Value = "Nouvelle Valeur"
Cells(1, 1).Value = 123
5.3. Parcourir les lignes et les colonnes (boucles)
Les boucles sont très utiles pour lire ou écrire des données dans des plages de cellules.
Sub ExempleParcours()
Dim ligne As Integer, colonne As Integer
Dim derLigne As Long
' Trouver la dernière ligne remplie de la colonne A
derLigne = Cells([Link], "A").End(xlUp).Row
' Boucle For pour parcourir les lignes
For ligne = 1 To derLigne
[Link] Cells(ligne, 1).Value
Next ligne
' Boucle For pour parcourir les colonnes
For colonne = 1 To 3
[Link] Cells(1, colonne).Value
Next colonne
'Double boucle pour parcourir une plage
For ligne = 1 to 5
For colonne = 1 to 5
[Link] "Cell(" & ligne & ", " & colonne & ")=" &
Cells(ligne, colonne).Value
Next colonne
Next ligne
End Sub
La boucle peut etre utilisée pour récuperer ou pour assigner une valeur aux cellules.
6. Exercices pratiques
1. Écrire une macro qui crée une nouvelle feuille nommée "Données" dans un nouveau
classeur.
2. Écrire une macro qui copie les valeurs de la plage "A1:B10" de la feuille "Feuil1" dans la
plage "C1:D10" de la feuille "Données".
3. Écrire une macro qui recherche la dernière ligne remplie de la colonne A de la feuille
"Feuil1" et affiche le contenu de la première cellule de cette dernière ligne dans une
message box.
4. Écrire une macro qui parcours la plage "A1:E10" et remplace la valeur de la cellule par 0 si
la valeur d'origine est superieur à 10.
5. Écrire une macro qui parcours la colonne "A" d'une feuille et affiche le nombre de cellules
non vides.
6. Écrire une macro qui affiche tous les noms des feuilles du classeur actif dans la fenêtre
exécution.
7. Écrire une macro qui créé une feuille pour chaque nom présent dans la plage "A1:A10"
7. Ce qu'il faut retenir
• Le modèle objet est une représentation hiérarchique des éléments d'Excel.
• L'objet Application est la racine du modèle objet.
• Les objets Workbooks, Worksheets et Ranges sont les objets les plus utilisés.
• Vous pouvez accéder aux propriétés des objets pour lire ou modifier leurs
caractéristiques.
• Vous pouvez exécuter les méthodes des objets pour réaliser des actions spécifiques.
• Il est préférable de manipuler directement les objets sans les sélectionner (pas
de Select).
Chapitre 4. Interaction Utilisateur et
Gestion des Erreurs
1. Introduction
Bienvenue dans ce chapitre, où nous allons apprendre comment rendre vos macros plus
interactives et robustes. Nous explorerons les outils pour interagir avec l'utilisateur (boîtes de
messages, boîtes de dialogue de saisie) et les techniques pour gérer les erreurs potentielles dans
votre code. Un bon code VBA doit non seulement effectuer des tâches efficacement, mais aussi
être facile à utiliser et gérer les imprévus.
2. 4.1 Interaction Utilisateur
2.1. L'importance de l'interaction utilisateur
L'interaction utilisateur est essentielle pour créer des macros qui ne sont pas seulement des
exécutions "silencieuses", mais qui communiquent avec l'utilisateur, lui donnent des informations,
et lui permettent de fournir des données pour le bon fonctionnement du programme.
2.2. MsgBox Afficher des messages
La fonction MsgBox permet d'afficher des messages à l'utilisateur. C'est une méthode simple et
rapide pour communiquer des informations, des alertes, ou des résultats.
2.2.1. Syntaxe de MsgBox
MsgBox message [, boutons] [, titre] [, aide] [, contexte]
• message : C'est le texte du message à afficher (obligatoire).
• boutons : Spécifie le type de boutons à afficher (optionnel).
o vbOKOnly (par défaut) : Affiche un seul bouton "OK".
o vbOKCancel : Affiche les boutons "OK" et "Annuler".
o vbAbortRetryIgnore : Affiche les boutons "Abandonner", "Réessayer",
"Ignorer".
o vbYesNoCancel : Affiche les boutons "Oui", "Non", "Annuler".
o vbYesNo : Affiche les boutons "Oui", "Non".
o vbRetryCancel : Affiche les boutons "Réessayer", "Annuler".
o Il existe aussi des icones
(vbCritical, vbQuestion, vbExclamation, vbInformation) qui peuvent
être combinées avec les boutons via l'operateur +. Exemple : vbOKCancel +
vbQuestion.
• titre : C'est le titre de la fenêtre du message (optionnel).
• aide : Chemin vers un fichier d'aide (optionnel).
• contexte : Numéro de contexte d'aide (optionnel).
2.2.2. Récupérer la réponse de l'utilisateur
Lorsque vous utilisez des boutons tels que "OK", "Annuler", "Oui" ou "Non", la
fonction MsgBox retourne une valeur qui vous indique quel bouton l'utilisateur a cliqué. Vous
pouvez utiliser une variable de type Integer pour récupérer cette valeur.
• vbOK : Le bouton "OK" a été cliqué.
• vbCancel : Le bouton "Annuler" a été cliqué.
• vbYes : Le bouton "Oui" a été cliqué.
• vbNo : Le bouton "Non" a été cliqué.
• vbAbort : Le bouton "Abandonner" a été cliqué.
• vbRetry : Le bouton "Réessayer" a été cliqué.
• vbIgnore : Le bouton "Ignorer" a été cliqué.
2.2.3. Exemples MsgBox
Sub ExemplesMsgBox()
' Message simple
MsgBox "Bonjour, bienvenue !"
' Message avec titre et bouton OK/Annuler
Dim reponse As Integer
reponse = MsgBox("Voulez-vous continuer ?", vbOKCancel + vbQuestion,
"Confirmation")
If reponse = vbOK Then
MsgBox "Vous avez cliqué sur OK."
Else
MsgBox "Vous avez cliqué sur Annuler."
End If
' Message avec icones
MsgBox "Une erreur s'est produite.", vbCritical, "Erreur"
MsgBox "Information importante", vbInformation, "Information"
End Sub
2.3. InputBox Demander une saisie à l'utilisateur
La fonction InputBox permet d'afficher une boîte de dialogue pour demander à l'utilisateur de
saisir une valeur (texte ou chiffre). La valeur saisie par l'utilisateur est renvoyée par la fonction et
peut être stockée dans une variable.
2.3.1. Syntaxe de InputBox
InputBox(message [, titre] [, valeurParDefaut] [, xpos] [, ypos] [,
aide] [, contexte])
• message : C'est le message à afficher dans la boîte de dialogue (obligatoire).
• titre : C'est le titre de la boîte de dialogue (optionnel).
• valeurParDefaut : C'est une valeur par défaut qui s'affiche dans la zone de saisie
(optionnel).
• xpos, ypos : Ce sont les coordonnées de la boîte de dialogue (optionnel).
• aide, contexte : Paramètres liés au système d'aide (optionnel).
2.3.2. Récupérer la saisie de l'utilisateur
La fonction InputBox retourne une valeur de type String contenant le texte saisi par
l'utilisateur. Vous pouvez stocker cette valeur dans une variable et éventuellement la convertir en
un autre type de données (par exemple, en Integer avec CInt() ou en Double avec CDbl())
si nécessaire.
Si l'utilisateur annule ou clique sur "Fermer" la boite de dialogue, InputBox retourne une chaine
vide ("")
2.3.3. Exemples InputBox
Sub ExemplesInputBox()
Dim nom As String
Dim age As Integer
' InputBox pour le nom
nom = InputBox("Entrez votre nom :", "Saisie du nom")
If nom <> "" Then
MsgBox "Bonjour " & nom & " !"
End If
' InputBox pour l'âge (avec conversion)
Dim ageString as String
ageString = InputBox("Entrez votre âge :", "Saisie de l'âge", "18")
If ageString <> "" Then
age = CInt(ageString)
If age > 0 Then
MsgBox "Vous avez " & age & " ans."
Else
MsgBox "Age invalide"
End If
End If
End Sub
On teste toujours la chaine retournée par Inputbox (qui est de type string) avant de la convertir
en un type numérique.
3. Gestion des Erreurs
3.1. Types d'erreurs
Il existe trois types d'erreurs que vous pouvez rencontrer en VBA :
• Erreurs de syntaxe : Ce sont des erreurs de programmation (faute de frappe, mot-clé mal
orthographié, etc.). Elles sont détectées par le VBE lors de la compilation (avant
l'exécution). Le VBE affiche une ligne de code rouge et une erreur.
• Erreurs d'exécution (runtime) : Ce sont des erreurs qui se produisent pendant
l'exécution du code (par exemple, division par zéro, ouverture d'un fichier inexistant,
référence à une cellule inexistante). Elles provoquent l'arrêt brutal de la macro.
• Erreurs de logique : Ce sont des erreurs dans la conception de l'algorithme (par exemple,
un mauvais calcul, une mauvaise condition, une boucle infinie). Elles ne provoquent pas
d'erreur à l'exécution, mais donnent des résultats incorrects. Elles sont plus difficiles à
détecter.
3.2. On Error GoTo Intercepter les erreurs d'exécution
L'instruction On Error GoTo permet d'intercepter les erreurs d'exécution et de rediriger
l'exécution du code vers un gestionnaire d'erreurs. Cela évite l'arrêt brutal de la macro et permet
de gérer les erreurs de manière plus contrôlée.
3.3. Syntaxe de On Error GoTo
On Error GoTo NomEtiquette
' Code pouvant provoquer des erreurs
Exit Sub
NomEtiquette:
' Code de gestion de l'erreur
Resume Next ' Reprendre à la ligne après l'erreur
'Ou Resume NomEtiquette2 ' Reprendre à l'étiquette NomEtiquette2
• On Error GoTo NomEtiquette : En cas d'erreur, le code est redirigé vers
l'étiquette NomEtiquette.
• Exit Sub : Il est important de mettre un Exit Sub (ou Exit Function si c'est une
fonction) avant la partie de gestion des erreurs. Sinon, le code du gestionnaire sera
toujours exécuté.
• NomEtiquette : L'étiquette est un nom qui indique l'endroit où le code est redirigé. Les
étiquettes sont des noms suivis d'un deux-points (:).
• Resume Next : Reprendre l'execution du code à la ligne apres l'erreur.
• Resume NomEtiquette2 : Reprendre l'execution du code à
l'étiquette NomEtiquette2
3.4. On Error Resume Next Ignorer les erreurs
L'instruction On Error Resume Next permet d'ignorer les erreurs d'exécution et de continuer
l'exécution du code à la ligne suivante. C'est une méthode plus simple, mais moins recommandée,
car elle peut masquer des erreurs importantes. À utiliser avec précaution. Il est recommandé de
desactiver On Error Resume Next en fin de procedure avec l'instruction On Error GoTo 0.
3.5. L'objet Err
L'objet Err donne des informations sur la dernière erreur qui s'est produite. Il a les propriétés
suivantes :
• [Link] : Le numéro de l'erreur.
• [Link] : La description de l'erreur.
3.6. Exemple de gestion d'erreurs
Sub ExempleGestionErreurs()
On Error GoTo GestionErreur ' Activer le gestionnaire d'erreur
Dim x As Integer, y As Integer, resultat As Double
x = 10
y = 0
resultat = x / y ' Division par zéro (erreur)
MsgBox "Le résultat est " & resultat ' Cette ligne ne sera pas exécutée
en cas d'erreur
Exit Sub
GestionErreur:
MsgBox "Une erreur s'est produite : " & [Link] & " - " &
[Link], vbCritical, "Erreur"
Resume Next
End Sub
4. Outils de débogage
4.1. L'importance du débogage
Le débogage est le processus d'identification et de correction des erreurs dans votre code. C'est
une étape essentielle du développement de macros VBA.
4.2. Points d'arrêt (Breakpoints)
Un point d'arrêt permet d'interrompre l'exécution du code à une ligne précise. Pour insérer un
point d'arrêt :
• Cliquez dans la marge grise à gauche de la ligne.
• Ou cliquez avec le bouton droit sur une ligne et choisissez "Basculer le point d'arrêt". Vous
pouvez aussi faire un click droit dans la ligne de code et cliquer sur Ajouter un
Espion... pour observer les valeurs des variables à l'endroit ou le programme va s'arreter.
Vous pouvez aussi faire un click droit dans la ligne de code et choisir Exécuter jusqu'au
curseur ou le raccourci Ctrl+F8 pour executer le programme jusqu'a cette ligne.
4.3. Exécution pas à pas
Une fois que l'exécution est interrompue par un point d'arrêt, vous pouvez exécuter le code pas à
pas (une ligne à la fois) en appuyant sur la touche F8. Cela vous permet de suivre le déroulement
de votre code et de voir comment les valeurs des variables évoluent.
• F8 : Exécuter la ligne de code suivante.
• Shift+F8 : Exécuter la ligne de code suivante sans entrer dans les procédures ou
fonctions.
• Ctrl+Shift+F8: Exécuter le code jusqu'au curseur.
4.4. La fenêtre Exécution (Immediate Window)
Vous pouvez utiliser la fenêtre exécution pour exécuter des lignes de code directes :
• Par exemple, ? maVariable affichera la valeur de la variable maVariable.
• Vous pouvez aussi faire des calculs directs : ? 10+20 affichera 30.
Vous pouvez aussi l'utiliser pour tester des instructions rapidement.
4.5. Les fenêtres Variables locales (Locals Window) et Espion (Watch
Window)
• La fenêtre Variables locales (menu Affichage->Variables Locales) affiche les
valeurs de toutes les variables qui sont en cours d'utilisation dans une procédure, ainsi
que leur type. Cette fenêtre est très pratique pour voir comment les variables évoluent
pendant le débogage.
• La fenêtre Espion (menu Affichage->Espion) permet de suivre la valeur d'une
expression (variables, proprietes, resultats d'une fonction). Vous pouvez ajouter des
espions sur des variables spécifiques et les voir évoluer au fur et à mesure que vous
avancez pas à pas dans l'execution du programme. Vous pouvez aussi utiliser le click droit
"Ajouter un espion" vu plus haut.
4.6. Exemple d'utilisation du débogueur
Insérez des points d'arrêt dans votre code, exécutez pas à pas et observez les valeurs des
variables dans les fenêtres Variables locales ou Espion.
4.7. Exercices pratiques
1. Écrire une macro qui demande le nom et l'âge de l'utilisateur et affiche un message de
salutation.
2. Écrire une macro qui demande un nombre à l'utilisateur et affiche son carré. Gérer les
erreurs si l'utilisateur ne saisit pas un nombre.
3. Écrire une macro qui ouvre un fichier Excel spécifié par l'utilisateur. Mettre en place une
gestion des erreurs si le fichier n'existe pas.
4. Écrire une macro qui demande à l'utilisateur de saisir un numéro de ligne. La macro doit
ensuite selectionner cette ligne. Si le numero n'est pas valide, le code doit afficher un
message d'erreur.
5. Ecrire une macro qui demande une valeur de départ et une valeur d'arrivée et qui affiche
tous les nombre entre ces valeurs dans la fenetre execution (en utilisant une boucle).
Mettez en place un gestionnaire d'erreur en cas de saisie incorrecte.
6. Mettez en place une gestion d'erreur dans l'exercice de la boucle précédente, et utilisez
les différentes fonctionnalités du débogueur pour comprendre et corriger vos erreurs.
5. Ce qu'il faut retenir
• MsgBox permet d'afficher des messages.
• InputBox permet de demander une saisie à l'utilisateur.
• On Error GoTo permet d'intercepter et de gérer les erreurs.
• On Error Resume Next permet d'ignorer les erreurs (avec précaution).
• Le débogueur et la fenêtre exécution sont des outils utiles pour identifier et corriger les
erreurs.
• Les points d'arrêt, l'exécution pas à pas et les fenêtres de visualisation des variables sont
essentiels pour le débogage.
Chapitre 5. Applications de VBA en
Finance
En cours de développement