Astuce VBA : nombre de jours dans un mois

Pour calculer le nombre de jours dans un mois ou définir le dernier jour du mois, vous pouvez utiliser la formule suivante :

Sub nbJoursMois()
    
    dateTest = CDate("6/2/2024") 'Une date quelconque pour cet exemple

    nbJours = Day(DateSerial(Year(dateTest), Month(dateTest) + 1, 1) - 1)
    
End Sub

Pour mieux comprendre cette formule, la voici dans une version décortiquée et commentée :

Sub nbJoursMois()
    
    'Une date quelconque pour cet exemple
    dateTest = CDate("6/2/2024")
    
    'Mois / année de la date
    mois = Month(dateTest)
    annee = Year(dateTest)
    
    'Calcul du premier jour du mois suivant
    dateMoisSuivant = DateSerial(annee, mois + 1, 1)
    
    'Date du dernier jour
    dernierJourMois = dateMoisSuivant - 1
    
    'Nombre de jour dans le mois (= dernier jour)
    nbJours = Day(dernierJourMois)
    
End Sub

Fonction

Vous pouvez également l'utiliser en tant que fonction en ajoutant le code suivant dans un module :

Function nbJours(dateTest As Date)
    nbJours = Day(DateSerial(Year(dateTest), Month(dateTest) + 1, 1) - 1)
End Function

Exemple d'utilisation de la fonction en VBA :

Sub exemple()
    test = nbJours(Range("A1"))
    MsgBox test
End Sub
fonction nb jours dans mois

Exemple d'utilisation de cette même fonction sur une feuille de calcul :

fonction2 nb jours dans mois