Premier et dernier lundi en VBA

Bonjour à tous,

je cherche à trouver le premier et le dernier lundi de l'année. Je souhaite le faire en VBA.

Merci pour votre aide.

Bonjour

Deux solutions en attendant de trouver mieux

Sub Test1()
Dim Jours As Date
Jours = CDate("01/01/2010")
While DatePart("w", Jours) <> 2
  Jours = Jours + 1
Wend
Debug.Print Jours

Jours = CDate("31/12/2010")
While DatePart("W", Jours) <> 2
  Jours = Jours - 1
Wend
Debug.Print Jours

End Sub

Sub Test2()
Dim Jours As Date
Jours = CDate("01/01/2010")
While Weekday(Jours, vbMonday) <> 1
  Jours = Jours + 1
Wend
Debug.Print Jours

Jours = CDate("31/12/2010")
While Weekday(Jours, vbMonday) <> 1
  Jours = Jours - 1
Wend
Debug.Print Jours

End Sub

Bonjour,

Et bonnes fêtes de fin d'année

Quelques codes :

Sub premier_et_dernier_lundis_de_l_annee()
Dim Annee

'Premier Lundi de l'année en cours
MsgBox Format(Evaluate("DATE(" & Year(Date) & ",1,8)-WEEKDAY(DATE(" & Year(Date) & ",1,6))"), "dddd dd mmmm yyyy")

'Dernier Lundi de l'année en cours
MsgBox Format(Evaluate("DATE(" & Year(Date) + 1 & ",1,1)-WEEKDAY(DATE(" & Year(Date) & ",12,31)-1)"), "dddd dd mmmm yyyy")

Do
    Do
        Annee = InputBox("Choisir l'Année")
    Loop Until IsNumeric(Annee) Or Annee = ""
    If Annee = "" Then Exit Sub
Loop Until Annee >= 1900

'Premier Lundi d'une année choisie
MsgBox Format(Evaluate("DATE(" & Annee & ",1,8)-WEEKDAY(DATE(" & Annee & ",1,6))"), "dddd dd mmmm yyyy")

'Dernier Lundi d'une année choisie
MsgBox Format(Evaluate("DATE(" & Annee + 1 & ",1,1)-WEEKDAY(DATE(" & Annee & ",12,31)-1)"), "dddd dd mmmm yyyy")
End Sub

Meilleurs vœux

Je viens d'appliquer, et d'ajuster selon mes besoins, vos solutions et ça fonctionne très très bien.

Je vous remercie infiniment.

Rechercher des sujets similaires à "premier dernier lundi vba"