Création TCD sur onglet variable (a partir d'une plage variable)
Bonjour à vous,
je vous contacte car je me casse la tête depuis plusieurs jours sur une macro qui est sensée me permettre en rentrant une plage de donnée (variable en nombre de ligne) sur un onglet "Accueil" de créer un TCD sur un onglet dont le nom varie (à chaque fois que l'on lance la macro, on passe à la référence suivante) et qui est en relation avec une liste de références dans un onglet "journal"
- J'espère m'êt're fait comprendre -
voilà ce que j'ai fait pour l'instant
Code:
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 48 49 50 51 52
| Sub TCDRef()
Dim indice As Integer
Dim row As Long
Dim TCDName As String
Dim TCDRange As Range
Dim TCDEmpl As Range
Dim NomOnglet As String
'Dértermination de l'indice de la référe,ce à traiter
Sheets("Journal").Select
indice = Range("D2").Value
'Détermination du numéro de la dernière ligne.
Sheets("Accueil").Select
row = Cells(1, 1).CurrentRegion.Rows.Count
ThisWorkbook.Sheets("Journal").Range("F2").Value = row
'Détermination du nom du TCD à créer
TCDName = "PivotTable" & Sheets("Journal").Range("D2").Value
'Détermination du nom de l'onglet
Sheets("Journal").Select
NomOnglet = Range("B" & indice).Value
'Création et renommage d'un onglet
Sheets.Add
ActiveSheet.Name = NomOnglet
Sheets(NomOnglet).Move Before:=Sheets("Journal")
'Détermination de la plage de cellule
Sheets("Accueil").Select
Set TCDRange = worksheets("Accueil").Range("R1C2:R" & row &"C19")
'Emplacement du TCD
Sheets(NomOnglet).Select
Set TCDEmpl = Sheets(NomOnglet).Range("R2C2")
'Création du TCD
Sheets(NomOnglet).Select
ActiveSheet.PivotCaches.Add(SourceType:=xlDatabase, _
SourceData:=TCDRange).CreatePivotTable , _
TableDestination:=TCDEmpl, _
TableName:=TCDName
End Sub |
Mais ça bloque...
L'erreur doit venir de mon sourcedate, tabledestination ou table name mais je n'y arrive pas malgrédes heures à parcourir les forums...
Ah et au passage, je n'arrive pas à appeler la méthode par un ActiveWorkbook, je dois faire ActiveSheet et je ne comprends pas pourquoi...
En vous remerciant par avance de votre aide...