Option Explicit
Function Jours365(DateDeb As Date, DateFin As Date)
Dim Md As Date, An%, Nb%
Select Case (DateFin - DateDeb)
Case Is < 365
On Error Resume Next
Md = "29/02/" & Year(DateFin)
Select Case Err.Number
Case 0
If Md > DateDeb And Md < DateFin Then
Jours365 = DateFin - DateDeb
Else
Jours365 = DateFin - DateDeb + 1
End If
Case Else
Jours365 = DateFin - DateDeb + 1
End Select
On Error GoTo 0
Case Else
Select Case DateDeb
Case Is < "1/3/" & Year(DateDeb)
An = Year(DateDeb)
Case Else
An = Year(DateDeb) + 1
End Select
Do
On Error Resume Next
Md = "29/02/" & An
Select Case Err.Number
Case 0
If Md < DateFin Then Nb = Nb + 1
Case Else
End Select
On Error GoTo 0
An = An + 1
Loop Until DateFin <= DateSerial(An, Month(Md), Day(Md))
Jours365 = (DateFin - DateDeb) - Nb
End Select
End Function