Leçon 4 / 9 — Chapitre 4: Interaction, fonctions et automatisation
Créer une fonction personnalisée (Function)
Jusqu'ici, toutes les macros ont été écrites avec Sub...End Sub. VBA propose aussi Function...End Function, qui se distingue par une capacité essentielle : une Function RENVOIE une valeur, utilisable ensuite ailleurs dans le code, voire directement dans une cellule de feuille de calcul comme une formule personnalisée.
Écrire une Function
Function CalculerRemise(montant As Double) As Double
If montant > 500 Then
CalculerRemise = montant * 0.1
Else
CalculerRemise = 0
End If
End Function
Le résultat renvoyé est affecté au NOM de la Function elle-même (CalculerRemise = ...), pas à une variable séparée. Le As Double après la liste de paramètres précise le type de la valeur renvoyée.
Utiliser une Function dans du code VBA
Sub AfficherRemise()
MsgBox CalculerRemise(800)
End Sub
Utiliser une Function directement dans une cellule
Une fois écrite dans un module, CalculerRemise devient disponible comme n'importe quelle fonction Excel : taper =CalculerRemise(A1) dans une cellule calcule le résultat directement, sans passer par une macro à lancer manuellement.
La différence essentielle avec Sub : une Sub exécute des actions mais ne renvoie rien et ne peut pas être utilisée dans une cellule ; une Function calcule et renvoie une valeur, utilisable à la fois dans du code et dans une formule de feuille.
Exemple concret : une entreprise calcule une commission variable selon plusieurs paliers de chiffre d'affaires. Plutôt que de reproduire cette logique dans une formule Excel imbriquée illisible, une Function VBA CalculerCommission(ca As Double) encapsule la logique une seule fois, réutilisable dans n'importe quelle cellule du classeur.
À vous de jouer : écrivez une Function qui reçoit une note sur 20 et renvoie "Admis" si elle est supérieure ou égale à 10, sinon "Non admis", puis testez-la depuis une Sub avec MsgBox.
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 76 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès