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
| Sub Test()
Dim Plage As Range, An As PivotItem, Ville As PivotItem, T1 As ListObject
Dim LR As ListRow
With Sheets("Feuil1")
Set Plage = .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 4)
End With
With Sheets("Feuil2")
If .PivotTables.Count > 0 Then .PivotTables(1).TableRange2.Clear
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Feuil1!" & Plage.Address(, , xlR1C1), Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Feuil2!R3C1", TableName:="TCD", _
DefaultVersion:=xlPivotTableVersion14
With .PivotTables("TCD").PivotFields("lieu d'Usines")
.Orientation = xlRowField
.Position = 1
End With
With .PivotTables("TCD").PivotFields("Annee")
.Orientation = xlColumnField
.Position = 1
End With
.PivotTables("TCD").AddDataField .PivotTables("TCD").PivotFields("Société"), _
"Nombre de Société", xlCount
Set T1 = Workbooks("awa123 recap.xlsx").Sheets("Feuil1").ListObjects(1)
For i = T1.ListRows.Count To 1 Step -1
T1.ListRows(i).Delete
Next i
With .PivotTables("TCD")
For Each An In .PivotFields("Annee").PivotItems
For Each Ville In .PivotFields("lieu d'Usines").PivotItems
If An = "(blank)" Then
Var = .GetPivotData("Société", "lieu d'Usines", Ville, "Annee", "(vide)")
Else
Var = .GetPivotData("Société", "lieu d'Usines", Ville, "Annee", An)
End If
If Var <> "" Then
Set LR = T1.ListRows.Add(, alwaysinsert:=True)
LR.Range(1, 1) = Ville
LR.Range(1, 6) = An
LR.Range(1, 5) = Var
End If
Next Ville
Next An
End With
.PivotTables(1).TableRange2.Clear
End With
End Sub |
Partager