Licence CC BY-NC-SA

Les fonctions standards Excel en VBA

À voir en fonction de

Comme vous le savez, VBA arrive avec son lot de fonctions standards. Vous connaissez sans doute celles de conversion de type par exemple.

Or, Excel contient lui aussi tout un tas de fonctions qui peuvent être utiles dans nos macros. Nous pouvons citer la fonction MAX pour trouver la valeur maximale d’une liste par exemple.

Pour utiliser une fonction Excel en VBA, la syntaxe possible est la suivante :

Application.WorksheetFunction.Max (1, 2, 3) ' Version longue
WorksheetFunction.Max (1, 2, 3) ' Version raccourcie
Application.Max(1, 2, 3) ' Version raccourcie 2

L’avantage des deux premières versions est qu’elles permettent de lister les fonctions disponibles avec la complétion intelligente. Nous remarquons que la casse est différente entre Excel et VBA. Par ailleurs, cela ne se voit pas dans cet exemple, mais les noms de fonction sont alors en anglais, c’est pourquoi il y a parfois un peu de travail de recherche pour trouver l’équivalence.

Parfois, nous pouvons trouver une fonction à la fois en VBA natif et via les fonctions Excel. Par exemple, la fonction VBA.Cos et WorksheetFunction.Cos. Autre exemple, la fonction JOINDRE.TEXTE d’Excel peut prendre un argument supplémentaire (ignorer vide) par rapport à la fonction Join de VBA, d’où la coexistence des deux. Dans ces cas, j’ai tendance à opter pour la version native en VBA.

Au cours de ce billet, nous allons lister de façon non exhaustive quelques fonctions du tableur en VBA.

Recherches de fonction

Nous ne savons pas toujours quelles sont les fonctions existantes, ni leur équivalence en VBA. Il y a donc parfois un peu de recherche.

Recherches depuis Excel

Si nous souhaitons faire des recherches depuis Excel, voici les possibilités.

Bibliothèque des fonctions

Pour commencer, nous pouvons effectuer des recherches depuis la bibliothèque de fonctions. Ce qui est pratique, c’est qu’elles y sont rangées par catégorie.

Bibliothèque de fonctions.
Bibliothèque de fonctions.

En sélectionnant une fonction depuis cette bibliothèque, une fenêtre pour renseigner les arguments apparaît. Celle-ci contient également quelques informations et un lien vers la documentation en ligne.

Fenêtre des arguments.
Fenêtre des arguments.

Fenêtre insertion de fonction

La fenêtre d’insertion de fonction permet aussi de rechercher par catégorie, mais aussi par nom. Nous disposons également de quelques informations et d’un lien vers une aide plus détaillée.

Fenêtre insertion fonction.
Fenêtre insertion fonction.

Traduction en VBA

Pour connaître les équivalences en VBA, il y a plusieurs moyens.

Enregistreur de macros

L’enregistreur de macros enregistre les noms de fonctions Excel en anglais, ce qui est un bon point de départ (la casse est notamment différente en VBA encore une fois).

Prenons un exemple en saisissant =JOINDRE.TEXTE(" ";VRAI;"Bonjour";"à";"tous") dans une cellule :

Sub Macro9()
'
' Macro9 Macro
'
'
    Range("H19").Select
    ActiveCell.FormulaR1C1 = "=TEXTJOIN("" "",TRUE,""Bonjour"",""à"",""tous"")"
End Sub

IntelliSense

Comme indiqué en introduction, l’aide au développement du VBE liste les fonctions disponibles lors de la saisie de WorksheetFunction..

En reprenant l’exemple précédent, nous pouvons écrire WorksheetFunction.Te dans le VBE et voir TextJoin apparaître. La fonction Excel JOINDRE.TEXTE a donc son équivalence TextJoin en VBA.

Comme nous avons dit en introduction, il existe également la fonction Join de VBA pour faire la même chose (à un argument prêt). Dans ce cas, j’ai tendance à préférer l’utilisation de la fonction native VBA.

Documentation en ligne

Cette page de documentation concernant l’objet WorksheetFunction peut servir par exemple.

Au cours de cette section, nous avons vu comment rechercher des informations liées aux fonctions Excel en VBA.

Les fonctions sur les tableaux

Les fonctions nous intéressant particulièrement sont celles-ci concernant les tableaux. Nous allons pouvoir leur fournir des Range ou encore des Array.

Pour cette section, nous allons utiliser le jeu de données suivant sorti… tout droit de mon chapeau ! :magicien:

Données de départ.
Données de départ.

Petite disgression : si vous voulez utiliser les mêmes données, je vous les mets ci-dessous. Le plus simple est de copier-coller le contenu dans Excel puis de convertir les données en tableau comme illustré dans les images qui suivent. Enfin, si vous ne connaissez pas bien les listes de données, je vous invite également à lire à minima le début du billet dédié pour créer et nommer celle-ci.

Fichier des données (CSV séparateur point-virgules)

