XL pour MAC Besoin d'aide pour calculer automatiquement un jour de livraison dans Excel

ArnaudSi

XLDnaute Nouveau
Bonjour à tous,

Je me heurte à un problème dans Excel pour lequel j'aurais besoin de votre aide. Dans mon entreprise, nous avons des règles spécifiques pour la livraison de nos produits à certains clients, et je cherche à automatiser le calcul de la date de livraison dans Excel pour faciliter notre gestion.

Voici les détails de ma requête :

  • Contexte : Nous utilisons un fichier Excel nommé "Saisie", et la feuille concernée pour ce calcul est "Calcul".
  • Exigence spécifique : La date de livraison doit être calculée et affichée dans la cellule T10. Nous réalisons des livraisons uniquement le lundi ou le vendredi.
  • Contraintes:
    • Il nous faut un minimum de 2 jours ouvrés pour préparer une commande avant la livraison.
    • Notre entreprise est fermée le samedi et le dimanche, ce qui doit être pris en compte dans le calcul.
  • Entrée de donnée : La date du jour est saisie dans la cellule T3.
Je souhaiterais une formule ou un script VBA qui pourrait calculer automatiquement le prochain jour de livraison (lundi ou vendredi) en tenant compte des contraintes mentionnées et l'afficher dans la cellule T10.

Pourriez-vous m'aider à rédiger le code ou la formule appropriée pour répondre à ce besoin ? J'utilise Excel sur Mac OS, donc si des spécificités sont à prendre en compte pour cette plateforme, merci de me les indiquer.

Je vous remercie par avance pour votre aide et vos suggestions !
 

ArnaudSi

XLDnaute Nouveau
Dans VBA Feuille"calcul" j'ai placé :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("L3")) Is Nothing Then
        Call CalculerDateLivraison
    End If
End Sub

Dans VBA Feuille"This Workbook" j'ai placé :
Code:
Private Sub Workbook_Open()
    Sheets("Calcul").Range("T3").Value = Date
End Sub

Dans VBA Module j'ai placé :
VB:
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
 

Pièces jointes

  • Saisie.xlsm
    46.5 KB · Affichages: 3

ArnaudSi

XLDnaute Nouveau
Bonjour à tous,

Le 5 mars est le temps de deux jours pour la préparation de commande , il faut regarder en "T10" pour la date de livraison

JHA
Ok, merci. Afin de préciser ma requête ; il y a deux tournées de livraison dans la semaine; une qui est effectué pour certains clients le vendredi, et pour d'autre clients le lundi. Lorsque l'on sélectionne le client le jour de livraison s'affiche dans la cellule T10. Y a t il possibilité de prendre ce critère? Merci.
 

Discussions similaires

Réponses
3
Affichages
365
Réponses
21
Affichages
935

Statistiques des forums

Discussions
312 206
Messages
2 086 227
Membres
103 159
dernier inscrit
FBallea