Astuce VBA : calculer le 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 :

CopierSub nb_jours_mois()
    
    date_test = CDate("6/2/2012") 'Une date quelconque pour cet exemple

    nb_jours = Day(DateSerial(Year(date_test), Month(date_test) + 1, 1) - 1)
    
End Sub

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

CopierSub nb_jours_mois()
    
    'Une date quelconque pour cet exemple
    date_test = CDate("6/2/2012")
    
    'Mois / année de la date
    mois = Month(date_test)
    annee = Year(date_test)
    
    'Calcul du premier jour du mois suivant
    date_mois_suivant = DateSerial(annee, mois + 1, 1)
    
    'Date du dernier jour
    dernier_jour_mois = date_mois_suivant - 1
    
    'Nombre de jour dans le mois (= dernier jour)
    nb_jours = Day(dernier_jour_mois)
    
End Sub

Fonction

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

CopierFunction NB_JOURS(date_test As Date)
    NB_JOURS = Day(DateSerial(Year(date_test), Month(date_test) + 1, 1) - 1)
End Function

Exemple d'utilisation de la fonction en VBA :

CopierSub exemple()
    test = NB_JOURS(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