Astuces de recherche...
Home
- Accueil & nouveautés
- Les newsgroups VB
- Téléchargements
- L'équipe
- Nous contacter
- Liens
Rubriques
- Toutes les questions
- Affichage & graphismes
- Algorithmique
- API
- Base de registre
- Bases de données
- Contrôles
- Date & heure
- Déploiement
- Divers
- Erreurs & problèmes
- Fichiers & dossiers
- Généralités
- Impression
- Internet & mails
- Math
- Multimédia
- Réseaux
- Structures de données
- Texte & strings
- VB .Net
- VB Script
- VBA
- Windows

Question 84

Comment connaître le nombre de jours d'un mois donné ?

Visual Basic dispose de puissantes fonctions de base pour la manipulation des dates. On peut utiliser ces fonctions pour écrire des fonctions de plus haut niveau, comme par exemple : Comment connaître le nombre de jour d'un mois donné pour une certaine année. Accessoirement, une fonction auxiliaire permet déterminer si une année est bissextile ou non.

Les fonctions suivantes montre comment faire cela, en utilisant différents moyens et différentes fonctions de VB.

'
' Retourne le nombre de jour d'un mois donné, en utilisant Day(), DateSerial et DateAdd()
'
Public Function DaysInMonth(ByVal nMonth As Integer, ByVal nYear As Integer) As Integer

    DaysInMonth = Day(DateAdd("d", -1, DateAdd("m", 1, DateSerial(nYear, nMonth, 1))))

End Function


'
' 2 variantes, utilisant uniquement Day() et DateSerial()
'
Public Function DaysInMonth(ByVal nMonth As Integer, ByVal nYear As Integer) As Integer

    DaysInMonth = Day(DateSerial(nYear, nMonth + 1, 0))

End Function

Public Function DaysInMonth(ByVal nMonth As Integer, ByVal nYear As Integer) As Integer

    If nMonth = 12 Then
        DaysInMonth = Day(DateSerial(nYear + 1, 1, 1) - 1)
    Else
        DaysInMonth = Day(DateSerial(nYear, nMonth + 1, 1) - 1)
    End If

End Function


'
' Variante classique, nécessitant de déterminer si l'année est bissextile ou non
'
Public Function DaysInMonth(ByVal nMonth As Long, ByVal nYear As Long) As Long

    Select Case nMonth
        Case 2
            If isLeapYear(nYear) Then
                DaysInMonth = 29
            Else
                DaysInMonth = 28
            End If
        Case 4, 6, 9, 11
            DaysInMonth = 30
        Case Else
            DaysInMonth = 31
    End Select

End Function



La fonction suivante détermine si une année donnée est bissextile ou non. Elle est utilisée par la méthode précédente.

'
' Détermine si une année est bissextile ou non.
'
Public Function isLeapYear(ByVal nYear As Long)

    isLeapYear = ((nYear Mod 4 = 0) And (nYear Mod 100 <> 0)) Or (nYear Mod 400 = 0)

End Function


Pour aller plus loin
Date de publication : 16 septembre 2002
Dernière modification : 25 février 2007
Rubriques : Date & heure
Mots-clés : date, dates, année, années, mois, jours, jour, Day, DateSerial, DateAdd, DateDiff, bissextile