VBA: Trouver le nombre de jours dans un mois


Si vous avez besoin de déterminer le nombre de jours dans 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 février 2017. Selon la méthode plus haut, il suffit d'utiliser la "formule" suivante: 1/3/2017 - 1 jour

Fonction VBA pour déterminer le dernier jour du mois

En code VBA, cela donne ceci (une fonction qui utilise comme argument une date):

Public Function NombreDeJoursDansMois(MaDate As Date)
'par Excel-Malin.com ( http://excel-malin.com )

'1) créer la date pour le 1er jour du mois suivant
DateTemporaire = DateAdd("m", 1, MaDate)

'2) on soustrait un jour et on détermine le nombre de jours grâce à la fonction "Day"
NombreDeJoursDansMois = Day(DateSerial(Year(DateTemporaire), Month(DateTemporaire), 1) - 1)

End Function

Comme vous voyez, cela n'est pas bien compliqué.

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

Public Function NombreDeJoursDansMois(MaDate As Date)
    NombreDeJoursDansMois = Day(DateSerial(Year(DateAdd("m", 1, MaDate)), Month(DateAdd("m", 1, MaDate)), 1) - 1)
End Function

 

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:

Public Function NombreDeJoursDansMois(MaDate As Date)
'par Excel-Malin.com ( http://excel-malin.com )
NombreDeJoursDansMois = Day(Application.WorksheetFunction.EoMonth(MaDate, 0))
End Function

 

(!) 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)…

Pour en savoir plus sur les dates en VBA

12 0

Pourrait vous intéresser

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.