If WeekDay(Date1 ,2)=7 then Date1 = DateAdd("m", -1, Date1)
Bonjour Arpette,
Voudrais-tu expliciter le contenu sémantique de ta question?
A+
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Worksheets("Relevé_Hebdo").Unprotect
Sheets("Récap_Mensuelle").Select
If Cells(4, 1) = Empty Then
Dim mois As String
Dim Année As String
Dim Titre As String
Dim Récap_Mensuelle As String
Dim Relevé_Hebdo As String
Dim Semaine As String
Dim Sme As String
Dim c As Range
Dim DateDepart As Date
Dim Sunday As Integer
Dim D As Date
Dim j As Date
Dim k As Date
'Date départ au 1er du mois
DateDepart = DateSerial(Year(Date), Month(Date), 1)
k = DateDepart
D = Date
j = D + 1 - DatePart("w", D, vbMonday, vbFirstFourDays)
mois = Format(j + 3, "mmmm") 'mois contenant au moins 4 jours de la semaine.
Année = Format(DateDepart, "yyyy")
Titre = "MOIS DE" & " " & mois & " " & Année
Cells(4, 1) = UCase(Titre)
Sheets("Relevé_Hebdo").Select
Worksheets("Relevé_Hebdo").Unprotect
mois = Format(j + 3, "mmmm")
Année = Format(Now, "yyyy")
Titre = "MOIS DE" & " " & mois & " " & Année
Cells(1, 1) = UCase(Titre)
If D > k Then
D = k + 1
Else
D = D
End If
For Each c In Range("C1,E1,G1,I1,K1")
j = D + 1 - DatePart("w", D, vbMonday, vbFirstFourDays)
c = "Sem " & DatePart("ww", j, vbMonday, vbFirstFourDays)
D = D + 7 'DateDepart = DateDepart + 7 'Incrémente la date de 7 jours (1 semaine)
Next
Worksheets("Relevé_Hebdo").Protect
End If
Application.ScreenUpdating = True
End Sub
Post#1 à dit:je souhaite vérifier si DatePart est Dimanche. Si c'est le cas, je souhaite que DatePart soit DatePart du mois précédant.
ton dernier post à dit:Le problème, c'est que si le 1er du mois est un dimanche et que j'ouvre le classeur, le dimanche est sur le mois précédant
Bonsoir tototiti, c'est exactement se que je voulais, çà fonctionne à merveille.Bonsoir Arpette,
DatePart étant une fonction VBA (à moins que ce soit aussi le nom d'une fête religieuse que je ne connais pas ), je suppose que tu veux réaliser ça en VBA...
En admettant que tu ais une variable Date1 contenant la date concernée, à tester :
Code:If WeekDay(Date1 ,2)=7 then Date1 = DateAdd("m", -1, Date1)
Bonsoir tototiti, c'est exactement se que je voulais, çà fonctionne à merveille.
Merci à vous deux
'Date départ au 1er du mois
DateDepart = DateSerial(Year(Date), Month(Date), 1)
k = DateDepart
If Weekday(k, 2) = 7 Then
k = DateAdd("m", -1, k)
Else
k = DateDepart
End If
Sub test()
Dim DateDepart As Date, k As Date
DateDepart = DateSerial(Year(Date), Month(Date), [COLOR="Red"][B]2[/B][/COLOR])
k = DateDepart
If Weekday(k, 2) = 7 Then
k = DateAdd("m", -1, k)
Else
k = DateDepart
End If
End Sub
bonjour Arpette,Hasco,Pierrot
chez moi c'est ok
change If Weekday(k, 2) = 7 Then par If Weekday(k) = vbSunday Then
à bientôt
DateDepart = DateSerial(Year(Date), Month(Date), 1)
k = DateDepart
D = Date
If D <> k Then
ElseIf Weekday(D) = vbSunday Then
k = DateAdd("m", -1, k)
Else
k = DateDepart
End If