SAVOIR SI UNE ANNÉE EST BISEXSTILE

ngilbert - 15 mars 2001 à 19:21
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 31 mai 2007 à 08:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/751-savoir-si-une-annee-est-bisexstile

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
31 mai 2007 à 08:49
surtout que ce calcul est faux, ne prenant pas en compte la divisibilité par 100...

http://www.codyx.org/snippet_determiner-si-annee-est-bissextile_249.aspx#810

Public Function IsLeapYear(ByVal vzInput As Variant) As Boolean
Dim nYear As Integer
If VarType(vzInput) = vbDate Then
nYear = DatePart("YYYY", vzInput)
ElseIf IsNumeric(vzInput) Then
nYear = vzInput
Else
Exit Function
End If
IsLeapYear = IsDate(nYear & "-02-29")
End Function


possibilité de lui passer une date (la fonction considerera l'année de la date fournie)
ou de passer l'année :

a = IsLeapYear ( #10/19/2006# )
ou
a = IsLeapYear ( 2006 )
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
30 mai 2007 à 23:37
Bonjour à tous les trois...
C'est bien la peine d'avoir VB entre les mains, si c'est pour en arriver à de tels calculs.
VB offre quand même du mille fois plus simple, non ?
Je vous laisse chercher (je préfère)
Réfléchissez un peu...
un indice (inutile d'aller chercher midi à quatorze heure à partir de la définition d'une année bissectile alors que VB gère parfaitement les dates ...!!!)
Amitiés.
houla ngilbert ... ta devise doit être pkoi faire simple quand on peut faire compliqué ! ;-)
en tout cas g une solution bcp plus simple :
Function IsBissextile(Annee As Long) As Boolean
If Annee Mod 4 0 And (Annee Mod 100 <> 0 Or Annee Mod 400 0) Then IsBissextile = True
Else IsBissextile = False
End If
End Function
Le code contient des erreurs, voici ma correction
Function IsBissextile(Annee As Integer) As Boolean
IsBissextile = False
If Annee Mod 4 0 Then IsBissextile True
If Right(Str(Annee), 2) = "00" Then
If Annee Mod 400 <> 0 Then IsBissextile = False
End If
End Function
Rejoignez-nous