VBA: Trouver le dernier jour du mois

De manière générale, si vous avez besoin de déterminer le dernier jour d'un mois particulier, la méthode la plus simple est la suivante:

"On prend le premier jour du mois suivant et on enlève un jour."

Cela nous donne le dernier jour du mois en question et il suffit alors d'extraire le nombre de jours de cette date (via la fonction VBA Day).

Prenons un exemple: on veut déterminer le nombre de jours du mois de juin 2022. Selon la méthode plus haut, il suffit d'utiliser la "formule" suivante: 1/7/2022 - 1 jour

Fonction VBA pour déterminer le dernier jour du mois / le nombre de jours dans un mois

Si on transforme la principe cité plus haut en code VBA, cela donne ceci (une fonction qui utilise comme argument une date):

 

Comme vous voyez, cela n'est pas bien compliqué. Grâce à la fonction VBA DateAdd, il est très simple de de travailler avec "le mois suivant".

Si vous êtes, comme moi 🙂 , un adepte de la manière concise d'écrire le code, il est possible de l'exprimer en une seule ligne:

 

Utilisation de la fonction Excel FIN.MOIS en VBA pour déterminer le dernier jour du mois

Il existe une autre possibilité – utiliser une fonction d'Excel (FIN.MOIS) à la place d'une combinaison des fonctions VBA de base. Le code VBA serait alors le suivant:

 

(!) Notez que dans le code VBA, il faut utiliser le nom anglais de la fonction FIN.MOIS (c'est-à-dire EOMONTH). Mais je dois avouer que j'évite d'utiliser les WorksheetFunction pour différentes raisons (notamment l'utilisation des Variant et la gestion des erreurs)…

N'empêche que parfois, les "WorksheetFunctions" peuvent se révéler bien pratiques. Si vous voulez en savoir davantage sur leur utilisation, voici un tutoriel sur WorksheetFunction en VBA.

Pour en savoir plus sur les dates en VBA

La manipulation des dates est très fréquente en VBA et en Excel en général. C'est pourquoi je vous propose les articles suivants traitant ce sujet:

Si vous rencontrez les problèmes avec le VBA bloqué dans les fichiers XLSM en provenance d'internet – voici la solution!

Laissez un commentaire

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