Quelle fonction nous permettra de savoir si une date dans VBA est en heure d'été ou non?Comment déterminez-vous l'heure avancée en VBA?
Répondre
Pour les dates non courants (DST) 2007+:
D'abord, vous avez besoin d'une fonction pour trouver le nombre de semaine spécifiques en un mois:
Public Function NDow(Y As Integer, M As Integer, _
N As Integer, DOW As Integer) As Date
' Returns Date of Nth Day of the Week in Month
NDow = DateSerial(Y, M, (8 - Weekday(DateSerial(Y, M, 1), _
(DOW + 1) Mod 8)) + ((N - 1) * 7))
End Function
Ensuite, vous pouvez vérifier pour la journée DST par rapport à la fonction suivante appelle:
automne: Ndow (Année (newdate), 11, 1, 1)
printemps: Ndow (Année (newdate), 3, 2, 1)
Pour la date actuelle:
Appelez la fonction API Windows GetTimeZoneInformation, et il retournera un ENUM (entier) avec le statut.
J'ai obtenu le code pour cela à partir de l'excellent site Excel de Chip Pearson.
Sauf que cela diffère par pays. –
Pour ceux qui se demandent comment tenir compte de l'heure d'été en Europe (heure d'Europe centrale), j'ai modifié le script de Chip Pearson. Le dernier dimanche de mars (de 2 h à 3 h) et d'octobre (de 3 h à 2 h) sont les jours où l'heure change.
code suivant est l'événement de clic d'un bouton dans Excel:
Dim dates As String
dates = "A1:A20"
For Each c In Worksheets("Sheet1").Range(dates).Cells
If (IsDateWithinDST(c.Value)) Then
c.Value = DateAdd("h", 1, c.Value)
End If
Next
Le module contenant les méthodes nécessaires se trouvent here.
Bonne question! Pourquoi downvotes ?! –