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