Bonjour,
Je t'ai donné un exemple !...
Avec les éléments que tu as donné.
Tu précises donc ta demande.
Cdlt.
Ci-dessous la procédure (ALT F11 pour ouvrir l'éditeur VBE).
Public Sub CreatePivotTable()
Dim ws As Worksheet, wsData As Worksheet, wsTable As Worksheet, wsPT As Worksheet
Dim rngData As Range, rngPT As Range
Dim PTCache As PivotCache, PT As PivotTable
Dim lRow As Long, lastRow As Long, lastCol As Integer
Set wsData = Worksheets("Sans infos")
Application.DisplayAlerts = False
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> wsData.Name Then ws.Delete
Next ws
Application.DisplayAlerts = True
With wsData
lRow = 10
lastCol = .Cells(lRow, .Columns.Count).End(xlToLeft).Column
lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
Set rngData = .Cells(lRow, 2).Resize(lastRow - lRow + 1, lastCol)
End With
Set wsTable = ActiveWorkbook.Worksheets.Add
wsTable.Name = "Table"
rngData.Copy Destination:=wsTable.Cells(1)
Set rngPT = Cells(1).CurrentRegion
Set PTCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, rngPT)
Set wsPT = ActiveWorkbook.Worksheets.Add
wsPT.Name = "TCD"
Set PT = PTCache.CreatePivotTable(Cells(1), "TCD")
With PT
.ManualUpdate = True
.AddFields RowFields:="Niveau"
With .PivotFields("Surface Prot?g?e 1 (mm2)")
.Orientation = xlDataField
.Function = xlSum
.NumberFormat = "#,##0.00;[Red](#,##0.00);"
.Caption = ChrW(931) & " Surface Prot?g?e 1 (mm2)"""
End With
.ManualUpdate = False
End With
End Sub