Sub PLANNING_MAGA()
'
' PLANNING_MAGA Macro
' Macro automatisant le planning du magasin
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.DisplayStatusBar = False
'Ouvrir le planning maga Flux 1&2, créer une feuille, coller les données, créer le TCD (RAJOUTER OUVERTURE DU FICHIER!!!)
'Workbooks.Open Filename:= _
"file:///I:\400_LTS\09_BI\070_IND\05_ChargeCapa\Fichiers annexes\Montage Neuf\Ordo\(NE_PAS_MODIFIER)_PLANNING_MNT_Flux 1&2.xlsm", UpdateLinks:=3
Workbooks("(NE_PAS_MODIFIER)_PLANNING_MNT_Flux 1&2.xlsm").Activate
Sheets("Data_MNT_1").Visible = True
Sheets("Data_MNT_1").Activate
Application.Calculation = xlCalculationAutomatic
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select
'Copier les données Flux 1
Windows("Fichier Synthèse OF - Flux 1.xlsm").Activate
Sheets("Synthèse OF - Flux 1").Activate
ActiveSheet.Range("$A$8:$AJ$10000").AutoFilter Field:=16, Criteria1:="<>#N/A"
Range("D:D,J:J,P:P").Select
Range("P1").Activate
Selection.Copy
Workbooks("(NE_PAS_MODIFIER)_PLANNING_MNT_Flux 1&2.xlsm").Worksheets("Data_MNT_1").Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("1:7").Select
Range("A7").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Columns("B:B").Cut Destination:=Columns("D:D")
Columns("A:A").Cut Destination:=Columns("E:E")
Columns("A:B").Select
Range("A1").Activate
Selection.Delete Shift:=xlToLeft
'Création de la variable contenant le nombre de lignes
Dim nb_lig_data As Long, nb_lig_planning As Long
nb_lig_data = Range("B" & Rows.Count).End(xlUp).Row
'Déduire le délai de 7 jours ouvrés entre le besoin pour l'ilot et la date de début de préparation par le magasin
Windows("(NE_PAS_MODIFIER)_PLANNING_MNT_Flux 1&2.xlsm").Activate
Columns("B:B").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B2").Formula = "=IF(A2="""","""",WORKDAY(A2,-7))"
Range("B2").AutoFill Destination:=Range("B2:B" & nb_lig_data)
Range("B2:B" & nb_lig_data).Select
Range("A1").Copy
Range("B1").Select
ActiveSheet.Paste
Columns("B:B").Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Columns("A:A").Delete Shift:=xlToLeft
Columns("A:A").NumberFormat = "dd/mm/yyyy"
'Mettre à jour la date du prochain Lundi sur le Planning pour MN_1
Windows("(NE_PAS_MODIFIER)_PLANNING_MNT_Flux 1&2.xlsm").Activate
Sheets("Date Lundi S+1").Range("K2").Copy
Sheets("Planning pour MN_1").Activate
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Data_MNT_1").Select
Application.CutCopyMode = False
'Mettre sous forme de tableau
Range("A7").Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$C$" & nb_lig_data), , xlYes).Name = _
"Tableau1"
Range("Tableau1[#All]").Select
ActiveSheet.ListObjects("Tableau1").TableStyle = "TableStyleLight9"
Range("B7").Select
ActiveSheet.ListObjects("Tableau1").Name = "bd"
Range("A5").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"bd_1", Version:=6).CreatePivotTable TableDestination:="Data_MNT_1!R5C6", _
TableName:="Tableau croisé dynamique1", DefaultVersion:=6
Sheets("Data_MNT_1").Select
Cells(5, 6).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Reference")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("OF")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Date début planifiée")
.Orientation = xlRowField
.Position = 3
End With
'Mettre le TCD sous format tabulaire
ActiveSheet.PivotTables("Tableau croisé dynamique1").RowAxisLayout xlTabularRow
'Enlever les sous-totaux du TCD
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("OF"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Reference"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Date début planifiée").Subtotals = Array(False, False, False, False, False, False, _
False, False, False, False, False, False)
'Enlever les lignes vides ou sans dates du TCD
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Date début planifiée")
.PivotItems("").Visible = False
End With
'Mise en place des formules dans le Planning pour MN_1 à partir du TCD
Sheets("Planning pour MN_1").Select
nb_lig_planning = Range("B" & Rows.Count).End(xlUp).Row
Range("C3").Formula = _
"=IFERROR(VLOOKUP($B3,bd_1[[#All],[Reference]],1,0),""X"")"
Range("C3").Select
Selection.AutoFill Destination:=Range("C3:C" & nb_lig_planning)
Range("C3:C" & nb_lig_planning).Select
Range("D3").FormulaArray = _
"=IFERROR(INDEX(bd_1[[OF]:[OF]],SMALL(IF((bd_1[[Date début planifiée]:[Date début planifiée]]=R2C)*(bd_1[[Reference]:[Reference]]=RC2),ROW(R3C3:R164C3)-2),COUNTIF(R3C2:RC2,RC2))),"""")"
Range("D3").AutoFill Destination:=Range("D3:D" & nb_lig_planning)
Range("D3:D" & nb_lig_planning).Select
Selection.AutoFill Destination:=Range("D3:M" & nb_lig_planning), Type:=xlFillDefault
Range("D3:M" & nb_lig_planning).Select
Range("B3").Select
Sheets("Data_MNT_1").Visible = False
'Supprimer les données dans le planning transmis au magasin
Sheets("Planning MNT Flux 1").Select
Cells.Delete Shift:=xlUp
'Filter pour avoir que les lignes avec les préparations nécessaires
Sheets("Planning pour MN_1").Activate
ActiveSheet.Range("$A$2:$N$" & nb_lig_planning).AutoFilter Field:=14, Criteria1:="<>"
'Copier les lignes nécessaires
Sheets("Planning pour MN_1").Select
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
'Coller dans l'autre feuille ACM pour avoir le strict minimum des données
Sheets("Planning MNT Flux 1").Select
Range("A2").Select
ActiveSheet.Paste
Columns("A:N").ColumnWidth = 18.5
Columns("C:C").ColumnWidth = 0.1
Range("A2").Select
'Masquer colonne C pour éviter les doublons visuels et enlever les filtres
Sheets("Planning pour MN_1").Select
Columns("C:C").EntireColumn.Hidden = False
'Enregister et fermer planning pour MNT
Sheets("Date Lundi S+1").Range("K7") = Now
'ThisWorkbook.Save
'Application.Quit
'Mettre l'heure de la mise à jour
Windows("Fichier Synthèse OF - Flux 1.xlsm").Activate
Range("D8").Select
'Sheets("Tableau de bord Flux 1").Range("C30") = Now
'Sauvegarder
'ThisWorkbook.Save
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.DisplayStatusBar = True
End Sub