4 - Formation VBA — coder et automatiser avec VBA !

Dans cette dernière partie de notre formation VBA Excel, on va apprendre à coder et automatiser avec VBA ! Le but de cette leçon est d'optimiser vos fichiers et éviter les manipulations fastidieuses. Nous allons voir ensemble comment structurer un formulaire, enregistrer automatiquement des données et optimiser votre code pour le rendre encore plus lisible et efficace.

Vous passez trop de temps à copier-coller des données, mettre à jour des fichiers manuellement ou recréer les mêmes rapports chaque mois ? VBA (Visual Basic for Applications) est la clé pour automatiser vos tâches répétitives dans Excel et gagner des heures de travail chaque semaine.

Au programme de ce dernier module :

En route pour le niveau expert ? Avec notre formation Excel VBA individualisée, apprenez efficacement, à votre rythme.

Vidéo 4 :  Formation VBA — coder et automatiser avec VBA !

Préparer son environnement VBA pour automatiser ses tâches

Avant de plonger dans le code, il est essentiel de bien configurer votre environnement VBA. Un bon départ évite 80 % des erreurs courantes et vous permet de coder plus efficacement.

Accéder à l’éditeur VBA et activer les outils essentiels

  1. Ouvrir l’éditeur VBA :
    • Dans Excel, appuyez sur ALT + F11 pour ouvrir l’éditeur VBA.
    • Si l’onglet Développeur n’est pas visible, activez-le via :
      Fichier > Options > Personnaliser le ruban > Cochez "Développeur".
  2. Insérer un module ou un formulaire :
    • Module : Faites un clic droit sur "VBAProject" > Insérer > Module.
    • Formulaire (UserForm) : Cliquez sur Insertion > UserForm.
  3. Activer les outils de débogage :
    • Dans l’éditeur VBA, allez dans Outils > Options et cochez :
      "Arrêter sur les erreurs non gérées" (pour identifier les bugs).
      "Exiger la déclaration des variables" (ajoute Option Explicit automatiquement).

Comprendre les propriétés essentielles en VBA

Lorsque vous insérez des boutons, des champs de texte ou des listes déroulantes dans un formulaire, deux propriétés clés doivent être comprises :

  • Name : Identifie l’élément dans le code (exemple : Cmd_Valider).
  • Caption : Définit le texte visible à l’écran (exemple : "Valider").

Exemple :
Si vous avez un bouton nommé Cmd_Valider, vous pouvez modifier son intitulé sans changer son rôle dans le code :

Cmd_Valider.Caption = "Envoyer"

Mais si vous changez son Name, vous devrez aussi modifier le code qui l’utilise !

Bonne pratique : Renommez toujours vos objets avec des noms clairs (Txt_Nom, Cmb_Service, etc.), pour éviter les confusions lorsque vous écrivez vos macros.

Maintenant que votre environnement est en place, passons à la pratique ! Nous allons voir comment créer un formulaire VBA et structurer vos automatisations.

Créer un formulaire VBA pour structurer ses automatisations

Automatiser Excel avec VBA commence souvent par la création d’un formulaire interactif (UserForm). Un formulaire bien conçu permet d’optimiser la saisie des données et d’éviter les erreurs. Voyons comment en créer un et le configurer efficacement.

1. Insérer un formulaire dans l’éditeur VBA

  1. Ouvrir l’éditeur VBA avec ALT + F11.
  2. Dans le menu, cliquez sur Insertion > UserForm.
  3. Une fenêtre vide apparaît : c’est votre formulaire.

Astuce : Renommez immédiatement votre formulaire pour éviter la confusion. Dans la fenêtre Propriétés, modifiez le champ Name (exemple : Frm_Saisie).


2. Ajouter et configurer les éléments du formulaire

Un formulaire VBA se compose d’éléments interactifs :

  • TextBox : zones de texte pour la saisie (ex. Txt_Nom).
  • ComboBox : listes déroulantes (ex. Cmb_Service).
  • CommandButton : boutons d’action (Cmd_Valider, Cmd_Fermer).
  • Label : étiquettes pour guider l’utilisateur (Lbl_Titre).

