Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

XL2007 : créer un TCD avec un nom

10 réponses
Avatar
Le Nordiste
Bonjour,

Je suis sous EXCEL 2007.

Je d=E9sire cr=E9er un TCD en d=E9finissant
la plage source, la plage destination, le nom du TCD.
MichDenis m'a donn=E9 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=E9finir o=F9 sera copi=E9 le pivottable
With Worksheets("Feuil1")
Adr1 =3D .Name & "!" & .Range("A1").Address
'Supprime l'ancien pivotcache
.Range("A1").CurrentRegion.Delete (xlUp)
End With

With Worksheets("Feuil2")
'D=E9finir o=F9 sont les donn=E9es pour le pivotcache
Adr =3D .Name & "!" & .Range("A1:B" & _
.Range("B65536").End(xlUp).Row).Address

'Cr=E9ation du PivotTable
Set PT =3D ActiveWorkbook.PivotCaches.Add _
(SourceType:=3DxlDatabase, SourceData:=3DRange(Adr)) _
.CreatePivotTable(TableDestination:=3DRange(Adr1), _
TableName:=3D"Denis", DefaultVersion:=3DxlPivotTableVersion10)
With PT
.AddFields RowFields:=3D"=C9l=E8ve"
.PivotFields("r=E9sultat").Orientation =3D xlDataField
End With
End With

End Sub

'=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

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


ActiveWorkbook.PivotCaches.Create(SourceType:=3DxlDatabase,
SourceData:=3D _
"analyse FA!L1C4:L1048576C28",
Version:=3DxlPivotTableVersion12). _
CreatePivotTable TableDestination:=3D"TCD!L5C1", TableName:=3D _
"Tableau crois=E9 dynamique1",
DefaultVersion:=3DxlPivotTableVersion12

J'ai bien sur remplac=E9 le 10 par 12 mais toujours ce f=85 Pb.

'=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Qui me sortira de ce p=E9trin ?
merci pour votre aide.

10 réponses

Avatar
michdenis
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" a écrit dans le message de
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.
Avatar
Le Nordiste
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"
Avatar
michdenis
Il ne te reste plus à attendre que quelqu'un ayant excel 2007 veuille
t'aider !


"Le Nordiste" a écrit dans le message de
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"
Avatar
Le Nordiste
Merci encore Michdenis pour ton aide.
Avatar
bcar
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.



Avatar
Le Nordiste
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
Avatar
bcar
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


Avatar
Le Nordiste
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
Avatar
Le Nordiste
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
Avatar
bcar
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