Comprendre les macros VBA

Comprendre les macros VBA
Dernière mise à jour le 05/02/2024
Temps de lecture : 3 minutes

Dans Excel, vous pouvez concevoir de véritable programme informatique grâce aux macros VBA.

Tous les programmes informatiques, sont construit de la même façon

  • des variables (pour stocker des valeurs intermédiaires)
  • des tests pour comparer 2 éléments ou 2 valeurs
  • et enfin boucles pour réaliser des répétitions d'exécution

Macros ou VBA ?

Les termes sont aujourd'hui équivalent. Une recherche sur le net avec l'un ou l'autre de ces termes va vous renvoyer systématiquement vers des lignes de codes.

A l'origine de l'informatique, les applications donnaient la possibilité d'enregistrer des tâches ou des actions au travers de macro-commandes. Le terme macro est resté pour indiquer qu'un programme conçu par un utilisateur va exécuter des actions.

VBA est la contraction de Visual Basic for Application. Dans Office (et pas seulement Excel), le langage de programmation retenu c'est le Visual Basic. Seulement, les termes utilisés par Excel (cellules, feuille de calcul, plage de données, ...) sont spécifiques à Excel. Dans Access ou Word, ces termes ne veulent rien dire.

Donc le A de VBA indique que des mots-clés spécifiques à l'application ont été développés dans le langage Visual Basic.

Comprendre un programme en VBA

Le Visual Basic Editor

Les macros VBA s'écrivent dans le Visual Basic Editor. Pour l'ouvrir, il vous suffit d'appuyer sur les touches Alt + F11

Présentation du Visual Basic Editor

L'éditeur de macros s'ouvrent dans un programme à part.

Ecrire le code dans des procédures

Pour s'exécuter, une macro doit être écrite dans une procédure (subroutine en anglais avec comme diminutif Sub)

Sub MonProgramme()
   ' Votre code ...
End Sub

Comment se code une cellule ?

Une cellule se code de la façon suivante

Cells(numéro ligne, numéro colonne)

Ca peut être un peu déroutant car pour les références dans Excel, c'est la colonne qui est énoncée en premier : A5, B10, C32, ...

Mais il est aussi possible de coder une cellule ou une plage de cellules avec des références "en dur" (qui ne vont jamais bouger) comme

  • Range("A1")
  • ou encore Range("B6:AF13") à la fin du code pour indiquer que le programme va travailler sur les cellules entre B6 et AF13

C'est quoi une variable ?

Une variable c'est un élément du code qui va voir sa valeur changer.

De plus, une variable doit respecter un certain type de données pour préserver l'intégrité d'un programme. On ne peut pas ajouter des nombres avec du texte par exemple.

Dans le cas du calendrier automatique, nous allons remplacer le paramètre de la colonne d'une cellule par une variable. De ce fait, il sera possible de parcourir les cellules qui contiennent le 29, 30 et 31e jour avec la même ligne de code.

C'est quoi une boucle ?

En informatique, une boucle correspond à la répétition d'une même action jusqu'à atteindre une valeur ou une condition pour arrêter la séquence.

Par exemple, avec le code suivant, nous allons répéter 10 fois l'action de mettre une valeur dans les cellules de A1 à A10

For i = 1 To 10
   Cells(i, 1) = i
Next

C'est quoi un test dans un programme informatique ?

Un test dans un programme, c'est la même chose que pour la fonction SI dans Excel.

Un test logique est réalisé entre 2 éléments et selon le résultat (Vrai ou Faux), un branchement est réalisé vers le test Vrai ou vers le test Faux.

Par exemple, le code suivant test le contenu de la cellule D5 et affiche un message en conséquence.

If Cells(5, 4) = 8 Then
   MsgBox "La cellule D5 contient la valeur 8"
Else
   MsgBox "La cellule D5 est différente de 8"
End if

Livre recommandé

Pour tous les articles de ce site, j'ai essayé d'écrire des exemples concis pour les lire en 1 ou 2 minutes. Mais expliquer la logique des macros en si peu de temps ce n'est pas possible.

