Visual Basic pour Application (VBA) est un langage de programmation qui vous permet d’étendre les fonctionnalités d’Excel et d’automatiser des tâches répétitives. Avec VBA, vous pouvez créer des macros, des formulaires, des fonctions personnalisées et des applications interactives. Dans cet article, vous allez apprendre les bases de VBA dans Excel et comment l’utiliser pour réaliser des opérations simples ou complexes.
Comment accéder à VBA dans Excel ?
Pour accéder à VBA dans Excel, vous devez activer l’onglet Développeur dans le ruban. Pour cela, suivez ces étapes :
- Cliquez sur le bouton Fichier puis sur Options.
- Dans la fenêtre Options Excel, cliquez sur Personnaliser le ruban.
- Dans la liste des onglets principaux, cochez la case Développeur puis cliquez sur OK.
Vous verrez alors apparaître l’onglet Développeur dans le ruban. Cet onglet contient plusieurs outils liés à VBA, comme le bouton Visual Basic, le bouton Enregistrer une macro ou le bouton Insérer un contrôle.
Le bouton Visual Basic ouvre l’éditeur Visual Basic (VBE), dans lequel vous créez et modifiez le code VBA. Le bouton Enregistrer une macro génère automatiquement un code VBA reproduisant les actions que vous exécutez dans l’application. Le bouton Insérer un contrôle vous permet d’ajouter des éléments interactifs à votre feuille de calcul, comme des boutons, des cases à cocher ou des listes déroulantes.
Comment écrire du code VBA dans Excel ?
Pour écrire du code VBA dans Excel, vous devez utiliser l’éditeur Visual Basic (VBE). Pour l’ouvrir, cliquez sur le bouton Visual Basic dans l’onglet Développeur du ruban.
Le VBE se compose de plusieurs fenêtres :
- La fenêtre Projet affiche la structure hiérarchique des objets contenant du code VBA. Par exemple, si vous avez un classeur nommé MonClasseur.xlsm avec deux feuilles nommées Feuil1 et Feuil2, vous verrez apparaître sous MonClasseur.xlsm les objets Feuil1 et Feuil2 ainsi qu’un objet nommé ThisWorkbook.
- La fenêtre Propriétés affiche les propriétés de l’objet sélectionné dans la fenêtre Projet. Par exemple, si vous sélectionnez l’objet Feuil1, vous verrez ses propriétés comme son nom (Name), sa couleur (Tab.Color), son code (CodeName), etc.
- La fenêtre Code affiche le code VBA associé à l’objet sélectionné dans la fenêtre Projet. Par exemple, si vous sélectionnez l’objet Feuil1, vous verrez le code VBA qui s’exécute lorsque vous interagissez avec la feuille de calcul Feuil1.
- La fenêtre Exécution affiche les résultats du code VBA ou les messages d’erreur. Par exemple, si vous utilisez la fonction MsgBox pour afficher un message à l’utilisateur, vous verrez le message apparaître dans la fenêtre Exécution.
Pour écrire du code VBA, vous devez respecter certaines règles de syntaxe :
- Chaque instruction doit se terminer par un saut de ligne ou par le caractère deux-points (:).
- Les mots clés du langage VBA doivent être écrits en majuscules ou en minuscules, mais pas les noms des objets, des propriétés ou des méthodes, qui sont sensibles à la casse.
- Les commentaires doivent être précédés du caractère apostrophe (‘) ou de Rem et doivent être écrits sur une ligne séparée ou après une instruction.
- Les chaînes de caractères doivent être entourées de guillemets doubles (“).
- Les opérateurs arithmétiques sont +, -, *, / et ^ (puissance).
- Les opérateurs logiques sont And, Or, Not, Xor et Eqv.
- Les opérateurs de comparaison sont =, <>, <, <=, > et >=.
- Les constantes prédéfinies sont True, False, Null, Empty, Nothing et vbNullString.
Voici un exemple de code VBA qui affiche un message à l’utilisateur :
Sub Bonjour()
' Ceci est un commentaire
MsgBox "Bonjour, je suis Bing !" ' Affiche un message
End Sub
Comment utiliser les fonctions de feuille de calcul Excel dans VBA ?
Vous pouvez utiliser la plupart des fonctions de feuille de calcul Excel dans vos instructions VBA. Pour cela, vous devez utiliser la syntaxe suivante :
Application.WorksheetFunction.NomDeLaFonction(argument1, argument2, ...)
Par exemple, si vous voulez utiliser la fonction SOMME pour calculer la somme des valeurs de la plage A1:A10, vous pouvez écrire :
Sub Somme()
Dim resultat As Double ' Déclare une variable de type Double
resultat = Application.WorksheetFunction.Sum(Range("A1:A10")) ' Affecte à la variable le résultat de la fonction SOMME
MsgBox resultat ' Affiche le résultat
End Sub
Vous pouvez également utiliser des fonctions personnalisées que vous créez vous-même en VBA. Pour cela, vous devez utiliser la syntaxe suivante :
Function NomDeLaFonction(argument1 As Type1, argument2 As Type2, ...) As TypeRetour
' Déclarations et instructions
NomDeLaFonction = expression ' Affecte à la fonction le résultat à renvoyer
End Function
Par exemple, si vous voulez créer une fonction qui calcule le carré d’un nombre, vous pouvez écrire :
Function Carre(nombre As Double) As Double ' Déclare une fonction qui prend un nombre en argument et renvoie un nombre
Carre = nombre * nombre ' Affecte à la fonction le carré du nombre
End Function
Vous pouvez ensuite utiliser cette fonction dans vos instructions VBA ou dans vos formules Excel. Par exemple :
Sub Test()
Dim x As Double ' Déclare une variable de type Double
x = 5 ' Affecte à la variable la valeur 5
MsgBox Carre(x) ' Affiche le carré de x
End Sub
Comment créer des macros dans Excel ?
Une macro est un ensemble d’instructions VBA qui s’exécute en une seule fois. Vous pouvez créer des macros pour automatiser des tâches récurrentes ou complexes dans Excel. Il existe deux façons de créer des macros : en les enregistrant ou en les écrivant.
Enregistrer une macro
L’enregistrement d’une macro consiste à utiliser le bouton Enregistrer une macro dans l’onglet Développeur du ruban pour capturer les actions que vous effectuez dans Excel et les convertir en code VBA. C’est la méthode la plus simple et la plus rapide pour créer une macro, mais elle peut produire du code peu optimisé ou redondant.
Pour enregistrer une macro, suivez ces étapes :
- Cliquez sur le bouton Enregistrer une macro dans l’onglet Développeur du ruban.
- Dans la boîte de dialogue Enregistrer une macro, donnez un nom à votre macro, choisissez un raccourci clavier si vous le souhaitez, sélectionnez un emplacement où stocker votre macro (classeur actif, nouveau classeur ou classeur personnel) et écrivez une description si vous le souhaitez.
- Cliquez sur OK pour commencer l’enregistrement.
- Effectuez les actions que vous voulez automatiser dans Excel. Par exemple, si vous voulez créer une macro qui met en forme un tableau, sélectionnez le tableau, appliquez-lui un style, triez-le par ordre alphabétique, etc.
- Cliquez sur le bouton Arrêter l’enregistrement dans l’onglet Développeur du ruban pour terminer l’enregistrement.
Vous pouvez ensuite exécuter votre macro en utilisant le raccourci clavier que vous avez choisi, en cliquant sur le bouton Macros dans l’onglet Développeur du ruban ou en utilisant le bouton Exécuter dans le VBE.
Écrire une macro
Écrire une macro consiste à utiliser le VBE pour taper directement le code VBA qui correspond aux actions que vous voulez automatiser. C’est la méthode la plus flexible et la plus puissante pour créer une macro, mais elle nécessite des connaissances en programmation.
Pour écrire une macro, suivez ces étapes :
- Ouvrez le VBE en cliquant sur le bouton Visual Basic dans l’onglet Développeur du ruban.
- Dans la fenêtre Projet, sélectionnez l’objet où vous voulez stocker votre macro (classeur actif, nouveau classeur ou classeur personnel).
- Dans la fenêtre Code, tapez le code VBA qui correspond aux actions que vous voulez automatiser. Par exemple, si vous voulez créer une macro qui met en forme un tableau, tapez le code suivant :
Sub FormaterTableau()
' Sélectionne le tableau
Range("A1:D10").Select
' Applique un style au tableau
Selection.Style = "Tableau 1"
' Trie le tableau par ordre alphabétique selon la colonne A
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A2:A10") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:D10")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Vous pouvez ensuite exécuter votre macro en utilisant le bouton Exécuter dans le VBE ou en lui attribuant un raccourci clavier ou un contrôle.
FAQ
Voici quelques questions fréquentes sur l’utilisation de VBA dans Excel :
Qu’est-ce que VBA et pourquoi l’utiliser ?
VBA est la version de Visual Basic livrée avec Microsoft Office. C’est un langage de programmation orienté objet qui utilise une syntaxe proche du langage naturel. VBA vous permet d’accéder aux objets, propriétés et méthodes d’Excel et de les manipuler à l’aide de code. Vous pouvez ainsi contrôler Excel de manière plus fine et plus puissante que par l’interface graphique.
L’utilisation de VBA présente plusieurs avantages :
- Vous pouvez automatiser des tâches répétitives ou fastidieuses, comme le nettoyage de données, la mise en forme de tableaux, la création de graphiques, etc.
- Vous pouvez personnaliser Excel selon vos besoins spécifiques, en ajoutant des fonctionnalités qui n’existent pas dans le logiciel ou en modifiant son comportement.
- Vous pouvez interagir avec l’utilisateur à l’aide de boîtes de dialogue, de formulaires ou de messages personnalisés.
- Vous pouvez intégrer Excel avec d’autres applications Office ou des sources de données externes, comme Outlook, Word, Access, SQL Server, etc.
Comment déboguer du code VBA dans Excel ?
Pour déboguer du code VBA dans Excel, vous pouvez utiliser les outils du VBE, comme les points d’arrêt, le pas à pas, la fenêtre Espion ou la fenêtre Locales. Ces outils vous permettent de contrôler l’exécution du code, de vérifier les valeurs des variables et de repérer les erreurs.
Comment protéger du code VBA dans Excel ?
Pour protéger du code VBA dans Excel, vous pouvez verrouiller le projet VBA avec un mot de passe. Pour cela, suivez ces étapes :
- Ouvrez le VBE en cliquant sur le bouton Visual Basic dans l’onglet Développeur du ruban.
- Dans la fenêtre Projet, faites un clic droit sur le nom du projet VBA et choisissez Propriétés du projet VBA.
- Dans la boîte de dialogue Propriétés du projet VBA, cliquez sur l’onglet Protection.
- Cochez la case Verrouiller le projet pour l’affichage et tapez un mot de passe puis confirmez-le.
- Cliquez sur OK pour fermer la boîte de dialogue.
- Enregistrez et fermez le classeur.
Comment exécuter une macro à l’ouverture ou à la fermeture d’un classeur ?
Pour exécuter une macro à l’ouverture ou à la fermeture d’un classeur, vous devez utiliser les événements Workbook_Open ou Workbook_BeforeClose. Pour cela, suivez ces étapes :
- Ouvrez le VBE en cliquant sur le bouton Visual Basic dans l’onglet Développeur du ruban.
- Dans la fenêtre Projet, sélectionnez l’objet ThisWorkbook sous le nom du classeur.
- Dans la fenêtre Code, choisissez Workbook dans la liste déroulante Objet en haut à gauche.
- Choisissez Open ou BeforeClose dans la liste déroulante Procédure en haut à droite.
- Tapez le code VBA qui appelle la macro que vous voulez exécuter. Par exemple :
Private Sub Workbook_Open()
' Exécute la macro Bonjour à l'ouverture du classeur
Bonjour
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Exécute la macro AuRevoir à la fermeture du classeur
AuRevoir
End Sub
Comment créer un formulaire dans Excel avec VBA ?
Pour créer un formulaire dans Excel avec VBA, vous devez utiliser le concepteur de formulaires du VBE. Pour cela, suivez ces étapes :
- Ouvrez le VBE en cliquant sur le bouton Visual Basic dans l’onglet Développeur du ruban.
- Dans la fenêtre Projet, faites un clic droit sur le nom du projet VBA et choisissez Insérer puis UserForm.
- Une nouvelle fenêtre UserForm s’ouvre. Vous pouvez y ajouter des contrôles comme des étiquettes, des zones de texte, des boutons, etc. en les glissant depuis la boîte à outils.
- Vous pouvez modifier les propriétés des contrôles dans la fenêtre Propriétés ou écrire du code VBA pour gérer leurs événements dans la fenêtre Code.
- Pour afficher le formulaire, vous pouvez utiliser la méthode Show. Par exemple :
Sub AfficherFormulaire()
' Affiche le formulaire UserForm1
UserForm1.Show
End Sub
Comment créer une fonction personnalisée dans Excel avec VBA ?
Pour créer une fonction personnalisée dans Excel avec VBA, vous devez utiliser la syntaxe suivante :
Function NomDeLaFonction(argument1 As Type1, argument2 As Type2, ...) As TypeRetour
' Déclarations et instructions
NomDeLaFonction = expression ' Affecte à la fonction le résultat à renvoyer
End Function
Par exemple, si vous voulez créer une fonction qui calcule le carré d’un nombre, vous pouvez écrire :
Function Carre(nombre As Double) As Double ' Déclare une fonction qui prend un nombre en argument et renvoie un nombre
Carre = nombre * nombre ' Affecte à la fonction le carré du nombre
End Function
Vous pouvez ensuite utiliser cette fonction dans vos instructions VBA ou dans vos formules Excel. Par exemple :
Sub Test()
Dim x As Double ' Déclare une variable de type Double
x = 5 ' Affecte à la variable la valeur 5
MsgBox Carre(x) ' Affiche le carré de x
End Sub
Vous pouvez également utiliser des fonctions personnalisées que vous créez vous-même en VBA. Pour cela, vous devez utiliser la syntaxe suivante :
Function NomDeLaFonction(argument1 As Type1, argument2 As Type2, ...) As TypeRetour
' Déclarations et instructions
NomDeLaFonction = expression ' Affecte à la fonction le résultat à renvoyer
End Function
Par exemple, si vous voulez créer une fonction qui calcule le carré d’un nombre, vous pouvez écrire :
Function Carre(nombre As Double) As Double ' Déclare une fonction qui prend un nombre en argument et renvoie un nombre
Carre = nombre * nombre ' Affecte à la fonction le carré du nombre
End Function
Vous pouvez ensuite utiliser cette fonction dans vos instructions VBA ou dans vos formules Excel. Par exemple :
Sub Test()
Dim x As Double ' Déclare une variable de type Double
x = 5 ' Affecte à la variable la valeur 5
MsgBox Carre(x) ' Affiche le carré de x
End Sub
ou
=Carre(A1) ' Calcule le carré de la valeur de la cellule A1
Conclusion
Vous avez appris dans cet article comment utiliser Visual Basic pour Application (VBA) dans Excel. Vous avez vu ce qu’est VBA et pourquoi l’utiliser, comment accéder à VBA dans Excel, comment écrire du code VBA dans Excel, comment utiliser les fonctions de feuille de calcul Excel dans VBA, comment créer des macros dans Excel avec VBA, comment créer des formulaires dans Excel avec VBA et comment créer des fonctions personnalisées dans Excel avec VBA. Parmi les fonctions personnalisées que vous pouvez créer avec VBA, il y a celle de faire une soustraction dans Excel. Vous pouvez maintenant exploiter la puissance de programmation de VBA pour personnaliser et automatiser Excel selon vos besoins.