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)...
Oui effectivement, désolé.Question
le rond noir et le rond blanc ==> lequel est nouvelle lune ou Pleine lune?
si il y a inversion (ce que je pense) il te suffit d'inverser dans le select case, les valeurs 152 et 153
Merci,Ca donne ca
Forme.dif_ensoleil = "(" & IIf(EnsolPréc > EnsolJour, "-", "+") & Format(Minute(EnsolPréc - EnsolJour), "00") & " min)"
Vous me bluffé à chaque fois, j'ai essayé des choses pourtantsuffit de changer le format d'affichage du résultat
VB:Forme.dif_ensoleil = "(" & IIf(EnsolPréc > EnsolJour, "-", "+") & Format(Minute(EnsolPréc - EnsolJour), "00") & " min)"
Sub JoursRestantsAvantProchaineSaison()
Dim DateAuj As Date
Dim DatePrintemps As Date
Dim DateEte As Date
Dim DateAutomne As Date
Dim DateHiver As Date
Dim ProchaineSaison As Date
Dim JoursRestants As Long
' Date actuelle
DateAuj = Date
' Définir les dates de début des saisons pour l'année en cours
DatePrintemps = DateSerial(year(DateAuj), 3, 20)
DateEte = DateSerial(year(DateAuj), 6, 21)
DateAutomne = DateSerial(year(DateAuj), 9, 23)
DateHiver = DateSerial(year(DateAuj), 12, 21)
' Déterminer la prochaine saison
If DateAuj < DatePrintemps Then
ProchaineSaison = DatePrintemps
Message = "Le Printemps"
ElseIf DateAuj < DateEte Then
ProchaineSaison = DateEte
Message = "l'Été"
ElseIf DateAuj < DateAutomne Then
ProchaineSaison = DateAutomne
Message = "l'Automne"
ElseIf DateAuj < DateHiver Then
ProchaineSaison = DateHiver
Message = "l'Hiver"
Else
' Si la date actuelle est après le début de l'hiver, la prochaine saison est le printemps de l'année suivante
ProchaineSaison = DateSerial(year(DateAuj) + 1, 3, 20)
End If
' Calculer les jours restants
JoursRestants = ProchaineSaison - DateAuj
' Afficher le résultat
'MsgBox "Il reste " & JoursRestants & " jours avant la prochaine saison (" & Format(ProchaineSaison, "dd mmmm yyyy") & ")(" & Message & ")."
MsgBox "Il reste " & JoursRestants & " jours avant " & Message & " ( le " & Format(ProchaineSaison, "dd mmmm yyyy") & " )."
End Sub
Bonjour,Hello
il va falloir te familiariser avec "format()"
les variables qu'on affiche dans le module soleil (LeverTU, CoucherTU, Zenith....) sont déclarées en format "Date" (jour mois annee, heure minute seconde)
format permet d'afficher ce que tu veux
format(LeverTU,"dd mm yyyy") ==>15 08 2024
format(LeverTU,"ddd mm yyyy")==>Lun 08 2024
format(LeverTU,"ddd dd mm yyyy")==> Lun 15 08 2024
format(LeverTU,"ddd dd mmm yyyy")==>Lun 15 Aout 2024
format(LeverTU,"hh:mm:ss")==> 06:50:00
format(LeverTU,"hh:m")==>06:50
etc etc...
Dans la macro que tu donnes, je ne vois rien qui écrive dans un Userform.je retouche encore et revient une dernière fois sur le sujet, est ce qu'il y a moyen de retirer les ( :00 )
sur les heures soleils, j'essaie de réduire en l'argeur l'userform.
Salut l'ami,Mais j'ai peut-être encore lu entre les lignes...
Ok, donc tu as posté un code qui en fait n'avait rien à voir avec le problème de format...oui je pense, le principale du code et dans (Worksheet_SelectionChange)(Calendrier)
si tu avais ouvert le fichier