Il faut vraiment du temps pour comprendre la logique des macros et aussi il faut du temps pour pratiquer. Un simple copier/coller d'un bout de code ne suffit pas.

Par contre, j'ai pris le temps de vous expliquer la technique de programmation des macros dans ce livre.

Livres Macro et langage VBA

Je peux comprendre que l'achat d'un livre ne vous intéresse pas mais si vous souhaitez concevoir des classeurs avec des macros élaborées, le meilleur moyen c'est de se procurer cet ouvrage et d'apprendre les techniques de programmation.

Bonne lecture ?

3 Comments

  1. BOSCHER JEAN LUC
    15/03/2024 @ 10:46

    Bonjour ,
    J ai réalisé un système de de gestion de production avec réalisation de fiche de fabrication ,suivi de production avec des macros . Mais mon classeur Excel est depuis un moment très très lent a exécuter les macros et pendant l exécution me marque en haut à gauche Excel ne répond pas !!

    Quelqu'un a t il une explication pour mon problème et surtout comment le résoudre . .
    Je suis sous Excel 2019 Edition familiale

    Merci d'avance

    Jean Luc

    Reply

  2. DJELLOULI
    08/02/2022 @ 17:47

    Bonjour, je suis comptable et je voudrais apprendre comment ça fonctionne un formule macro sur tableau d'excel des amortissements.
    Cordialement.

    Reply

    • No
      23/07/2023 @ 21:06

      Voici un simple exemple de programmation :
      Sub btnCalculateEMI_Click()
      Dim monthly_rate As Single, loan_amount As Double, number_of_periods As Single, emi As Double

      monthly_rate = Range("B6").Value / Range("B5").Value 'interest rate / no of payments per year

      loan_amount = Range("B3").Value 'loan amount

      number_of_periods = Range("B4").Value * Range("B5").Value 'loan term * no of payments per year

      emi = WorksheetFunction.Pmt(monthly_rate, number_of_periods, -loan_amount)

      Range("B9").Value = emi
      End Sub

      Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Comprendre les macros VBA

Reading time: 3 minutes
Dernière mise à jour le 05/02/2024

Dans Excel, vous pouvez concevoir de véritable programme informatique grâce aux macros VBA.

Tous les programmes informatiques, sont construit de la même façon

  • des variables (pour stocker des valeurs intermédiaires)
  • des tests pour comparer 2 éléments ou 2 valeurs
  • et enfin boucles pour réaliser des répétitions d'exécution

Macros ou VBA ?

Les termes sont aujourd'hui équivalent. Une recherche sur le net avec l'un ou l'autre de ces termes va vous renvoyer systématiquement vers des lignes de codes.

A l'origine de l'informatique, les applications donnaient la possibilité d'enregistrer des tâches ou des actions au travers de macro-commandes. Le terme macro est resté pour indiquer qu'un programme conçu par un utilisateur va exécuter des actions.

VBA est la contraction de Visual Basic for Application. Dans Office (et pas seulement Excel), le langage de programmation retenu c'est le Visual Basic. Seulement, les termes utilisés par Excel (cellules, feuille de calcul, plage de données, ...) sont spécifiques à Excel. Dans Access ou Word, ces termes ne veulent rien dire.

Donc le A de VBA indique que des mots-clés spécifiques à l'application ont été développés dans le langage Visual Basic.

Comprendre un programme en VBA

Le Visual Basic Editor

Les macros VBA s'écrivent dans le Visual Basic Editor. Pour l'ouvrir, il vous suffit d'appuyer sur les touches Alt + F11

Présentation du Visual Basic Editor

L'éditeur de macros s'ouvrent dans un programme à part.

Ecrire le code dans des procédures

Pour s'exécuter, une macro doit être écrite dans une procédure (subroutine en anglais avec comme diminutif Sub)

Sub MonProgramme()
   ' Votre code ...
End Sub

Comment se code une cellule ?

Une cellule se code de la façon suivante

Cells(numéro ligne, numéro colonne)

