Function ProchaineDateLivraison(dateEntree As Date) As Date
Dim jourSemaine As Integer
jourSemaine = Weekday(dateEntree, vbMonday)
' Calcul basé sur le jour de la semaine de la date d'entrée
Select Case jourSemaine
Case 1 ' Lundi
ProchaineDateLivraison = DateAdd("d", 4, dateEntree) ' Vendredi de la même semaine
Case 2, 3 ' Mardi ou Mercredi
ProchaineDateLivraison = DateAdd("d", 3, dateEntree) ' Vendredi de la même semaine
Case 4, 5, 6, 7 ' Jeudi à Dimanche
ProchaineDateLivraison = DateAdd("d", 3 + (8 - jourSemaine), dateEntree) ' Lundi de la semaine suivante
End Select
' Ajouter 2 jours ouvrés pour le délai de préparation
If Weekday(ProchaineDateLivraison, vbMonday) = 5 Then ' Si c'est un vendredi
ProchaineDateLivraison = DateAdd("d", 3, ProchaineDateLivraison) ' Report au lundi suivant
Else
ProchaineDateLivraison = DateAdd("d", 2, ProchaineDateLivraison) ' Ajout de 2 jours ouvrés
End If
End Function
Sub CalculerDateLivraison()
Dim dateEntree As Date
dateEntree = Range("T10").Value
Range("T3").Value = ProchaineDateLivraison(dateEntree)
End Sub