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)...
mais je ne comprend pas.. je ne vois pas le code qui les renseigne...
À tout hasard, est-ce que ce n'est pas mis à jour par un PQ ?mais je ne comprend pas.. je ne vois pas le code qui les renseigne...
Salut mon JackyÀ tout hasard, est-ce que ce n'est pas mis à jour par un PQ ?
Exact, mais uniquement entre les lignes, pas les lignes elles-mêmes...tu lis entre les lignes
niveau code, j'ai l'impression qu'il y a des fonctions redondantes
CoucherSoleil, CoucherDUsoleil, levercouchersoleil.....
j'ai vu que pour le zenith, tu passais par la feuille "Lune" pour mettre le résultat avant de le mettre dans le formulaire... inutile..il vaut mieux le mettre directement dans le formulaire..
For i = 1 To .ListRows.Count
Interval = DateDiff("d", vdate, .DataBodyRange(i, 2))
If Interval > 1 Then
Texte = Hour(.DataBodyRange(i, 3)) & " h " & Minute(.DataBodyRange(i, 3)) & " min " & "dans " & Interval & " jours"
ElseIf Interval = 1 Then
Texte = Hour(.DataBodyRange(i, 3)) & " h " & Minute(.DataBodyRange(i, 3)) & " min " & "demain"
ElseIf Interval = 0 Then
Texte = Hour(.DataBodyRange(i, 3)) & " h " & Minute(.DataBodyRange(i, 3)) & " min " & "aujourd'hui"
End If
If Interval >= 0 Then
Select Case Asc(.DataBodyRange(i, 1))
Case 152
'Range("D17") = "Pleine Lune à " & Texte
Forme.Lbl_NextLune = "Pleine Lune à " & Texte
Case 130
'Range("D17") = "Premier Quartier à " & Texte
Forme.Lbl_NextLune = "Premier Quartier à " & Texte
Case 153
'Range("D17") = "Nouvelle Lune à " & Texte
Forme.Lbl_NextLune = "Nouvelle Lune à " & Texte
Case 131
'Range("D17") = "Dernier Quartier à " & Texte
Forme.Lbl_NextLune = "Dernier Quartier à " & Texte
End Select
Exit For
End If
Next i