'***********************************************
Function ZenithTime(ByVal vdate As Date, ByVal Longitude As Double) As Date
' Variables
Dim n As Double ' Nombre de jours depuis le 1er janvier de l'année
Dim B As Double ' Correction pour l'équation du temps
Dim EoT As Double ' Équation du temps en minutes
Dim SolarNoon As Double ' Midi solaire en heures
Dim DateHe As Date 'date du passage à l'heure d'été
Dim DateHh As Date 'date du passage à l'heure d'hiver
DateHe = DateSerial(2024, 3, 31)
DateHh = DateSerial(2024, 10, 28)
If vdate >= DateHe And vdate < DateHh Then
He = TimeSerial(2, 0, 0)
Else
He = TimeSerial(1, 0, 0)
End If
A = Year(vdate)
Pi = WorksheetFunction.Pi()
' Nombre de jours depuis le début de l'année
n = vdate - DateSerial(A, 1, 1) + 1
' Calcul de l'équation du temps (EoT)
'Source du calcul: https://www.techno-science.net/definition/6567.html
B = (2 * Pi * (n - 81) / 364) 'pi est en radian ==> B est déjà en radian
EoT = -9.87 * Sin(2 * B) + 7.53 * Cos(B) + 1.5 * Sin(B)
' Calcul de l'heure du zénith solaire (en heures) 'c'est ici que ca doit coincer
SolarNoon = 12 + 4 * Longitude + EoT ' * 60 + EoT '* 60 '/60 ?
'https://webetab.ac-bordeaux.fr/Pedagogie/Physique/TPE/midi.htm
'HEURE LEGALE = HEURE SOLAIRE + CORRECTION LONGITUDE + 1 h (ou 2 l'été) + CORRECTION "EQUATION DU TEMPS"
HS = TimeSerial(12, 0, 0)
CL = TimeSerial(0, 4 * Longitude, 0)
HL = HS + CL + He + TimeSerial(0, EoT, 0)
' Retourner l'heure du zénith en heures décimales
ZenithTime = Format(HL, "hh:mm:ss")
End Function
Sub testzenith()
MsgBox ZenithTime(DateSerial(2024, 6, 21), 3.36667)
End Sub