Exemple concret : Créons un formulaire permettant de saisir un nom et de sélectionner un service.

  1. Ajoutez un Label (Lbl_Nom) et une TextBox (Txt_Nom).
  2. Ajoutez un Label (Lbl_Service) et une ComboBox (Cmb_Service).
  3. Ajoutez un bouton de validation (Cmd_Valider).

Bonne pratique :
Renommez chaque élément dans l’onglet Propriétés pour faciliter l’automatisation.


3. Lier le bouton à l’ouverture du formulaire

Pour afficher le formulaire avec un simple bouton dans Excel :

  1. Dans une feuille Excel, insérez un bouton (Développeur > Insérer > Bouton).
  2. Ajoutez ce code VBA dans un module :
Sub Ouvrir_Formulaire()
    Frm_Saisie.Show
End Sub

Testez : Cliquez sur le bouton dans Excel, et votre formulaire s’ouvre instantanément !

Votre formulaire est prêt, mais pour être vraiment efficace, il doit s’adapter dynamiquement.
Dans la prochaine section, nous verrons comment remplir automatiquement une liste déroulante en VBA !

Alimenter automatiquement une liste déroulante en VBA

Une ComboBox permet à l’utilisateur de choisir une valeur parmi une liste pré-définie. Pour éviter d’avoir à la mettre à jour manuellement, nous allons voir deux méthodes pour l’alimenter dynamiquement.

1. Méthode 1 : Ajouter des valeurs directement dans le code VBA

Si la liste des options est fixe (exemple : services d’une entreprise), vous pouvez l’intégrer directement dans le code VBA.

Ajoutez ce code dans l’événement d’initialisation du formulaire :

Private Sub UserForm_Initialize()
   Cmb_Service.List = Array("RH", "Finance", "IT", "Marketing", "Production")
End Sub

Explication : À chaque ouverture du formulaire (UserForm_Initialize), la ComboBox est remplie avec ces cinq services.

Limite : Si de nouveaux services sont ajoutés, vous devrez modifier le code VBA.

2. Méthode 2 : Remplir une ComboBox depuis une feuille Excel

Si les options doivent évoluer dans le temps (ex. : une liste de clients), il est préférable de récupérer directement les données d’une feuille Excel.

Ajoutez ce code dans l’événement d’initialisation du formulaire :

Private Sub UserForm_Initialize()
   Dim DerniereLigne As Integer
   DerniereLigne = Sheets("Données").Cells(Rows.Count, 1).End(xlUp).Row
   Cmb_Service.RowSource = "Données!A2:A" & DerniereLigne
End Sub

Explication :

  • La variable DerniereLigne repère la dernière ligne non vide de la colonne A de la feuille "Données".
  • La ComboBox est remplie avec les valeurs de A2:A(DerniereLigne).

Avantage : La liste se mettra automatiquement à jour si vous ajoutez ou supprimez des valeurs dans la feuille Excel !

3. Quelle méthode choisir ?

MéthodeIdéale pourMaintenance
Code VBA (Array)Liste stable et peu évolutiveManuelle : nécessite une mise à jour du code
Feuille Excel (RowSource)Liste dynamique qui évolue régulièrementAutomatique : la liste s’adapte aux nouvelles données

Astuce : Pour une liste plus propre, filtrez les cellules vides avant d’afficher les valeurs.

Votre formulaire est maintenant interactif ! Passons à l’étape suivante :
👉 Créer un bouton de validation pour enregistrer les données.

Créer un bouton de validation pour enregistrer les données

Maintenant que notre formulaire est fonctionnel, nous allons ajouter une fonctionnalité essentielle : enregistrer les données saisies dans une feuille Excel. L’objectif est d’envoyer chaque nouvelle entrée dans le tableau, sans écraser les anciennes.

1. Insérer un bouton et coder son événement Click

Dans l’éditeur VBA :

  1. Sélectionnez votre formulaire.
  2. Ajoutez un bouton de validation (Cmd_Valider).
  3. Ouvrez l’éditeur VBA et double-cliquez sur le bouton.

Cela génère automatiquement une procédure Private Sub Cmd_Valider_Click().

2. Trouver la première ligne vide pour insérer les données

Dans le code du bouton, nous devons repérer la première ligne vide du tableau pour ne pas écraser les anciennes entrées.

Ajoutez ce code dans Cmd_Valider_Click :

Private Sub Cmd_Valider_Click()
   Dim DerniereLigne As Integer
   DerniereLigne = Sheets("Données").Cells(Rows.Count, 1).End(xlUp).Row + 1

Explication :

  • On compte les lignes utilisées dans la colonne A (Rows.Count, 1).
  • On utilise .End(xlUp).Row pour remonter jusqu'à la dernière cellule remplie.
  • +1 permet de sélectionner la première ligne vide sous la dernière donnée.

3. Insérer les valeurs du formulaire dans le tableau

Nous allons maintenant transférer les données du formulaire vers Excel :

With Sheets("Données")
    .Cells(DerniereLigne, 1).Value = Txt_Nom.Value   ' Colonne A : Nom
    .Cells(DerniereLigne, 2).Value = Cmb_Service.Value  ' Colonne B : Service
    .Cells(DerniereLigne, 3).Value = Date  ' Colonne C : Date du jour
    .Cells(DerniereLigne, 4).Value = Now  ' Colonne D : Date + heure
End With

Ce que fait le code :

  • Colonne A → Enregistre le nom.
  • Colonne B → Stocke la sélection de la ComboBox.
  • Colonne C → Insère la date du jour (Date).
  • Colonne D → Insère la date et l’heure actuelles (Now).

4. Nettoyer le formulaire après validation

Une fois les données enregistrées, vidons le formulaire pour permettre une nouvelle saisie :

    Txt_Nom.Value = ""
    Cmb_Service.Value = ""
End Sub

Alternative : Fermer le formulaire après validation
Si vous souhaitez que le formulaire se ferme après validation, ajoutez cette ligne à la fin :

    Unload Me

Astuce :
Si vous voulez afficher un message de confirmation, ajoutez ceci avant End Sub :

    MsgBox "Données enregistrées avec succès !", vbInformation, "Validation"

5.Testez votre formulaire VBA !

  1. Ouvrez votre formulaire (Frm_Saisie.Show).
  2. Saisissez un nom et sélectionnez un service.
  3. Cliquez sur "Valider".
  4. Vérifiez que les données s’ajoutent bien dans votre feuille Excel !

Votre formulaire est fonctionnel, mais nous pouvons encore l’améliorer ! 🚀
Dans la prochaine section, nous allons voir comment optimiser votre code VBA pour gagner en clarté et en maintenance.

Optimiser son code VBA pour gagner en clarté et en maintenance

Un bon code VBA ne se limite pas à faire le travail. Il doit être lisible, modifiable et évolutif. En suivant ces bonnes pratiques, vous éviterez des heures de débogage et faciliterez vos futures mises à jour.

1. Nommer clairement les objets et variables

Un code compréhensible est un code structuré. Évitez les noms génériques comme TextBox1 ou CommandButton2, et utilisez des noms explicites.

Exemples de bonnes pratiques :

Mauvais NomMeilleur Nom
TextBox1Txt_Nom
CommandButton1Cmd_Valider
UserForm1Frm_Saisie
Module1Mod_Enregistrement

Pourquoi ?
Ces noms permettent de comprendre instantanément la fonction d’un objet sans avoir à analyser tout le code.

2. Structurer le code avec des commentaires et une indentation claire

Un code bien organisé est plus facile à lire et à modifier.

Mauvais exemple (code non structuré) :

Private Sub Cmd_Valider_Click()
Dim DL As Integer
DL = Sheets("Données").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("Données").Cells(DL, 1).Value = Txt_Nom.Value
Sheets("Données").Cells(DL, 2).Value = Cmb_Service.Value
Sheets("Données").Cells(DL, 3).Value = Date
Sheets("Données").Cells(DL, 4).Value = Now
Txt_Nom.Value = ""
Cmb_Service.Value = ""
End Sub

Bon exemple (code structuré et commenté) :

Private Sub Cmd_Valider_Click()
    ' Trouver la première ligne vide dans la feuille "Données"
    Dim DerniereLigne As Integer
    DerniereLigne = Sheets("Données").Cells(Rows.Count, 1).End(xlUp).Row + 1

    ' Insérer les données du formulaire dans le tableau
    With Sheets("Données")
        .Cells(DerniereLigne, 1).Value = Txt_Nom.Value  ' Colonne A : Nom
        .Cells(DerniereLigne, 2).Value = Cmb_Service.Value  ' Colonne B : Service
        .Cells(DerniereLigne, 3).Value = Date  ' Colonne C : Date du jour
        .Cells(DerniereLigne, 4).Value = Now  ' Colonne D : Date + heure
    End With

    ' Réinitialiser les champs du formulaire après validation
    Txt_Nom.Value = ""
    Cmb_Service.Value = ""

    ' Confirmer l’enregistrement
    MsgBox "Données enregistrées avec succès !", vbInformation, "Validation"
End Sub

Pourquoi ?

  • Commentaires clairs → Explique chaque étape.
  • Indentation propre → Le code est plus facile à suivre.
  • Utilisation de With ... End With → Simplifie l’écriture et évite les répétitions.

3. Gérer la visibilité du formulaire intelligemment

Lorsque le formulaire est ouvert, il empêche l’utilisateur d’accéder à la feuille Excel. 

Solution : utiliser ShowModal = False dans les propriétés du formulaire pour permettre l’interaction avec la feuille.

Pour rendre le formulaire non bloquant :

Frm_Saisie.Show vbModeless

Vous pourrez ainsi naviguer dans Excel tout en gardant le formulaire ouvert. 

4. Supprimer les objets inutiles pour alléger votre fichier

Avec le temps, les macros peuvent accumuler des modules et objets inutilisés qui alourdissent votre fichier.

Faites du ménage régulièrement :

  • Supprimez les UserForms ou modules non utilisés.
  • Dans l’éditeur VBA, clic droit > Supprimer sur un module inutile.
  • Refactorisez votre code en fusionnant les procédures similaires.

Conclusion et prochaines étapes

Vous venez de découvrir comment coder et automatiser avec VBA en créant un formulaire interactif et en enregistrant automatiquement les données dans Excel. Grâce à cette méthode, vous gagnez du temps et éliminez les tâches répétitives.

Récapitulatif des points clés :

  • Préparer son environnement VBA pour coder efficacement.
  • Créer un formulaire VBA et structurer ses automatisations.
  • Alimenter automatiquement une liste déroulante avec deux méthodes.
  • Programmer un bouton de validation pour envoyer les données dans Excel.
  • Optimiser son code VBA pour qu’il soit lisible et maintenable.

Et maintenant ? Il est temps de mettre ces compétences en pratique et d’aller plus loin dans votre maîtrise d’Excel et VBA.

Pour aller plus loin

Et voilà ! Vous avez maintenant les bases essentielles pour coder et automatiser avec VBA. Fini les tâches répétitives et chronophages : vous gagnez du temps, réduisez les erreurs et optimisez vos fichiers Excel.

Mais VBA, ça se maîtrise en pratiquant ! Expérimentez, testez différents scénarios et adaptez le code à vos besoins réels. Plus vous l’utiliserez, plus vous deviendrez efficace.

C’était la dernière partie de notre formation gratuite sur VBA Excel, et on espère que ces cas concrets vous auront montré tout le potentiel de cet outil pour transformer votre façon de travailler sur Excel. À vous de jouer !

Vous souhaitez aller plus loin sur Excel VBA ? Notre formation Excel VBA certifiante pour une montée en compétences rapide avec un formateur Excel VBA est parfaite.

échanger de vive voix avec notre formateur
  • Faire le point sur vos compétences actuelles,
  • Exprimer vos besoins spécifiques,
  • Trouver le format de formation adapté,
  • Recevoir un devis et un programme personnalisé,
  • Poser toutes vos questions.
C’est gratuit. Sans engagement. Disponibilités limitées.
NICOLAS PARENT Co-Fondateur et Formateur
LES 25 FONCTIONS EXCEL LES PLUS UTILISÉES !
E-book Excel offert