Bonjour ,
je suis sur un fichier qui a été modifié dernierement par Cow 18 et dont la premiere partie a besoin d’une petite evolution.
J’ai dans la première macro du fichier une execution qui va ,a partir de l’onglet « ORDO » copier et fractionner les lignes vers l’onglet « PLANIF » .
Le fractionnement se fait au niveau des quantité (colonne « E ») qui sont a repartir de la facon suivante :
1/3 la veille et 2/3 le jour J.
La macro suivante fait le job :
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 "ORDO" 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
With planifWs
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = veilleDate
.Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0).Value = ws.Cells(i, 2).Value
.Cells(.Rows.Count, 3).End(xlUp).Offset(1, 0).Value = ws.Cells(i, 3).Value
.Cells(.Rows.Count, 4).End(xlUp).Offset(1, 0).Value = ws.Cells(i, 4).Value
.Cells(.Rows.Count, 5).End(xlUp).Offset(1, 0).Value = veilleQuantite
.Cells(.Rows.Count, 7).End(xlUp).Offset(1, 0).Value = "a"
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = jourJDate
.Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0).Value = ws.Cells(i, 2).Value
.Cells(.Rows.Count, 3).End(xlUp).Offset(1, 0).Value = ws.Cells(i, 3).Value
.Cells(.Rows.Count, 4).End(xlUp).Offset(1, 0).Value = ws.Cells(i, 4).Value
.Cells(.Rows.Count, 5).End(xlUp).Offset(1, 0).Value = jourJQuantite
End With
End If
Next i
End Sub
Mais je souhaiterai pouvoir ajouter en colonne « G » de « PLANIF » la lettre « a » lorsqu’il s’agit d’une ligne j-1 voir j-3 lorsque J est un lundi ,j’ai bien tenté d’ajouter :
.Cells(.Rows.Count, 7).End(xlUp).Offset(1, 0).Value = « a » mais cela ajoute « a » mais pas sur toute les bonnes lignes.
Un petit coup de pouce serait une fois de plus le bienvenu.
Merci !!
test deb 2025(2)(1).xlsm (64,4 Ko)