Calcul avec exeption d'une année bissextile

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 059 fois - Téléchargée 35 fois

Contenu du snippet

Actuellement occupé a faire un calendrier perpétuel, j'ai remarqué que la majorité des codes existants "oublient" les exceptions lors du calcul d'une année bissextile. Voici une fonction qui corrige ce problème. En espérant qu'elle serve à d'autres.

Source / Exemple :


Public Function IsBissextile(ByVal Annee As Integer) As Boolean
'Pour qu'une année soit bissextile il faut qu'elle réponde aux exigences suivante.
'Qu'elle soit divisible par 4
'Si elle est divisible par 100, elle doit aussi l'être par 400
'ex: 1904 est divisible par 4 ET PAS PAR 100 => bissextile
'    1900 est divisible par 4, par 100 MAIS PAS PAR 400 => pas bissextile
'    2000 est divisible par 4, par 100 ET par 400 => est bissextile
IsBissextile = Annee Mod 4 = 0
If IsBissextile = False Then Exit Function
'N'est pas une année séculaire (divisible par 100)
If Annee Mod 100 > 0 Then Exit Function
'Est une année séculaire ET bissextile
IsBissextile = Annee Mod 400 = 0
End Function

A voir également

Ajouter un commentaire

Commentaires

cs_debutante
Messages postés
9
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
1 septembre 2009
-
Bonjour,

Même si l'idée d'utiliser les erreurs est originale, elle est dépendante d'une fonction, et qui sait si à la prochaine relaese, la prochaine architecture, cette fonction sera toujours juste, c'est comme ça que les bug apparaissent sans savoir pourquoi.
C'est un peu trop fréquent avec MS.
Je préfère donc le code de beneb.
Même si les processeurs sont hyper rapide, je serai curieuse de savoir quel code sera le plus rapide si l'on boucle 100.000.000 fois le calcul pour les dates comprises entre 1583 et 2999.
Je ne parlerai pas du calendrier julien ni de l'an 3000 pour ne pas faire plus "tache" ;)
cs_BenEB
Messages postés
1
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
2 octobre 2004
-
Moi aussi, je suis du style paresseux mais des codes basés uniquement sur l'erreur, c'est moins marrant à créer.
Soit dit en passant, le code est simple et efficace. J'y avais pas pensé moi-même, c'est peut-être pour ça que je râle (lol)
cs_dragon
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
3 -
t'as une autre exception sur les 1000 ans aussi

moi je me casse pas la tête, suis un peu paresseux lol

public function isBisextile(byval année as integer) as boolean
on error goto erreur
dim temp as date
temp = année & "-02-29"
isBisextile = true
exit function
erreur:
isBisextile = false
end function
Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56 -
bon code, sympa d'avoir mis l'explication sur le caulcl des années bissextiles

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.