Bonjour le fil, bonjour le forum,
Une proposition VBA :
Sub Macro2()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim M As Byte 'déclare la variable M (Mois)
Dim D1 As Date 'déclare la variable D1 (Date 1)
Dim D2 As Date 'déclare la variable D2 (Date 2)
Dim I As Date 'déclare la variable I (Incrément)
Dim LI As Integer 'déclare la variable LI (LIgne)
Set O = Worksheets("Feuil1") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, "J").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne J de l'onglet O
M = Month(Date) 'définit le mois e cours M
D1 = DateSerial(Year(Date), M, 1) 'définit la date D1 (premier jour du mois en cours)
D2 = D1 + 7 'définit la date D2 (D1 plus 7 jours)
If Weekday(D1) = 1 Then D1 = D1 + 1 'si le jour de la semaine de D1 est un dimanche, D1 devient D1 plus un jour
If Weekday(D1) = 7 Then D1 = D1 + 2 'si le jour de la semaine de D1 est un samedi, D1 devient D1 plus deux jours
Range("B2").Value = Format(D1, "dddd dd/mm/yyyy")
For I = D1 To D1 + 7 'boucle sur 7 jours de D1 à D1 plus 7
If Weekday(I) = 2 Then 'condition 1 : si le jour de la semaine de la date I est un lundi
For LI = 4 To DL 'boucle 2 : sur toutes les lignes LI des jours fériés en colonne J
'condition 2 : si la date I est fériée
If DateSerial(Year(O.Cells(LI, "J")), Month(O.Cells(LI, "J")), Day(O.Cells(LI, "J"))) = I Then
I = I + 1 'I devient I plus un jour
End If 'fin de la condition 2
Next LI 'prochaine ligne de la boucle 2
Range("B3") = Format(I, "dddd dd/mm/yyyy") 'renvoie en B3 la date I au format JJJJ JJ/MM/AAAA
Exit For 'sort de la boucle 2
End If 'fin de la condition 1
Next I 'prochain jour de la boucle 1
For I = D2 To D2 + 7 'boucle sur 7 jours de D2 à D2 plus 7
If Weekday(I) = 2 Then 'condition 1 : si le jour de la semaine de la date I est un lundi
For LI = 4 To DL 'boucle 2 : sur toutes les lignes LI des jours fériés en colonne J
'condition 2 : si la date I est fériée
If DateSerial(Year(O.Cells(LI, "J")), Month(O.Cells(LI, "J")), Day(O.Cells(LI, "J"))) = I Then
I = I + 1 'I devient I plus un jour
End If 'fin de la condition 2
Next LI 'prochaine ligne de la boucle 2
Range("B4") = Format(I, "dddd dd/mm/yyyy") 'renvoie en B3 la date I au format JJJJ JJ/MM/AAAA
Exit For 'sort de la boucle 2
End If 'fin de la condition 1
Next I 'prochain jour de la boucle 1
End Sub