Jour;Nb de vols prévus;Nb de vol annulés;Taux annulation;Nb de passagers effectifs
01/07/2025;256;23;8,98%;28416
02/07/2025;546;54;9,89%;60606
03/07/2025;456;5;1,10%;50616
04/07/2025;565;12;2,12%;62715
05/07/2025;568;5;0,88%;63048
06/07/2025;265;32;12,08%;29415
07/07/2025;125;51;40,80%;13875
08/07/2025;156;15;9,62%;17316
09/07/2025;356;32;8,99%;39516
10/07/2025;358;45;12,57%;39738
11/07/2025;154;23;14,94%;17094
12/07/2025;155;12;7,74%;17205
13/07/2025;125;23;18,40%;13875
14/07/2025;544;35;6,43%;60384
15/07/2025;650;45;6,92%;72150
16/07/2025;444;23;5,18%;49284
17/07/2025;232;21;9,05%;25752
18/07/2025;124;23;18,55%;13764
19/07/2025;234;36;15,38%;25974
20/07/2025;154;45;29,22%;17094
21/07/2025;234;12;5,13%;25974
22/07/2025;452;56;12,39%;50172
23/07/2025;324;12;3,70%;35964
24/07/2025;124;56;45,16%;13764
25/07/2025;365;34;9,32%;40515
26/07/2025;400;25;6,25%;44400
27/07/2025;156;45;28,85%;17316
28/07/2025;121;15;12,40%;13431
29/07/2025;122;12;9,84%;13542
30/07/2025;23;15;65,22%;2553
31/07/2025;356;35;9,83%;39516

Illustrations pour convertir les données en plusieurs colonnes :

Convertir les données en plusieurs colonnes (1).
Convertir les données en plusieurs colonnes (1).
Convertir les données en plusieurs colonnes (2).
Convertir les données en plusieurs colonnes (2).

Quelques exemples :

Fonction Excel Équivalent VBA Description
MIN WorksheetFunction.Min Retourne le nombre le plus petit parmi une liste
MIN.SI.ENS WorksheetFunction.MinIfs Retourne le nombre le plus petit parmi une liste pour un ensemble de conditions ou de critères donné
MOYENNE WorksheetFunction.Average Retourne la moyenne des arguments
SOMME WorksheetFunction.Sum Retourne la somme des arguments
NB.SI WorksheetFunction.CountIf Retourne le nombre de cellules non vides répondant à la condition
RECHERCHEV WorksheetFunction.VLookup Cherche une valeur dans la première colonne d’un tableau et retourne la valeur sur la ligne correspondante pour l’index de colonne voulu
INDEX WorksheetFunction.Index Retourne la valeur à une position donnée d’un tableau donné

Quelques exemples exécutés depuis la fenêtre d’exécution (CTRL + G) :

? WorksheetFunction.Min(Sheets(1).ListObjects(1).ListColumns("Taux annulation").DataBodyRange)
 8,80281690140845E-03 

? WorksheetFunction.MinIfs(Sheets(1).Range("D2:D32"), Sheets(1).Range("B2:B32"), "<200")
 7,74193548387097E-02 

? WorksheetFunction.Sum(Array(1, 1, 2))
 4 

? WorksheetFunction.CountIf(Sheets(1).ListObjects(1).ListColumns("Nb de passagers effectifs").DataBodyRange, ">50000")
 7 

? WorksheetFunction.VLookup(Sheets(1).Range("A20"), Sheets(1).ListObjects(1).DatabodyRange, 5)
 25974 

? WorksheetFunction.Index(Sheets(1).ListObjects(1).DatabodyRange, 1, 2)
 256 

Cette section a exposé quelques fonctions Excel en VBA concernant les tableaux.

Les autres fonctions

Il y a tout un tas de fonctions, que ce soit des fonctions financières, d’ingénierie, comptables, …. Si vous ne trouvez pas votre bonheur en VBA natif, peut-être le trouverez vous là.

Quelques exemples :

Fonction Excel Équivalent VBA Description
PDUREE WorksheetFunction.PDuration Retourne le nombre de périodes requises par un investissement pour atteindre une valeur spécifiée
NB.JOURS.OUVRES WorksheetFunction.NetworkDays Retourne le nombre de jour ouvrés entre deux dates
ROMAIN WorksheetFunction.Roman Retourne un nombre arabe converti en nombre romain
LOI.BINOMIALE WorksheetFunction.BinomDist Retourne la probabilité d’une variable aléatoire discrète suivant la loi binomiale
BESSELI WorksheetFunction.BesselI Retourne la fonction de Bessel modifiée ln(x)

Durant cette section, nous avons brièvement vu quelques autres exemples de fonction Excel en VBA.


Le long de ce billet, nous avons vu l’avantage de connaître certaines fonctions Excel en VBA.

Lorsque vous avez besoin de faire une opération, demandez-vous si celle-ci n’existe déjà pas, que ce soit dans les fonctions VBA ou bien dans les fonctions Excel, avant de la redévelopper.

À bientôt !

Quelques ressources :

Aucun commentaire

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte