1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
| Sub generation_onglet_BP_Angio2()
On Error Resume Next
Dim oCategorie As Variant
Dim Fullname As String
Dim wbDepart As Workbook
Dim wbmodele As Workbook
Dim x As Long
Dim feuil_filtre As Variant
Dim ws As Variant
Dim oDesc_AO As Variant
Dim plage_qte As Range
feuil_filtre = Array("filtre_cat", "filtre_elab", "filtre_desc")
Set wbDepart = ActiveWorkbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'validation de la feuille Sommaire final
If sheetExists("Sommaire final") = False Then
MsgBox "Feuille ""Sommaire final"" manquante", vbCritical
Exit Sub
End If
'desctruction des feuille filtre si déjà présente
For Each ws In feuil_filtre
If sheetExists(ws) Then Sheets(ws).Delete
Next ws
'une fois supprimer on enleve les reference dans le gestionnaire de noms
supprNomRef
'copy de la feuille sommaire enlever les doublons de catégorie et la renommer
Sheets("Sommaire final").Copy After:=Sheets(1)
ActiveSheet.Name = "filtre_cat"
Sheets("filtre_cat").Range("A1:s" & LastLignUsedInColumn("P")).RemoveDuplicates Columns:=15, Header:=xlYes
'on créé la feulle pour le filtre élaboré
Sheets.Add.Name = "filtre_elab"
Sheets("filtre_elab").Range("a1") = Sheets("Sommaire final").Range("o1")
Sheets("filtre_elab").Range("e1") = Sheets("Sommaire final").Range("p1")
Sheets("filtre_elab").Range("f1") = Sheets("Sommaire final").Range("q1")
'on créé la feulle pour le filtre description
Sheets.Add.Name = "filtre_desc"
Sheets("filtre_desc").Range("a1") = Sheets("Sommaire final").Range("q1")
Sheets("filtre_desc").Range("e1") = Sheets("Sommaire final").Range("n1")
Sheets("filtre_desc").Range("f1") = Sheets("Sommaire final").Range("p1")
Sheets("filtre_desc").Range("j1") = "TOTAL"
'on nomme la plage départ afin de facilité le travail
Sheets("Sommaire final").Range("a2").CurrentRegion.Name = "plage_depart"
'on nomme la plage de destination afin de facilité le code
Sheets("filtre_elab").Range("e2").CurrentRegion.Name = "destination"
Sheets("filtre_cat").Activate
For Each oCategorie In wbDepart.Sheets("filtre_cat").Range("o2", Range("o1").End(xlDown))
x = x + 1
Sheets("filtre_elab").Range("a2") = Sheets("filtre_cat").Cells(x + 1, 15)
Sheets("Sommaire final").Range("plage_depart").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
Sheets("filtre_elab").Range("A1:a2"), CopyToRange:=Sheets("filtre_elab").Range("destination"), Unique:=True
Sheets("filtre_elab").Activate
Fullname = "N:\FOURNITURES\FOURNITURES SPECIALISEES ANGIOGRAPHIE\2019-0744-01\BP\" & oCategorie.value
Application.EnableEvents = False
Workbooks.Open ("N:\FOURNITURES\FOURNITURES SPECIALISEES ANGIOGRAPHIE\2019-0744-01\BP\modele_BP.xlsm")
Application.EnableEvents = True
Set wbmodele = ActiveWorkbook
wbmodele.Sheets("INFORMATIONS GENERALES").Range("a3") = oCategorie.value
wbDepart.Activate
'filtre plus onglets
For Each oDesc_AO In wbDepart.Sheets("filtre_elab").Range("f2", Range("f1").End(xlDown))
wbDepart.Activate
wbDepart.Sheets("filtre_desc").Range("a2") = oDesc_AO.value
wbDepart.Sheets("Sommaire final").Range("plage_depart").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
wbDepart.Sheets("filtre_desc").Range("A1:a2"), CopyToRange:=wbDepart.Sheets("filtre_desc").Range("e1:f2"), Unique:=False
wbDepart.Sheets("filtre_desc").Activate
Set plage_qte = wbDepart.Sheets("filtre_desc").Range("e2", Range("e1").End(xlDown))
wbDepart.Sheets("filtre_desc").Range("j2") = Application.WorksheetFunction.Sum(plage_qte)
wbmodele.Activate
wbmodele.Sheets("Travail").Copy After:=Sheets(1)
ActiveSheet.Name = Right(oDesc_AO.value, 31)
wbmodele.Sheets(Right(oDesc_AO.value, 31)).Range("f1") = wbDepart.Sheets("filtre_desc").Range("j2")
wbmodele.Sheets(Right(oDesc_AO.value, 31)).Range("b5") = oDesc_AO.value
wbmodele.Sheets(Right(oDesc_AO.value, 31)).Range("a5") = wbDepart.Sheets("filtre_desc").Range("f2")
wbDepart.Activate
Next oDesc_AO
wbmodele.SaveAs "N:\FOURNITURES\FOURNITURES SPECIALISEES ANGIOGRAPHIE\2019-0744-01\BP\BP_" & oCategorie.value, xlOpenXMLWorkbookMacroEnabled
wbmodele.Close xlYes
Next oCategorie
wbDepart.Activate
'on détruis les feuilles créés
For Each ws In feuil_filtre
Sheets(ws).Delete
Next ws
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
MsgBox "Les fichiers ont été créé dans le répertoire N:\FOURNITURES\FOURNITURES SPECIALISEES ANGIOGRAPHIE\2019-0744-01\BP\"
End Sub |
Partager