[COLOR=DarkSlateGray][B]Function ISO([COLOR=Red]ByVal[/COLOR] r, Optional x As Byte = 0)
[COLOR=Sienna]' Transcription ISO d'une date grégorienne r.
'
'.__________________________________________________________________________________________.
'| | | | | |
'| x | retour | format | type | exemple |
'|___________|___________________|______________|________|__________________________________|
'| | | | | |
'| 0 ou omis | date ISO complète | "aaaa-WSS-J" | String |=ISO("3/3/2003") | 2003-W10-1 |
'| 1 | semaine ISO | "aaaa-WSS" | String |=ISO("3/3/2003";1) | 2003-W10 |
'| 2 | semaine ISO | SS | Double |=ISO("3/3/2003";2) | 10 |
'| |
'| Validité probable : lundi premier janvier 1900 - vendredi 31 décembre 9999 inclus. |
'|__________________________________________________________________________________________|
'[/COLOR]
Application.Volatile
Dim a&, b&
r = CDate(r)
r = r - (r < 61)
a = r - Weekday(r, vbMonday)
b = DateSerial(Year(a + 4), 1, 1)
ISO = IIf(x < 2, Year(b) & "-W", 0) + (Format((a - b + Weekday(b, vbMonday)) \ 7 + (Weekday(b, vbMonday) > 4) + 1, "00") & IIf(x < 1, "-" & Weekday(r, vbMonday), ""))
End Function[/B][/COLOR]