[RESOLU]Création Tableau Croisé dynamique

Zohnya

XLDnaute Nouveau
Bonjour, je réalise actuellement une macro dans le cadre de mon travail. J'ai une feuille qui contient les données relatives a une machine (l'utilisateur, les temps d'utilisations, etc.). Il est possible d'entrer une plage de date afin de filtrer les informations.

Mon but est de récupérer cette plage afin de pouvoir créer un tableau croisé dynamique (TCD). Voici mon code :

VB:
'Selectionner la plage
'Selection de la feuille
Sheets(prefixe & MachinesPlages(i, 1)).Select

'On calcule le nombre de colonne
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
larg = Selection.Count

'Le nombre de lignes dans la plage (pas vraiment utile pour l'instant
Range("A" & DebutPlage & ":A" & FinPlage).Select
longueur = Selection.Count


'Créer le TCD correspondant à la machine
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
ActiveWorkbook.Sheets(prefixe & MachinesPlages(i, 1)).Range(Cells(DebutPlage, 1), Cells(FinPlage, larg)), Version:=xlPivotTableVersion15).CreatePivotTable _
TableDestination:="Options avec filtre!R1C1:R1C" & (i + 5), TableName:="TCD" & MachinesPlages(i, 1), _
DefaultVersion:=xlPivotTableVersion15

Le problème, c'est que quand je lance la macro ça plante au moment de la création du TCD :
err5.PNG


sauf que je ne comprends pas ce que je dois modifier.

Pourriez-vous m'éclairer ?
 

Zohnya

XLDnaute Nouveau
Ce sont des variables globales. Elles sont définies dans une autre fonction. debutPlage et finPlage représentent respectivement le numéro de ligne ou commence et fini la plage que l'on désire traiter. (ça, ça fonctionne. j'ai déjà controlé)
 

Zohnya

XLDnaute Nouveau
Bonjour,
J'ai modifié la création du TCD de cette façon. ça ne marche toujours pas mais au moins l'erreur a changé
VB:
ActiveWorkbook.Sheets(prefixe & MachinesPlages(i, 1)).Range(Cells(DebutPlage, 1), Cells(FinPlage, larg)).Name = "PlageFiltree"

    'Range("R1C1:R"&DebutPlage&"C1:R"&FinPlage&"C"&larg) = "PlageFitree"
   
   
    'Créer le TCD correspondant à la machine
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "PlageFiltree", Version:=xlPivotTableVersion15).CreatePivotTable _
    TableDestination:="Options avec filtre!R1C1:R1C" & colTCDO, TableName:="TCD" & MachinesPlages(i, 1), _
    DefaultVersion:=xlPivotTableVersion15

 

Zohnya

XLDnaute Nouveau
Nouvelle modification, nouvelle erreur. Pour paraphraser Leeloo dans le 5eme élément : "Please Help !"

VB:
ActiveWorkbook.Sheets(prefixe & MachinesPlages(i, 1)).Range(Cells(DebutPlage, 1), Cells(FinPlage, larg)).Name = "PlageFiltree"

   
   
    'Créer le TCD correspondant à la machine
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "PlageFiltree", Version:=xlPivotTableVersion15).CreatePivotTable _
    TableDestination:=ActiveWorkbook.Sheets("Options avec filtre").Range("A1"), TableName:="TCD" & MachinesPlages(i, 1), _
    DefaultVersion:=xlPivotTableVersion15

 

Zohnya

XLDnaute Nouveau
AAAAH. Donc on peut pas prendre le milieu d'un tableau pour faire un TCD ? T'es obligé d'avoir les entêtes avec ? oooooh.

*alleluia*
Donc techniquement, si je copie colle les entêtes et les données qui m'intéressent dans une autre feuille et que je fais le TCD a partir de ça, ça devrait marcher ?

Donc. A la main, ça marche. j'vais voir si j'arrive a le refaire en code.
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG