XL2007 : créer un TCD avec un nom

Le
Le Nordiste
Bonjour,

Je suis sous EXCEL 2007.

Je désire créer un TCD en définissant
la plage source, la plage destination, le nom du TCD.
MichDenis m'a donné comment faire en EXCEL97 :

'--
Sub PivotTable()
'programmation MichDenis pour EXCEL97

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'Définir où sera copié le pivottable
With Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("A1").Address
'Supprime l'ancien pivotcache
.Range("A1").CurrentRegion.Delete (xlUp)
End With

With Worksheets("Feuil2")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:B" & _
.Range("B65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddFields RowFields:="Élève"
.PivotFields("résultat").Orientation = xlDataField
End With
End With

End Sub

'==

J'ai essayé son code sous EXCEL2007 mais Pb, il semble que
"xlPivotTableVersion10"
ne soit pas reconnu. Lorsque je crée le TCD j'obtiens ceci :


ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase,
SourceData:= _
"analyse FA!L1C4:L1048576C28",
Version:=xlPivotTableVersion12). _
CreatePivotTable TableDestination:="TCD!L5C1", TableName:= _
"Tableau croisé dynamique1",
DefaultVersion:=xlPivotTableVersion12

J'ai bien sur remplacé le 10 par 12 mais toujours ce f… Pb.

'==

Qui me sortira de ce pétrin ?
merci pour votre aide.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #16529691
Sur le fichier exemple que je t'ai soumis élaboré sous
Excel 2003, essaie ce qui suit pour la version excel 2007


'------------------------------------
Sub PivotTable()

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'Définir où sera copié le pivottable
With Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("A1").Address
'Supprime l'ancien pivotcache
' NomFeuille,NomTDC
Supprimer_TDC .Name, "Denis"
End With

With Worksheets("Feuil2")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:B" & _
.Range("B65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches _
.Create(SourceType:=xlDatabase, _
SourceData:=Range(Adr), _
Version:=xlPivotTableVersion12) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", _
DefaultVersion:=xlPivotTableVersion12)
With PT
.AddFields RowFields:="Élève"
.PivotFields("résultat").Orientation = xlDataField
End With
End With

End Sub
'------------------------------------
Sub Supprimer_TDC(NomFeuille As String, NomTDC As String)
On Error Resume Next
If Worksheets(NomFeuille).PivotTables.Count > 0 Then
.PivotTables(NomTDC).PivotSelect "", xlDataAndLabel, True
Selection.Clear
Selection(1, 1).Select
End If

End Sub
'------------------------------------




"Le Nordiste" news:
Bonjour,

Je suis sous EXCEL 2007.

Je désire créer un TCD en définissant
la plage source, la plage destination, le nom du TCD.
MichDenis m'a donné comment faire en EXCEL97 :

'-----------------------------
Sub PivotTable()
'programmation MichDenis pour EXCEL97

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'Définir où sera copié le pivottable
With Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("A1").Address
'Supprime l'ancien pivotcache
.Range("A1").CurrentRegion.Delete (xlUp)
End With

With Worksheets("Feuil2")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:B" & _
.Range("B65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddFields RowFields:="Élève"
.PivotFields("résultat").Orientation = xlDataField
End With
End With

End Sub

'===================
J'ai essayé son code sous EXCEL2007 mais Pb, il semble que
"xlPivotTableVersion10"
ne soit pas reconnu. Lorsque je crée le TCD j'obtiens ceci :


ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase,
SourceData:= _
"analyse FA!L1C4:L1048576C28",
Version:=xlPivotTableVersion12). _
CreatePivotTable TableDestination:="TCD!L5C1", TableName:= _
"Tableau croisé dynamique1",
DefaultVersion:=xlPivotTableVersion12

J'ai bien sur remplacé le 10 par 12 mais toujours ce f… Pb.

'===================
Qui me sortira de ce pétrin ?
merci pour votre aide.
Le Nordiste
Le #16530431
Lors de l'appel de la routine d'effacement, j'ai le message :
"erreur de compilation
référence ioncorrecte ou non qualifiée"


Passant outre l'effacement,
cela fonctionne pas mal avec un petit fichier une colonne eleve et une
colonne résultat.

Ça coince toujours avec mon besoin car j'ai plus de deux colonnes
et de plus j'aimerais avoir des "étiquettes de colonne"
michdenis
Le #16530571
Il ne te reste plus à attendre que quelqu'un ayant excel 2007 veuille
t'aider !


"Le Nordiste" news:
Lors de l'appel de la routine d'effacement, j'ai le message :
"erreur de compilation
référence ioncorrecte ou non qualifiée"


Passant outre l'effacement,
cela fonctionne pas mal avec un petit fichier une colonne eleve et une
colonne résultat.

Ça coince toujours avec mon besoin car j'ai plus de deux colonnes
et de plus j'aimerais avoir des "étiquettes de colonne"
Le Nordiste
Le #16531251
Merci encore Michdenis pour ton aide.
bcar
Le #16538581
Bonjour,

Utilise :
Dim tableauCroise As PivotTable
Dim pCache As PivotCache

Set pCache = wbkSynthese.PivotCaches.Add(xlDatabase, Range)
Set tableauCroise = pCache.CreatePivotTable(sh.Cells(4, 1), "TcdName")
' -- cellule de destination, nom du TCD

tableauCroise.SmallGrid = False
With tableauCroise.PivotFields("Client")
.Orientation = xlRowField ' -- ou xlColumnField ou xlDataField
.position = 1
' -- .Function = xlSum ' Dans le cas d'un xlDataField
' -- .NumberFormat = "#,##0" ' Dans le cas d'un xlDataField
End With

...

Call tableauCroise.CalculatedFields.Add("NomduChamps",
"DescriptionDuCalcul")

et éevntutellement
on error resume next
tableauCroise.ShowTableStyleRowStripes = True
tableauCroise.ShowTableStyleColumnStripes = True
tableauCroise.TableStyle2 = "PivotStyleDark7"


Le Nordiste a écrit :
Bonjour,

Je suis sous EXCEL 2007.

Je désire créer un TCD en définissant
la plage source, la plage destination, le nom du TCD.
MichDenis m'a donné comment faire en EXCEL97 :

'-----------------------------
Sub PivotTable()
'programmation MichDenis pour EXCEL97

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'Définir où sera copié le pivottable
With Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("A1").Address
'Supprime l'ancien pivotcache
.Range("A1").CurrentRegion.Delete (xlUp)
End With

With Worksheets("Feuil2")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:B" & _
.Range("B65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddFields RowFields:="Élève"
.PivotFields("résultat").Orientation = xlDataField
End With
End With

End Sub

'=================== >
J'ai essayé son code sous EXCEL2007 mais Pb, il semble que
"xlPivotTableVersion10"
ne soit pas reconnu. Lorsque je crée le TCD j'obtiens ceci :


ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase,
SourceData:= _
"analyse FA!L1C4:L1048576C28",
Version:=xlPivotTableVersion12). _
CreatePivotTable TableDestination:="TCD!L5C1", TableName:= _
"Tableau croisé dynamique1",
DefaultVersion:=xlPivotTableVersion12

J'ai bien sur remplacé le 10 par 12 mais toujours ce f… Pb.

'=================== >
Qui me sortira de ce pétrin ?
merci pour votre aide.



Le Nordiste
Le #16545451
Bonjour bcar,

Je ne vois pas comment faire même avec ton code.

Peux tu me donner le code complet, cela m'arrangerait bien,
bien évidemment sur un exemple simple disons :
a) Une source de 5colonnes sur 10 lignes placée en A1 et contiguëes
b) plaçons le TCD nommé "MonTCD" en H15 par exemple.



Remerciements anticipés

