Function ZenithTime(ByVal Date_ As Date, ByVal Longitude As Double) As Double
A = Year(Range("B1"))
M = Month(Range("B1"))
J = ActiveCell.Value
vdate = DateSerial(A, M, J)
' 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
' Nombre de jours depuis le début de l'année
n = DateSerial(Year(A), Month(M), Day(J)) - DateSerial(Year(A), 1, 1) + 1
' Calcul de l'équation du temps (EoT)
B = (n - 81) * (360 / 365)
EoT = 9.87 * Sin(2 * Application.WorksheetFunction.Radians(B)) - 7.53 * Cos(Application.WorksheetFunction.Radians(B)) - 1.5 * Sin(Application.WorksheetFunction.Radians(B))
' Calcul de l'heure du zénith solaire (en heures)
SolarNoon = 12 + (4 * Longitude - EoT) / 60
' Retourner l'heure du zénith en heures décimales
ZenithTime = SolarNoon
End Function
Sub testzenith()
Cells(20, 2) = ZenithTime(vdate, -3.36667)
End Sub
'***********************************************
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)...
' Nombre de jours depuis le début de l'année
n = vdate - DateSerial(A, 1, 1) + 1
comme quoi.. le soleil et la Bretagne...:-D
'***********************************************
Function ZenithTime(ByVal Date_ As Date, ByVal Longitude As Double) As Double
A = Year(Range("B1"))
M = Month(Range("B1"))
J = ActiveCell.Value
vdate = DateSerial(A, M, J)
' 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
' 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)
B = (n - 81) * (360 / 365)
EoT = 9.87 * Sin(2 * Application.WorksheetFunction.Radians(B)) - 7.53 * Cos(Application.WorksheetFunction.Radians(B)) - 1.5 * Sin(Application.WorksheetFunction.Radians(B))
' Calcul de l'heure du zénith solaire (en heures)
SolarNoon = 12 + (4 * Longitude - EoT) / 60
Debug.Print SolarNoon
' Retourner l'heure du zénith en heures décimales
ZenithTime = SolarNoon
End Function
Sub testzenith()
Cells(20, 2) = ZenithTime(vdate, -3.36667) 'Longitude Lorient = -3.36667
End Sub
Function ZenithTime(ByVal Date_ As Date, ByVal Longitude As Double) As Date
Pi = WorksheetFunction.Pi()
A = Year(Range("B1"))
M = Month(Range("B1"))
J = ActiveCell.Value
vdate = DateSerial(A, M, J)
' 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
' 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)
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 '/60 ?
' Retourner l'heure du zénith en heures décimales
ZenithTime = Format(SolarNoon, "h:mm:ss")
End Function
Sub testzenith()
Cells(20, 2) = ZenithTime(vdate, -3.36667)
End Sub
SolarNoon = 12 + 4 * Longitude + EoT
'***********************************************
Function ZenithTime(ByVal Date_ As Date, ByVal Longitude As Double) As Date
Pi = WorksheetFunction.Pi()
A = Year(Range("B1"))
M = Month(Range("B1"))
J = ActiveCell.Value
vdate = DateSerial(A, M, J)
' 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
' 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)
He = TimeSerial(2, 0, 0)
HL = HS + CL + He + TimeSerial(0, EoT, 0)
' Retourner l'heure du zénith en heures décimales
'ZenithTime = Format(SolarNoon, "h:mm:ss")
ZenithTime = Format(HL, "hh:mm:ss")
End Function
Function ZenithTime(ByVal Date_ As Date, ByVal longitude As Double) As Date
Pi = WorksheetFunction.Pi()
A = Year(Range("B1"))
M = Month(Range("B1"))
J = ActiveCell.Value
vdate = DateSerial(A, M, J)
longitude = -3.36667 'Lorient
' 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
' 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)
He = TimeSerial(2, 0, 0)
HL = HS + CL + He + TimeSerial(0, EoT, 0)
' Retourner l'heure du zénith en heures décimales
'ZenithTime = Format(SolarNoon, "h:mm:ss")
ZenithTime = Format(HL, "hh:mm:ss")
End Function
Sub testzenith()
longitude = -3.36667
Cells(20, 2) = ZenithTime(vdate, longitude)
End Sub
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
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)
He = TimeSerial(2, 0, 0)
HL = HS + CL + He + TimeSerial(0, EoT, 0)
' Retourner l'heure du zénith en heures
ZenithTime = Format(HL, "hh:mm:ss")
End Function
Sub testzenith()
MsgBox ZenithTime(DateSerial(2024, 8, 31), 3.36667)
End Sub
Function ZenithSolaire(Latitude As Double, Longitude As Double, DateChoisie As Date) As String
Dim JourJulien As Double
Dim T As Double
Dim Déclinaison As Double
Dim EquationTemps As Double
Dim HeureLocale As Double
' Calcul du jour Julien
JourJulien = DateChoisie + 2415018.5 + (TimeValue("12:00:00") / 24)
' Calcul du temps en siècles depuis J2000.0
T = (JourJulien - 2451545#) / 36525
' Calcul de la déclinaison solaire (en radians)
Déclinaison = 0.006918 - 0.399912 * Cos(T) + 0.070257 * Sin(T) - 0.006758 * Cos(2 * T) + 0.000907 * Sin(2 * T) - 0.002697 * Cos(3 * T) + 0.00148 * Sin(3 * T)
' Calcul de l'équation du temps (en minutes)
EquationTemps = 229.18 * (0.000075 + 0.001868 * Cos(T) - 0.032077 * Sin(T) - 0.014615 * Cos(2 * T) - 0.040849 * Sin(2 * T))
' Calcul de l'heure locale du zénith solaire
HeureLocale = 12 + Range("B3").Value + (Longitude / 15) - (EquationTemps / 60)
' Conversion de l'heure locale en heures et minutes
Dim Heure As Integer
Dim Minute As Integer
Heure = Int(HeureLocale)
Minute = Round((HeureLocale - Heure) * 60)
' Formatage de l'heure du zénith solaire en chaîne de caractères
ZenithSolaire = Format(Heure, "00") & ":" & Format(Minute, "00")
End Function
Sub CalculerZenith()
Dim Latitude As Double
Dim Longitude As Double
Dim DateChoisie As Date
Dim HeureZenith As String
' Exemple de latitude et de longitude (Lorient, France)
Latitude = 47.482524
Longitude = -3.3702449
' Date choisie
DateChoisie = Range("A2").Value 'DateValue("12/08/2024")
' Appel de la fonction
HeureZenith = ZenithSolaire(Latitude, Longitude, DateChoisie)
' Affichage de l'heure du zénith
Range("D2") = HeureZenith
MsgBox "L'heure du zénith solaire le " & DateChoisie & " est à " & HeureZenith
End Sub