[COLOR="DarkSlateGray"][B]Function GRG(r) [COLOR="Sienna"]'Transcription grégorienne d'une date ISO.[/COLOR]
Application.Volatile
Dim x, d1&
x = Split(r & "-1", "-")
d1 = DateSerial(x(0), 1, 1)
GRG = d1 - 7 - Weekday(d1, vbMonday) + (Replace(x(1), "W", "") - (Weekday(d1, vbMonday) > 4)) * 7 + x(2)
End Function
Function ISO(r) [COLOR="Sienna"]'Transcription ISO d'une date grégorienne.[/COLOR]
Application.Volatile
Dim d2&, d3&, d4&
d2 = r + 1 - Weekday(r, vbMonday)
d3 = DateSerial(Year(d2 + 3), 1, 1)
d4 = d3 + 1 - Weekday(d3, vbMonday) - (Weekday(d3, vbMonday) > 4) * 7
ISO = Year(d3) & "-W" & Format((d2 - d4) \ 7 + 1, "00") & "-" & Weekday(r, vbMonday)
End Function
Function normTITINE(r$) [COLOR="Sienna"]'Transcription "titine" d'une semaine ISO.[/COLOR]
Application.Volatile
normTITINE = Replace(Replace(Split(r, "-")(1), "W", "S"), "S0", "S") & Space(2) & Split(r, "-")(0)
End Function
Function normTITINE_2(r$)[COLOR="Sienna"] 'Transcription "titine" d'une date grégorienne.[/COLOR]
Application.Volatile
Dim x
x = Split(r & "-0", "-")
normTITINE_2 = Array(Trim(Array("", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche")(x(2)) & _
" "), Replace(Replace(x(1), "W", "S"), "S0", "S"), x(0))
End Function
Function sISO(r) [COLOR="Sienna"]'Correction d'une date ISO erronée.[/COLOR]
Application.Volatile
Dim x, d1&, d2&, d3&, d4&
x = Split(r & "-1", "-")
d1 = DateSerial(x(0), 1, 1)
d2 = d1 - 6 - Weekday(d1, vbMonday) + (Replace(x(1), "W", "") - (Weekday(d1, vbMonday) > 4)) * 7
d3 = DateSerial(Year(d2 + 3), 1, 1)
d4 = d3 + 1 - Weekday(d3, vbMonday) - (Weekday(d3, vbMonday) > 4) * 7
sISO = Array(Year(d3) & "-W" & Format((d2 - d4) \ 7 + 1, "00") & "-" & x(2), d1, d2, d3, d4)
End Function[/B][/COLOR]