Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

DATE : calcul du 1er lundi du mois ou de l'année

3 réponses
Avatar
Teddy
Essaie ces fonctions :

Private Function FirstMondayOfMonth _
( _
ByRef iYear As Integer, _
ByRef iMonth As Integer _
) As Date

If Weekday(DateSerial(iYear, iMonth, 1), vbMonday) = 1 Then
FirstMondayOfMonth = DateSerial(iYear, iMonth, 1)
Else
FirstMondayOfMonth = DateSerial(iYear, iMonth, 1) + (8 -
Weekday(DateSerial(iYear, iMonth, 1), vbMonday))
End If

End Function

Private Function MondaysOfMonth _
( _
ByRef iYear As Integer, _
ByRef iMonth As Integer _
) As Date()

Dim dt() As Date
Dim i As Integer

ReDim dt(0)
dt(0) = FirstMondayOfMonth(iYear, iMonth)
Do While Month(dt(i) + 7) = iMonth
i = i + 1
ReDim Preserve dt(i)
dt(i) = dt(i - 1) + 7
Loop

MondaysOfMonth = dt

End Function

Private Function MondaysOfYear _
( _
ByRef iYear As Integer _
) As Date()

Dim dt() As Date
Dim i As Integer

ReDim dt(0)
dt(0) = DateSerial(iYear, 1, 1)
Do While Year(dt(i) + 7) = iYear
i = i + 1
ReDim Preserve dt(i)
dt(i) = dt(i - 1) + 7
Loop

MondaysOfYear = dt

End Function

--
Cordialement
Zoury

Microsoft Visual Basic MVP
_________________________________________
Merci de répondre dans le newsgroup ,`:O)

La FAQ VB
http://faq.vb.free.fr

API-Guide, indispensable pour les APIs
http://www.allapi.net/agnet/apiguide.shtml

Mz-Tools, add-in pour VB
http://www.mztools.com/

*************************************************************
"vinny" <vbernier@sto.ca> wrote in message
news:017501c2d847$be09dbf0$a201280a@phx.gbl...
Salut,

Est-ce quelqu'un peux me dire si une fonction existe pour
déterminer la date de tous les lundi, soit pour un mois
ou pour une année.

Merci

3 réponses

Avatar
le_troll
Ah, ben si c'est le 1er lundi du mois ou de l'année, ça avance, lol, avant
c'était le numéro du premier jour de la semaine, je propose en 17 lignes :

dim date_base as date
dim lundi(12) as date
dim i as long
dim j as long
date_base = "31" & "/" & format(j,"00") & "/" & N-1
j = 1
for i = 1 to 366
date_base = date_base + i
bis:
if WeekDay(date_base) = 2 then
lundi(j) = date_base
j = j + 1
if j > 12 then exit for
date_base = "01" & "/" & format(j,"00") & "/" & N
goto bis
endif
next i

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


" Teddy" a écrit dans le message de news:

Essaie ces fonctions :

Private Function FirstMondayOfMonth _
( _
ByRef iYear As Integer, _
ByRef iMonth As Integer _
) As Date

If Weekday(DateSerial(iYear, iMonth, 1), vbMonday) = 1 Then
FirstMondayOfMonth = DateSerial(iYear, iMonth, 1)
Else
FirstMondayOfMonth = DateSerial(iYear, iMonth, 1) + (8 -
Weekday(DateSerial(iYear, iMonth, 1), vbMonday))
End If

End Function

Private Function MondaysOfMonth _
( _
ByRef iYear As Integer, _
ByRef iMonth As Integer _
) As Date()

Dim dt() As Date
Dim i As Integer

ReDim dt(0)
dt(0) = FirstMondayOfMonth(iYear, iMonth)
Do While Month(dt(i) + 7) = iMonth
i = i + 1
ReDim Preserve dt(i)
dt(i) = dt(i - 1) + 7
Loop

MondaysOfMonth = dt

End Function

Private Function MondaysOfYear _
( _
ByRef iYear As Integer _
) As Date()

Dim dt() As Date
Dim i As Integer

ReDim dt(0)
dt(0) = DateSerial(iYear, 1, 1)
Do While Year(dt(i) + 7) = iYear
i = i + 1
ReDim Preserve dt(i)
dt(i) = dt(i - 1) + 7
Loop

MondaysOfYear = dt

End Function

--
Cordialement
Zoury

Microsoft Visual Basic MVP
_________________________________________
Merci de répondre dans le newsgroup ,`:O)

La FAQ VB
http://faq.vb.free.fr

API-Guide, indispensable pour les APIs
http://www.allapi.net/agnet/apiguide.shtml

Mz-Tools, add-in pour VB
http://www.mztools.com/

*************************************************************
"vinny" wrote in message
news:017501c2d847$be09dbf0$
Salut,

Est-ce quelqu'un peux me dire si une fonction existe pour
déterminer la date de tous les lundi, soit pour un mois
ou pour une année.

Merci




Avatar
Zoury
une petite erreur s'était glisser dans le code à l'époque. C'est ma faute
j'avoue.. ;O)

dans la fonction MondaysOfYear, il faut remplacer cette ligne :
dt(0) = DateSerial(iYear, 1, 1)


ceci :
dt(0) = FirstMondayOfMonth(iYear, 1)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
Avatar
Teddy
ok.

"Zoury" a écrit dans le message de
news:
une petite erreur s'était glisser dans le code à l'époque. C'est ma faute
j'avoue.. ;O)

dans la fonction MondaysOfYear, il faut remplacer cette ligne :
> dt(0) = DateSerial(iYear, 1, 1)
ceci :
dt(0) = FirstMondayOfMonth(iYear, 1)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/