Compter le nombre d'années bissextiles entre 2 dates

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

Je voudrais connaître le nombre d'années bissextiles entre 2 dates.
J'ai tenté au travers d'une fonction que j'ai rédigée :
VB:
Function NbAnBissext(dat1 As Date, dat2 As Date) As Byte 'dans mon application je ne parcourerai pas plus de 50 années
'Compte le nombre d'années bissextiles entre 2 dates

    Dim año1 As Integer, año2 As Integer, nba As Byte, i As Byte, nbab As Byte

    año1 = Year(dat1): año2 = Year(dat2)
    nba = año2 - año1

    For i = 0 To nba - 1
        If LeapYear(Year(dat1 + i)) Then nbab = nbab + 1
    Next

    NbAnBissext = nbab

End Function
----------------------------------------------------------------------
Function LeapYear(a%) As Boolean
'Vérifie si une année est bissextile ou pas (tient compte des années théoriquement bissextiles et qui ne le sont en fait pas, comme 1800/1900/2100...)
'- a : une année quelconque
'ROGER2327
    LeapYear = ((a Mod 4) = 0) * (1 + ((a Mod 100) = 0) * (1 + (((a \ 100) Mod 4) = 0)))
End Function
mais ça me renvoie toujours le nombre d'années entre les 2 dates.
Merci pour tout coup de main.
 

Regueiro

XLDnaute Impliqué
Re : Compter le nombre d'années bissextiles entre 2 dates

Re R@chid

C'est juste j'ai mal compris la question.

Voilà un code identique au tien

Code:
=SOMMEPROD(N(MOIS(DATE(LIGNE(INDIRECT(ANNEE(B119)&":"&ANNEE(C119)));2;29))=2))&" Ans"

MErci

Bonne soirée
 

Regueiro

XLDnaute Impliqué
Re : Compter le nombre d'années bissextiles entre 2 dates

Bonsoir à Tous
Magic Doctor

Je reviens sur le problème des années Bissextiles.

Sub nombredejours()
Dim NbrJour As Long
Dim NbrAnnée As Long
Dim NbrAnnéeBisex

Dim Date1 As Date

Date2 = Sheets("Hoja1").Range("C4").Value
Date1 = Sheets("Hoja1").Range("C3").Value

Temp1 = DateSerial(Year(Date2), 12, 31) - DateSerial(Year(Date1), 1, 1) + 1
Temp11 = Format(Temp1, "###")

MsgBox "Il y a " & Temp11 & " Jours"

NbrJour = DateDiff("d", Date1, Date2)


MsgBox NbrJour & " Jours"

NbrAnnée = DateDiff("yyyy", Date1, Date2)
MsgBox NbrAnnée & " Ans"

NbrAnnéeBisex = Temp11 - ((NbrAnnée + 1) * 365)
MsgBox "Il y a " & NbrAnnéeBisex & " Années Bissextiles dans cette Période"



End Sub

Il suffira de créer une fonction avec ??
Je regarde demain.
A+
 

Discussions similaires

Réponses
9
Affichages
532

Statistiques des forums

Discussions
312 083
Messages
2 085 188
Membres
102 809
dernier inscrit
Sandrine83