Function DuréeEnClair(ByVal D As Double) As String
Dim Z As String, M As Double, U As String, N As Long, NDét&
Z = ""
M = 365.2425: U = "an" & IIf(D >= 730.485, "s", ""): GoSub 2
M = 30.436875: U = "mois": GoSub 2
M = 7: U = "semaine" & IIf(D >= 14, "s", ""): GoSub 2
M = 1: U = "jour" & IIf(D >= 2, "s", ""): GoSub 2
M = 1 / 24: U = "heure" & IIf(D > 2 / 24, "s", ""): GoSub 2
M = 1 / 1440: U = "min.": GoSub 2
1 DuréeEnClair = Mid$(Z, 5)
Exit Function
2 N = Int(D / M)
If N > 0 Then
Z = Z & " et " & N & " " & U
D = D - M * N
End If
If Len(Z) = 0 Then NDét = 0 Else NDét = NDét + 1
If NDét >= 2 Then GoTo 1
Return
End Function