Bonjour,
Je débute en VBA et je dois créer une macro permettant de faire un TCD.
Ci-dessous mon bout de code (désolé pour la longueur).
La première partie de ma macro fonctionne très bien et le TCD se crée, avec les différents filtres demandés mais bloque environ 9 fois sur 10
(ce n'est pas systématique, mais pourtant je ne fais rien et je ne change pas les conditions initiales : je lance la macro en pas à pas, elle bloque, je rappuie sur F8 et parfois, elle marche sans que j'ai touché au code !)
Le blocage est toujours au même endroit, lors de l'ajout des données DANS le tableau, avec .AddDataField (en rouge, dernière ligne de mon code) et le message toujours identique "impossible de lire la propriété PivotTable de la classe WorkSheet".
Merci d'avance pour votre aide, parce que là, je m'arrache les cheveux depuis plusieurs jours sur le problème...
Marie
'création du tableau croisé dynamique à partir de la plage définie, placement en cellule A4 (R4C1) et nommage du tableau ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Range("PlageDonnees" )).CreatePivotTable TableDestination:="Analyse!R4C1", TableName:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
'définition des champs et filtres du tableau croisé dynamique
With Sheets("Analyse" ).PivotTables("Tableau croisé dynamique1" )
'ajout des filtres de date (en page)
With .PivotFields("année" )
.Orientation = xlPageField 'filtre de page
.Position = 1 'sur la 1ère ligne
.EnableMultiplePageItems = True
End With
With .PivotFields("trimestre" )
.Orientation = xlPageField 'filtre de page
.Position = 2 'sur la 2ème ligne
.EnableMultiplePageItems = True
End With
With .PivotFields("mois" )
.Orientation = xlPageField 'filtre de page
.Position = 3 'sur la 3ème ligne
.EnableMultiplePageItems = True
End With
'ajout du filtre par DE en ligne (1ère colonne)
With .PivotFields("DE" )
.Orientation = xlRowField 'filtre en ligne
.Position = 1 'sur la 1ère colonne
.EnableMultiplePageItems = True 'permet de cocher plusieurs DE en même temps (pour regrouper les DE par exemple)
End With
'ajout du filtre par agence en ligne (2ème colonne)
With .PivotFields("Agence" )
.Orientation = xlRowField 'filtre en ligne
.Position = 2 'sur la 2ème colonne
.EnableMultiplePageItems = True 'permet de cocher plusieurs agences en même temps (pour regrouper les agences par DE par exemple)
End With
'ajout du filtre par RS en colonne (1ère ligne)
With .PivotFields("Nom du RS" )
.Orientation = xlColumnField
.Position = 1
.EnableMultiplePageItems = True 'permet de cocher plusieurs RS en même temps
End With
'ajout du filtre par site en colonne (2ème ligne)
With .PivotFields("Code site" )
.Orientation = xlColumnField
.Position = 2
.EnableMultiplePageItems = True 'permet de cocher plusieurs sites en même temps
End With
End With
'ajout des données (nombre de date d'audit par site et par RS fait sur la période)
Sheets("Analyse" ).PivotTables("Tableau croisé dynamique1" ).AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields("Date" ), "Nombre de Date", xlCount
Message édité par MarieDB1 le 02-02-2011 à 17:13:19