Ca peut être un peu déroutant car pour les références dans Excel, c'est la colonne qui est énoncée en premier : A5, B10, C32, ...

Mais il est aussi possible de coder une cellule ou une plage de cellules avec des références "en dur" (qui ne vont jamais bouger) comme

  • Range("A1")
  • ou encore Range("B6:AF13") à la fin du code pour indiquer que le programme va travailler sur les cellules entre B6 et AF13

C'est quoi une variable ?

Une variable c'est un élément du code qui va voir sa valeur changer.

De plus, une variable doit respecter un certain type de données pour préserver l'intégrité d'un programme. On ne peut pas ajouter des nombres avec du texte par exemple.

Dans le cas du calendrier automatique, nous allons remplacer le paramètre de la colonne d'une cellule par une variable. De ce fait, il sera possible de parcourir les cellules qui contiennent le 29, 30 et 31e jour avec la même ligne de code.

C'est quoi une boucle ?

En informatique, une boucle correspond à la répétition d'une même action jusqu'à atteindre une valeur ou une condition pour arrêter la séquence.

Par exemple, avec le code suivant, nous allons répéter 10 fois l'action de mettre une valeur dans les cellules de A1 à A10

For i = 1 To 10
   Cells(i, 1) = i
Next

C'est quoi un test dans un programme informatique ?

Un test dans un programme, c'est la même chose que pour la fonction SI dans Excel.

Un test logique est réalisé entre 2 éléments et selon le résultat (Vrai ou Faux), un branchement est réalisé vers le test Vrai ou vers le test Faux.

Par exemple, le code suivant test le contenu de la cellule D5 et affiche un message en conséquence.

If Cells(5, 4) = 8 Then
   MsgBox "La cellule D5 contient la valeur 8"
Else
   MsgBox "La cellule D5 est différente de 8"
End if

Livre recommandé

Pour tous les articles de ce site, j'ai essayé d'écrire des exemples concis pour les lire en 1 ou 2 minutes. Mais expliquer la logique des macros en si peu de temps ce n'est pas possible.

Il faut vraiment du temps pour comprendre la logique des macros et aussi il faut du temps pour pratiquer. Un simple copier/coller d'un bout de code ne suffit pas.

Par contre, j'ai pris le temps de vous expliquer la technique de programmation des macros dans ce livre.

Livres Macro et langage VBA

Je peux comprendre que l'achat d'un livre ne vous intéresse pas mais si vous souhaitez concevoir des classeurs avec des macros élaborées, le meilleur moyen c'est de se procurer cet ouvrage et d'apprendre les techniques de programmation.

Bonne lecture ?

3 Comments

  1. BOSCHER JEAN LUC
    15/03/2024 @ 10:46

    Bonjour ,
    J ai réalisé un système de de gestion de production avec réalisation de fiche de fabrication ,suivi de production avec des macros . Mais mon classeur Excel est depuis un moment très très lent a exécuter les macros et pendant l exécution me marque en haut à gauche Excel ne répond pas !!

    Quelqu'un a t il une explication pour mon problème et surtout comment le résoudre . .
    Je suis sous Excel 2019 Edition familiale

    Merci d'avance

    Jean Luc

    Reply

  2. DJELLOULI
    08/02/2022 @ 17:47

    Bonjour, je suis comptable et je voudrais apprendre comment ça fonctionne un formule macro sur tableau d'excel des amortissements.
    Cordialement.

    Reply

    • No
      23/07/2023 @ 21:06

      Voici un simple exemple de programmation :
      Sub btnCalculateEMI_Click()
      Dim monthly_rate As Single, loan_amount As Double, number_of_periods As Single, emi As Double

      monthly_rate = Range("B6").Value / Range("B5").Value 'interest rate / no of payments per year

      loan_amount = Range("B3").Value 'loan amount

      number_of_periods = Range("B4").Value * Range("B5").Value 'loan term * no of payments per year

      emi = WorksheetFunction.Pmt(monthly_rate, number_of_periods, -loan_amount)

      Range("B9").Value = emi
      End Sub

      Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.