Bon week-end
Le Nordiste
bcar
Le #16546061
Voila un lien vers un petit exemple que je t'ai fait. (c'est vrai que
dans le code que je t'avais donné, il manquait peut être 2-3
déclarations...)

http://dl.free.fr/q5FMAXkgE


Le Nordiste a écrit :
Bonjour bcar,

Je ne vois pas comment faire même avec ton code.

Peux tu me donner le code complet, cela m'arrangerait bien,
bien évidemment sur un exemple simple disons :
a) Une source de 5colonnes sur 10 lignes placée en A1 et contiguëes
b) plaçons le TCD nommé "MonTCD" en H15 par exemple.



Remerciements anticipés

Bon week-end
Le Nordiste


Le Nordiste
Le #16570521
merci bcar,

Cela semble me convenir, je teste cet aprés midi sur mon fichier de
travail réel.

je te tiens au courant.

Le Nordiste
Le Nordiste
Le #16578171
bcar me revoici,

j'ai adapté un peu ta procédure :
J'ai une feuille Fa sur laquelle j'ai mes données en "D1:S65536" à
croiser dans un tableau placé en Cells(40, 5).



Public Sub makeATCD()

Dim tableauCroise As PivotTable
Dim pCache As PivotCache
Dim wbk As Workbook
Dim sh As Worksheet
Dim r As Range

strFeuilleSource = "Fa"

'strFeuilleDestination = "BAP"
strPlageDONNÉES = "D1:S65536"
strEtiquetteLigne = "Libellé"
strColonne = "ACTION"
strValeur = "Montant"

Set wbk = ThisWorkbook '
-- Wortkbook des données du TCD
Set sh = Worksheets(strFeuilleSource) ' -- La
feuille sur laquelle on désire travailler
Set r = sh.Range(strPlageDONNÉES) '
LA SOURCE DE DONNÉES -- Les données
Set pCache = wbk.PivotCaches.Add(xlDatabase, r)
'Sheets(strFeuilleDestination).Select
Set tableauCroise = pCache.CreatePivotTable(sh.Cells(40, 5),
"TcdName")

et ça coince sur la dernière ligne : "argument ou appel de procédure
incorrect"


Il va falloir que je change de lunettes je ne vois pas le PB
bcar
Le #16582391
Salut,

A mon avis tu essaye de créer le tableau dans tes données : tes données
vont de D1 à S65536 et le début de ton tableau se trouve en (40, 5) ce
qui ne me semble pas correct essaye en ligne 5, colonne 40.

Le Nordiste a écrit :
bcar me revoici,

j'ai adapté un peu ta procédure :
J'ai une feuille Fa sur laquelle j'ai mes données en "D1:S65536" à
croiser dans un tableau placé en Cells(40, 5).



Public Sub makeATCD()

Dim tableauCroise As PivotTable
Dim pCache As PivotCache
Dim wbk As Workbook
Dim sh As Worksheet
Dim r As Range

strFeuilleSource = "Fa"

'strFeuilleDestination = "BAP"
strPlageDONNÉES = "D1:S65536"
strEtiquetteLigne = "Libellé"
strColonne = "ACTION"
strValeur = "Montant"

Set wbk = ThisWorkbook '
-- Wortkbook des données du TCD
Set sh = Worksheets(strFeuilleSource) ' -- La
feuille sur laquelle on désire travailler
Set r = sh.Range(strPlageDONNÉES) '
LA SOURCE DE DONNÉES -- Les données
Set pCache = wbk.PivotCaches.Add(xlDatabase, r)
'Sheets(strFeuilleDestination).Select
Set tableauCroise = pCache.CreatePivotTable(sh.Cells(40, 5),
"TcdName")

et ça coince sur la dernière ligne : "argument ou appel de procédure
incorrect"


Il va falloir que je change de lunettes je ne vois pas le PB


Publicité
Poster une réponse
Anonyme