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 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
Sub create_TCD(traite As Variant, target As Workbook)
'Déclaration des variables
Dim wshTCD As Worksheet
Dim PvtTCD As PivotTable
Dim source_table As Range
Dim input_sheet As String
Dim last_col, last_row As Long
'Code et noms d'onglets différents selon le traite
If traite = "source1" Then
input_sheet = "Q_25_08_Crea_Bord_source1"
GoTo traitement_source1
ElseIf traite = "source2" Then
input_sheet = "Q_25_06_Crea_Bord_source2"
GoTo traitement_source2
End If
'************************************************************************************************************
'Traitement des données source1
'************************************************************************************************************
traitement_source1:
'Calcul des dimensions du tableau à récupérer
last_row = target.Sheets(input_sheet).Range("b20").End(xlDown).Row
last_col = target.Sheets(input_sheet).Range("b20").End(xlToRight).Column
'Définition du tableau source
target.Sheets(input_sheet).Activate
Set source_table = target.Sheets(input_sheet).Range(Cells(20, 2), Cells(last_row, last_col))
'source_table.Select
'Vérification : "l'onglet TCD n'existe pas déja. Si oui, on efface le TCD en gardant l'onglet"
On Error Resume Next
target.Sheets("TCD").Activate
If Err.Number = 0 Then
'Suppression de tous les TCD existants dans la feuille
target.Sheets("TCD").Range("A1:Z100").ClearContents
Else
'Création d'un nouvel onglet pour le stockage du TCD
Sheets.Add
ActiveSheet.Name = "TCD"
End If
On Error GoTo 0
'Affectation du TCD à la feuille "TCD"
Set wshTCD = Worksheets("TCD")
'Ajout d'un TCD sur l'onglet "TCD"
Set PvtTCD = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=source_table) _
.CreatePivotTable(tabledestination:=wshTCD.Range("B5"), TableName:="TCD_" & traite)
'Ajout des champs au TCD
With PvtTCD
'### Champ Ligne
'### Champ Colonne
With .PivotFields("MOTIVO PAGAM")
.Orientation = xlColumnField
.Position = 1
End With
'### Champ Etiquette de données
With .PivotFields("TIPO TRAT")
.Orientation = xlPageField
.Position = 1
End With
With .PivotFields("ANNO GEN")
.Orientation = xlPageField
.Position = 1
End With
'### Champ Valeurs
With .PivotFields("TIPO TRAT")
.Orientation = xlDataField
End With
'Filtrage des données
PvtTCD.PivotFields("TIPO TRAT").CurrentPage = "1VITA" 'On ne regarde que les traités "1VITA"
PvtTCD.PivotFields("ANNO GEN").EnableMultiplePageItems = True
On Error Resume Next
PvtTCD.PivotFields("ANNO GEN").PivotItems("2001").Visible = False 'On exclut la génération 2001 du filtre
On Error GoTo 0
End With
GoTo Fin_Proc
'************************************************************************************************************
'Traitement des données source2
'************************************************************************************************************
traitement_source2:
'Calcul des dimensions du tableau à récupérer
last_row = ActiveSheet.Range("b20").End(xlDown).Row
last_col = ActiveSheet.Range("b20").End(xlToRight).Column
'Définition du tableau source
target.Sheets(input_sheet).Activate
Set source_table = target.Sheets(input_sheet).Range(Cells(20, 2), Cells(last_row, last_col))
source_table.Select
'Vérification : "l'onglet TCD n'existe pas déja. Si oui, on efface le TCD en gardant l'onglet"
On Error Resume Next
target.Sheets("TCD").Activate
If Err.Number = 0 Then
'Suppression de tous les TCD existants dans la feuille
target.Sheets("TCD").Range("A1:Z100").ClearContents
Else
'Création d'un nouvel onglet pour le stockage du TCD
Sheets.Add
ActiveSheet.Name = "TCD"
End If
On Error GoTo 0
'Affectation du TCD à la feuille "TCD"
Set wshTCD = Worksheets("TCD")
wshTCD.Activate
'Ajout d'un TCD sur l'onglet "TCD"
Set PvtTCD = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=source_table) _
.CreatePivotTable(tabledestination:=wshTCD.Range("B5"), TableName:="TCD_" & traite)
'Ajout des champs au TCD
With PvtTCD
'### Champ Ligne
With .PivotFields("ANNO GEN")
.Orientation = xlRowField
.Position = 1
End With
'### Champ Colonne
With .PivotFields("MOTIVO PAGAM")
.Orientation = xlColumnField
.Position = 1
End With
'### Champ Etiquette de données
With .PivotFields("TIPO TRAT")
.Orientation = xlPageField
.Position = 1
End With
'### Champ Valeurs
With .PivotFields("ANNO GEN")
.Orientation = xlDataField
.Function = xlCountNums
End With
'Filtrage des données
PvtTCD.PivotFields("TIPO TRAT").CurrentPage = "1VITA" 'On ne regarde que les traités "1VITA"
End With
GoTo Fin_Proc
Fin_Proc:
End Sub |
Partager