Cours VBA gratuit | Bases

Sub et Function

Gratuit, sans inscription Niveau 1 / 3 | Découverte Lecture 7 min V1.2 | 29/10/2026

Tout code VBA vit dans une procédure. Une Sub agit, une Function calcule et renvoie un résultat. Savoir choisir entre les deux, et les faire dialoguer, c'est la base de toute macro bien construite.

Télécharger la fiche PDF gratuiteSans inscription, mise en page prête à imprimer

01Définition

En une phrase

Une Sub est une procédure qui exécute des actions. Une Function est une procédure qui renvoie une valeur, utilisable dans le code ou directement dans une cellule Excel.

Sub

Met en forme, copie, supprime, envoie un message. Elle apparaît dans la liste des macros (Alt + F8).

Function

Calcule et renvoie un résultat. Elle n'apparaît pas dans la liste des macros, mais dans les fonctions Excel.

02Syntaxe

Syntaxe générale
Sub NomDeLaMacro()
    ' instructions
End Sub

Function NomDeLaFonction(argument As Type) As TypeRetour
    ' calcul
    NomDeLaFonction = resultat
End Function
ÉlémentRôle
Sub / FunctionMot-clé qui ouvre la procédure.
(argument As Type)Données transmises à la procédure. Facultatif pour une Sub.
As TypeRetourType de la valeur renvoyée par une Function.
NomDeLaFonction = ...Affecter une valeur au nom de la fonction, c'est ce qui la renvoie.
End Sub / End FunctionFin de la procédure.

03Créer une fonction personnalisée

Une Function écrite dans un module standard devient utilisable dans les cellules, comme SOMME ou RECHERCHEX.

Une fonction TTC avec taux facultatif
Function TTC(montantHT As Double, Optional taux As Double = 0.2) As Double
    TTC = montantHT * (1 + taux)
End Function

Dans la feuille, on écrit =TTC(A2) pour un taux de 20 %, ou =TTC(A2; 0,055) pour un taux de 5,5 %. Le mot-clé Optional rend l'argument facultatif et lui donne une valeur par défaut.

💡 AstuceRetrouver ses fonctions

Vos fonctions personnalisées apparaissent dans l'assistant fonction (bouton fx), catégorie Personnalisées.

04Appeler une procédure depuis une autre

Découper une macro en petites procédures la rend plus lisible. Une Sub peut en appeler une autre, et utiliser le résultat d'une Function.

Une macro principale qui délègue
Sub Traitement()
    PreparerFeuille
    Call MettreEnForme("A1:F1")
    MsgBox "Total TTC : " & TTC(Range("B10").Value)
End Sub

Sub PreparerFeuille()
    Range("A2:F500").ClearContents
End Sub

Sub MettreEnForme(adresse As String)
    Range(adresse).Font.Bold = True
End Sub

05ByVal et ByRef

Par défaut, VBA transmet les arguments ByRef (par référence) : si la procédure appelée modifie l'argument, la variable d'origine est modifiée aussi. Avec ByVal, la procédure travaille sur une copie.

La différence en pratique
Sub Doubler(ByVal n As Long)
    n = n * 2          ' la variable d'origine ne change pas
End Sub

06Pièges à éviter

⚠️ PiègeOublier d'affecter le résultat

Une Function qui ne contient pas la ligne NomDeLaFonction = ... renvoie 0 ou une valeur vide, sans message d'erreur.

⚠️ PiègeUne fonction de cellule ne modifie rien

Appelée depuis une cellule, une Function ne peut que renvoyer une valeur : elle ne peut pas mettre en forme, écrire dans une autre cellule ou supprimer une ligne.

⚠️ PiègeLe mauvais module

Une fonction placée dans le module d'une feuille (Feuil1) ou dans ThisWorkbook n'est pas visible dans les cellules. Insérez un module standard : Insertion > Module.

⚠️ PiègePrivate cache la macro

Une Private Sub n'apparaît pas dans la liste des macros. Pratique pour les sous-procédures, déroutant quand on l'ignore.

07Questions fréquentes

Quelle est la différence entre Sub et Function en VBA ?

Une Sub est une procédure qui exécute des actions. Une Function est une procédure qui renvoie une valeur, utilisable dans le code ou directement dans une cellule Excel.

Quel est le piège le plus fréquent avec Sub et Function ?

Oublier d'affecter le résultat. Une Function qui ne contient pas la ligne NomDeLaFonction = ... renvoie 0 ou une valeur vide, sans message d'erreur.

La fiche « Sub et Function » est-elle gratuite ?

Oui. La fiche est en accès libre et gratuit, sans inscription : vous pouvez la lire en ligne et télécharger sa version PDF. Elle fait partie du cours VBA gratuit de mesetudesdecas.fr, qui compte 21 fiches.

Pour les formateurs

Passez de la fiche à la mise en situation

Les études de cas mesetudesdecas.fr placent vos apprenants face à un vrai besoin d'entreprise. L'étude de cas XL-05 fait automatiser un devis commercial de bout en bout, macros comprises, avec énoncé, corrigé et pas-à-pas du formateur.

Découvrir l'étude de cas XL-05
Voir aussi

Toutes les fiches du cours VBA gratuit

Voir aussi le cours gratuit sur les formules Excel

Fiche V1.2 | Dernière mise à jour : 29/10/2026 | Clément Delobel, formateur Excel et VBA