Bonjour,
Mon problème est simple mais pourtant la macro à trouver me paraît compliqué.
Le problème est que j'ai automatisé tout le process entre les deux fichiers, l'un permet de saisir des dates de débuts en production, l'autre permet de communiquer ces dates au magasin à travers leur planning.
Cependant, avec ma macro, certains OF apparaissent mais pas tous alors je ne comprends pas. Peut-être que vous pouvez m'aider à comprendre pourquoi, ou bien me proposer un process plus simple.
Ci-dessous, l'extrait du fichier permettant aux gestionnaires de saisir les dates de débuts des OF.
1) Une fois les dates saisies (donc l'ordonnancement effectué), les gestionnaires doivent mettre à jour le planning du magasin pour qu'ils préparent les OF dont ils ont besoin.
2) La macro vient copier les colonnes OF-Réf-Date de début du premier fichier (synthèse OF) et les coller dans la feuille DATA_MNT du second fichier.
3) Ensuite, la macro vient déduire 7 jours à la date saisies (correspondant au délai de préparation par le magasin). Puis un TCD est créée permettant d'alimenter la feuille "Planning pour MN".
4) Ensuite un filtre est fait pour garder que les lignes non-vides, les copier, et les coller dans la feuille "Planning MNT" afin que le magasin récupère essentiellement les données utiles (donc les lignes non-vides)
PROBLEME: à l'étape 3, l'ensemble des données sont bien extraites du fichier des OF et bien renseignées dans le TCD, cependant, elle ne se mettent pas tous en place dans le tableau avec les formules matricielles.
(exemple: la référence 245310, ce n'est pas la seule.)
J'aimerai que le tableau "Planning pour MN" prennent TOUT en compte...
Je met également ci-dessous la macro réalisé mais je ne comprend pas pourquoi le tableau ne prend pas tout les OF. Il prend en compte que certaines références.
	
	
	
	
	
		
Je suis dans l'incompréhension la plus totale, cel fait 1 semaine que j'essaye d'identifier la source du problème.
Je vous remercie d'avance pour vos tentatives et le temps que vous y consacrez.
Bien cordiakement.
	
		
			
		
		
	
				
			Mon problème est simple mais pourtant la macro à trouver me paraît compliqué.
Le problème est que j'ai automatisé tout le process entre les deux fichiers, l'un permet de saisir des dates de débuts en production, l'autre permet de communiquer ces dates au magasin à travers leur planning.
Cependant, avec ma macro, certains OF apparaissent mais pas tous alors je ne comprends pas. Peut-être que vous pouvez m'aider à comprendre pourquoi, ou bien me proposer un process plus simple.
Ci-dessous, l'extrait du fichier permettant aux gestionnaires de saisir les dates de débuts des OF.
1) Une fois les dates saisies (donc l'ordonnancement effectué), les gestionnaires doivent mettre à jour le planning du magasin pour qu'ils préparent les OF dont ils ont besoin.
2) La macro vient copier les colonnes OF-Réf-Date de début du premier fichier (synthèse OF) et les coller dans la feuille DATA_MNT du second fichier.
3) Ensuite, la macro vient déduire 7 jours à la date saisies (correspondant au délai de préparation par le magasin). Puis un TCD est créée permettant d'alimenter la feuille "Planning pour MN".
4) Ensuite un filtre est fait pour garder que les lignes non-vides, les copier, et les coller dans la feuille "Planning MNT" afin que le magasin récupère essentiellement les données utiles (donc les lignes non-vides)
PROBLEME: à l'étape 3, l'ensemble des données sont bien extraites du fichier des OF et bien renseignées dans le TCD, cependant, elle ne se mettent pas tous en place dans le tableau avec les formules matricielles.
(exemple: la référence 245310, ce n'est pas la seule.)
J'aimerai que le tableau "Planning pour MN" prennent TOUT en compte...
Je met également ci-dessous la macro réalisé mais je ne comprend pas pourquoi le tableau ne prend pas tout les OF. Il prend en compte que certaines références.
		VB:
	
	
	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 SubJe suis dans l'incompréhension la plus totale, cel fait 1 semaine que j'essaye d'identifier la source du problème.
Je vous remercie d'avance pour vos tentatives et le temps que vous y consacrez.
Bien cordiakement.