Quantités a repartir sur la semaine

Bonjour à tous !
J’ai un fichier d’ordonnancement que je souhaite modifier en reaffectant les quantités sur deux jours en les fractionnant 1/3 la veille et 2/3 le jour J .
On ne travaille pas le samedi ni dimanche donc il faut en tenir compte dans la réaffectation des quantités.
Ci joint le fichier avec un exemple de ce que souhaite obtenir de l’onglet « Ordo » vers « PLANIF ».
Merci d’avance.
Franck
test -1.xlsm (14,0 Ko)

Bonjour ,
j’ai recu de l’aide d’un ami qui m’a resolu mon problème ,pour ceux que cela peut interresser voici les lignes :

Sub FiltrerEtRepartirQuantite()
Dim ws As Worksheet
Dim planifWs As Worksheet
Dim lastRow As Long
Dim i As Long
Dim veilleQuantite As Double
Dim jourJQuantite As Double
Dim jourJDate As Date
Dim veilleDate As Date

' Définir la feuille de calcul active
Set ws = ThisWorkbook.Sheets("ORDO") ' Remplacez "Sheet1" par le nom de votre feuille de calcul

' Créer ou sélectionner la feuille PLANIF
On Error Resume Next
Set planifWs = ThisWorkbook.Sheets("PLANIF")
If planifWs Is Nothing Then
    Set planifWs = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    planifWs.Name = "PLANIF"
End If
On Error GoTo 0

' Trouver la dernière ligne de la feuille active
lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

' Parcourir les lignes et filtrer les lignes "EMBALLAGE"
For i = 2 To lastRow
    If ws.Cells(i, 2).Value = "EMBALLAGE" Then
        jourJDate = ws.Cells(i, 1).Value
        veilleQuantite = ws.Cells(i, 5).Value / 3
        jourJQuantite = ws.Cells(i, 5).Value * 2 / 3
        
        ' Vérifier si jour J est un lundi et planifier au vendredi précédent
        If Weekday(jourJDate, vbMonday) = 1 Then
            veilleDate = jourJDate - 3
        Else
            veilleDate = jourJDate - 1
        End If
        
        ' Copier les données dans la feuille PLANIF
        planifWs.Cells(planifWs.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = veilleDate
        planifWs.Cells(planifWs.Rows.Count, 2).End(xlUp).Offset(1, 0).Value = ws.Cells(i, 2).Value
        planifWs.Cells(planifWs.Rows.Count, 3).End(xlUp).Offset(1, 0).Value = ws.Cells(i, 3).Value
        planifWs.Cells(planifWs.Rows.Count, 4).End(xlUp).Offset(1, 0).Value = ws.Cells(i, 4).Value
        planifWs.Cells(planifWs.Rows.Count, 5).End(xlUp).Offset(1, 0).Value = veilleQuantite
        
        planifWs.Cells(planifWs.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = jourJDate
        planifWs.Cells(planifWs.Rows.Count, 2).End(xlUp).Offset(1, 0).Value = ws.Cells(i, 2).Value
        planifWs.Cells(planifWs.Rows.Count, 3).End(xlUp).Offset(1, 0).Value = ws.Cells(i, 3).Value
        planifWs.Cells(planifWs.Rows.Count, 4).End(xlUp).Offset(1, 0).Value = ws.Cells(i, 4).Value
        planifWs.Cells(planifWs.Rows.Count, 5).End(xlUp).Offset(1, 0).Value = jourJQuantite
    End If
Next i

End Sub

Bon week-end à tous !!

1 « J'aime »