XL 2013 prise en compte weekend et ferier

sebastien34

XLDnaute Nouveau
bonjour a tous,

j'ai deux tableaux, le "feuil1" qui est ma base de travail, alimenté par un logiciel extérieur (je ne peux donc pas faire de modification).
le deuxième (livraison)qui est le tableau généré par VGA.

il s'agit de livraisons par différents fournisseurs.
les jours sont divisé en 2, une colonne pour les commandes et une pour les livraison.

mon soucie est que les weekends et féries ne sont pas pris en compte

si quelqu'un a des idées, je suis preneur.
merci a tous
 

Pièces jointes

  • CalculDelaisLivraison.xlsm
    36.7 KB · Affichages: 32

Bebere

XLDnaute Barbatruc
bonjour
Sebastien bienvenue
regarde feuil2 et tu verras que tu as toutes les dates
tu pourrais disposer les données comme une base de données,plus facile pour faire des filtres,extractions,tcd,etc
 

Pièces jointes

  • CalculDelaisLivraison.xlsm
    41.5 KB · Affichages: 26

sebastien34

XLDnaute Nouveau
bonjour Bebere,
merci d'avoir pris le temps de regarder mon fichier.
j'ai du mal m'expliqué,
sur la feuil( c'est un copié/coller) d'une extraction du logiciel.
dessus tu retrouve, les différents entrepôts livreurs avec les jours de commandes.(elle n'est pas modifiable)

sur la feuille livraison,
je recopie les entrepôts et les jours de commande, ensuite je cherche a visualiser les jours de livraison.
exemple: contrat 01, commande le 03/05/18, livraison le 04/05/18.

la ou je rencontre des problèmes, c'est par exemple commande le 04/05/18 livraison le 05.
c'est un samedi, il ne le prend pas en compte, idem pur la commande du 05.
 

sebastien34

XLDnaute Nouveau
la commande est indiqué par un chiffre sur une des journée
exemple: feuille Livraison
ligne n°3 bordeaux contrat 1
date du 03/05/18 colonne "commande"= chiffre 1
cela veux dire que le 3 mai j'ai une commande.

le chiffre indique le nombre de jour avant livraison
c'est a dire que la je serais livrais le 04 mai (03/05 + 1 = 04 mai)
si j'ai le chiffre 2 a la place je serais livre le 05 mai.

je suis livré les samedis et jours fériés, mais mon fichier VGA ne pas pas en compte les weekends et fériés.
il faut que je trouve la syntaxe pour avoir tous les jours de la semaine
 

Bebere

XLDnaute Barbatruc
Bonsoir
Sebastien
je pense que la fonction workday pose problème,mis une addition à la place
ajout d'un point devant range("E1") ligne autofill

Code:
Sub calculdelais()
Application.ScreenUpdating = False
Dim Tablo() As Variant
Dim TabFinal() As Variant

With Sheets("Feuil1")
    Tablo = .UsedRange.Value
End With
With Sheets("livraison")
    .UsedRange.Clear
End With

NbCol = 2 * (UBound(Tablo, 2) - 4) + 4
ReDim TabFinal(1 To UBound(Tablo, 1), 1 To NbCol)

For i = LBound(Tablo, 1) To UBound(Tablo, 1)
    For j = LBound(Tablo, 2) To 4
        TabFinal(i, j) = Tablo(i, j)
    Next j
   
    For j = 5 To UBound(Tablo, 2)
        If i = 1 Then
            jour = Split(Tablo(i, j), " ")(1)
            TabFinal(i, 2 * j - 5) = DateSerial(2018, Split(jour, "/")(1), Split(jour, "/")(0)) 'les dates
        Else
        If Tablo(i, j) <> "" Then
            TabFinal(i, 2 * j - 5) = Tablo(i, j)
        TabFinal(i, 2 * j - 4) = TabFinal(1, 2 * j - 5) + Tablo(i, j) 'Format(WorksheetFunction.WorkDay(TabFinal(1, 2 * j - 5), TabFinal(i, 2 * j - 5)), "yyyy/mm/dd")
        End If
        End If
    Next j
Next i
With Sheets("Livraison")
    .Range("A1").Resize(UBound(TabFinal, 1), UBound(TabFinal, 2)) = TabFinal
    'Mise en forme de la feuille
    .Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    .Range("A2:D2").Cut Destination:=.Range("A1:D1")
    .Range("E1").FormulaR1C1 = "Com"
    .Range("F1").FormulaR1C1 = "Livr"
    .Range("E1:F1").AutoFill Destination:=.Range("E1").Resize(1, NbCol - 4), Type:=xlFillDefault
   
    For i = 5 To NbCol Step 2
        With .Cells(2, i).Resize(1, 2)
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = True
        End With
    Next i

    With .Cells
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
    End With
    .Columns("E").Resize(, NbCol - 5).ColumnWidth = 12
   
    .UsedRange.Select
   
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
End With
Application.ScreenUpdating = True
End Sub
 

sebastien34

XLDnaute Nouveau
bonjour Bebere,
désole pour la réponse qui a un peu traîner, mais je suis a l’hôpital quelques jours.
j'ai rajouté le point, mais je ne comprend pas se que tu veux dire par "mais une addition a la place".
il faut dire que je ne suis pas très doué en VBA.:(
en fait je voudrai juste que le calcul des livraisons se face mêmes pour les samedi et dimanche, exemple: le 12 et 13 mai sur le document.
 

sebastien34

XLDnaute Nouveau
bonjour Bebere,
j'ai un code qui bloque.

Code:
   With Sheets("livraison")
        .ListObjects("TblLivraison").Unlist    'TblLivraison
        .UsedRange.Clear
    End With

pense tu qui est possible de rester sur l'ancien format du tableau de livraison?, il est plus claire a lire.
 

Discussions similaires

Réponses
50
Affichages
4 K