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
|
Option Explicit
'Déclaration de variables de module
Dim feuilleGCD As String, feuilleRepartitionMensuelle As String, mois As String, anneeActu As String, moisActu As String
Dim i As Long, iprim As Long, premLig As Long, derLig As Long, derCol As Long, cptWP As Long
Dim valTampon1, valTampon2, valTampon3 As Variant
Dim plageSource As Range, plageDestination As Range, emplacementGraphe As Range
Dim monPivotCache As PivotCache
Dim monTCD As PivotTable
Dim monPVT As PivotItem
Dim monChart As Chart
Dim tabWP_LT(), tabWP() As String
Dim nomErreur As Error
Const const_taillePlages As Integer = 20
Sub production_Courbes_S()
'Main - principal
'Init param
ReDim tabWP_LT(1, 0)
ReDim tabWP(0)
feuilleGCD = "GCD ""S"""
feuilleRepartitionMensuelle = "Répartition mensuelle"
'Actions successives
nettoyerFeuille feuilleGCD
nettoyerFeuille feuilleRepartitionMensuelle
'Demander à l'utilisateur le niveau de granularité : WP1 ou WP1.1
UserForm2.Show
'Optimisation des calculs
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'Actions successives
miseANiveauBDD
creerCourbeDynamique
creerGCDRepartitionMensuelle
'Optimisation des calculs
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
'*** Message de fin ***
MsgBox "Opération terminée avec succès", vbOKOnly
End Sub
Sub creerCourbeDynamique()
' On Error GoTo errorHandler
'@Developpez.net :
'j'ai mis la déclinaison de l'enregistreur, le code de l'enregistreur puis mon code original ensuite.
'---------------------------------------------------------------------------------------------
'--- déclinaison de l'enregistreur à ma sauce ---
'--------------------------
'partie création du TCD
Worksheets(feuilleGCD).Activate
Range("A1").Select
'ne fonctionne pas même en enlevant la partie Version:=xlPivotTableVersion14 et DefaultVersion:=xlPivotTableVersion14
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
Sheets("DATA").Range("A1").CurrentRegion, Version:=xlPivotTableVersion14).CreatePivotTable _
tabledestination:=Worksheets(feuilleGCD).Range("A1"), tablename:="monTableauDynamique" _
, DefaultVersion:=xlPivotTableVersion14
'-------------------------------------------------------
'--- fin de déclinaison de l'enregistreur à ma sauce ---
'---------------------------------------------------------------------------------------------
'------------------------------------------------------------------------------------------
'--- enregistreur de macro ---
'-----------------------------
'partie création du TCD
Sheets("GCD ""S""").Select
Range("A1").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"DATA!R1C1:R102875C22", Version:=xlPivotTableVersion14).CreatePivotTable _
tabledestination:="GCD ""S""!R1C1", tablename:="Tableau croisé dynamique1" _
, DefaultVersion:=xlPivotTableVersion14
Sheets("GCD ""S""").Select
Cells(1, 1).Select
'partie création du GCD
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Range("'GCD ""S""'!$A$1:$C$18")
'partie mise en forme du GCD/TCD
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("LIB")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"PER_Simplifiee")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("QATP"), "Somme de QATP", _
xlSum
'--------------------------------
'--- fin enregistreur de macro ---
'---------------------------------------------------------------------------------------------
'--------------------------------
'--- Code original ci-dessous :
'***********************
'*** Création du TCD ***
'***********************
Worksheets(feuilleGCD).Activate
cptWP = UBound(tabWP)
valTampon1 = 4
'Optimisation des calculs
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
'Sélectionner plageSource
With Sheets("DATA")
Set plageSource = .Range("A1").CurrentRegion
End With
'Où sera positionné le TCD
Sheets(feuilleGCD).Activate
Set plageDestination = Range(Cells(valTampon1, 2), Cells(valTampon1, 2))
'Creation PivotCache depuis plageSource
Set monPivotCache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=plageSource.Address)
'Creation TCD depuis PivotCache
Set monTCD = monPivotCache.CreatePivotTable(tabledestination:=plageDestination.Cells(1, 1), tablename:="monNom")
'Définition des champs du TCD
monTCD.AddDataField monTCD.PivotFields("REF"), "REF 'S'", xlCount
With monTCD.PivotFields("REF 'S'")
.Function = xlSum
.Calculation = xlRunningTotal
.BaseField = "PER_Simplifiee"
End With
monTCD.AddDataField monTCD.PivotFields("QATP"), "QATP 'S'", xlCount
With monTCD.PivotFields("QATP 'S'")
.Function = xlSum
.Calculation = xlRunningTotal
.BaseField = "PER_Simplifiee"
End With
End Sub |
Partager