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 »