XL 2013 Erreur excel: l'objet ne prend pas en charge cette propriété ou cette méthode

Rosie

XLDnaute Nouveau
Bonjour,
Je souhaite écrire une procédure qui permet de créer un pivot en prenant en entrée un argument qui est la feuille qui contient les données.
Voici comment je déclare ma procédure
Sub CreerPivot(ByVal Data As Worksheet)

Pour appeler cette procédure je fais
Dim feuille As Worksheet
Set feuille = Worksheets("PivotData")
GeneratePivot (feuille)

Cela me signale une erreur au niveau du code "GeneratePivot (feuille)" qui spécifie que l'objet ne prend pas en charge cette propriété ou méthode
 

Rosie

XLDnaute Nouveau
Bonjour,

Publie le code de GeneratePivot.

Daniel
Sub CreerPivot(ByVal Data As Worksheet)

'Declaration de variable
Dim PSheet As Worksheet
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PRange As Range
Dim LastRow As Long
Dim LastCol As Long

'Insertion d'une feuille vide
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("PivotTable").Delete
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "PivotTable"
Application.DisplayAlerts = True
Set PSheet = Worksheets("PivotTable")
Set DSheet = Worksheets("Data")

'Definition d'une plage de donnée
LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol)

'Define Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
TableName:="SalesPivotTable")

'Insertion de la table de pivot
Set PTable = PCache.CreatePivotTable _
(TableDestination:=PSheet.Cells(1, 1), TableName:="SalesPivotTable")

'Insertion des données en ligne
With ActiveSheet.PivotTables("SalesPivotTable").PivotFields("Year")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("SalesPivotTable").PivotFields("Month")
.Orientation = xlRowField
.Position = 2
End With

'Insertion de données en colonne
With ActiveSheet.PivotTables("SalesPivotTable").PivotFields("Zone")
.Orientation = xlColumnField
.Position = 1
End With

'Insert Data Field
With ActiveSheet.PivotTables("SalesPivotTable").PivotFields ("Amount")
.Orientation = xlDataField
.Function = xlSum
.NumberFormat = "#,##0"
.Name = "Revenue "
End With

'Format Pivot Table
ActiveSheet.PivotTables("SalesPivotTable").ShowTableStyleRowStripes = True
ActiveSheet.PivotTables("SalesPivotTable").TableStyle2 = "PivotStyleMedium9"


End Sub
 

Rosie

XLDnaute Nouveau
Ca serait sympa si tu disais comment...
Dans ma procedure dans la partie insertion d'une feuille vide je recupère un objet Worksheets dans ma variable DSheet contenant le nom de la feuille
Set DSheet = Worksheets("Data")

Du coup comme argument de la procedure je prends le nom de la feuille (type String) au lieu de prendre un argument de de type Worksheet
Sub CreerPivot(ByVal Data As String)

Et lors de l'appelle je lui passe le nom de la feuille qui contient les données
CreerPivot("LastWeekData")


Je ne sais pas si c'est une bonne méthode de codage mais ca fonctionne
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 536
dernier inscrit
komivi