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

problème TCD sur VBA

7 réponses
Avatar
Jean-François LEGRAS
Bonjour à tous chers amis,


Petit souci mais qui trouvera je l'espère une solution sur ce forum.

J'ai une macro qui me crée un TCD (code ci-dessous) qui procède à 3 étapes
principales :

1- je fais d'abord un TCD classique
2- je lui demande de le mettre au format "Table 4"
3- je lui demande de paramètrer le champ en "somme" (par défaut le TCD me
met "nombre").



Problème N°1 : les fichiers que j'injecte peuvent faire jusqu'à 10000 lignes
et le TCD classique crée plus de 65000 lignes d'où bug.
=> question : y a-t-il un moyen de passer directement au format "Table 4" ce
qui permettra de conserver le nombre de lignes du fichier initial ? C'est à
dire finalement passer l'étape 1 et créer directement un TCD au format
"Table 4".

Problème N°2 : moins important mais pourrait me faire gagner du temps :
peut-on supprimer l'étape 3 et l'inclure directement dans l'étape de
création du TCD ?


En conclusion, l'idéal serait d'avoir un code VB qui pemettrait de créer en
une seule étape un TCD au format "Table 4" et avec un paramètre de champ
"somme" (et non pas "nombre").


MERCI BEAUCOUP D'AVANCE A VOUS !!!!!!!!




Sub test ()


Sheets("hiérarchie").Select




ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
[hiérarchie!A1].CurrentRegion.Address(, , xlR1C1,
True)).CreatePivotTable TableDestination:="", TableName _
:="Tableau croisé dynamique6", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique6").AddFields
RowFields:= _
Array("Livré ", "Données")
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"total 2006")
.Orientation = xlDataField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"total 2007")
.Orientation = xlDataField
.Position = 2
End With
With ActiveSheet.PivotTables("Tableau croisé
dynamique6").PivotFields("IT 2006" _
)
.Orientation = xlDataField
.Position = 3
End With
With ActiveSheet.PivotTables("Tableau croisé
dynamique6").PivotFields("IT 2007" _
)
.Orientation = xlDataField
.Position = 4
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"papier 2006")
.Orientation = xlDataField
.Position = 5
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"papier 2007")
.Orientation = xlDataField
.Position = 6
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"GOP 2006")
.Orientation = xlDataField
.Position = 7
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"GOP 2007")
.Orientation = xlDataField
.Position = 8
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"mobilier 2006")
.Orientation = xlDataField
.Position = 9
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"mobilier 2007")
.Orientation = xlDataField
.Position = 10
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"hygiène 2006")
.Orientation = xlDataField
.Position = 11
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"hygiène 2007")
.Orientation = xlDataField
.Position = 12
End With








ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotSelect "", _
xlDataAndLabel, True
ActiveSheet.PivotTables("Tableau croisé dynamique6").Format xlTable4




ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Nombre de total 2006").Function = xlSum

ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Nombre de total 2007").Function = xlSum

ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Nombre de IT 2006").Function = xlSum

ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Nombre de IT 2007").Function = xlSum

ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Nombre de papier 2006").Function = xlSum

ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Nombre de papier 2007").Function = xlSum

ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Nombre de GOP 2006").Function = xlSum

ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Nombre de GOP 2007").Function = xlSum

ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Nombre de mobilier 2006").Function = xlSum

ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Nombre de mobilier 2007").Function = xlSum


ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Nombre de hygiène 2006").Function = xlSum

ActiveSheet.PivotTables("Tableau croisé dynamique6").PivotFields( _
"Nombre de hygiène 2007").Function = xlSum





End Sub

7 réponses

Avatar
FdeCourt
Salut,

Ce bout de code te permet de créer ton TCD et de le mettre au bon
format puis de lui indiquer la source de données (je le créé dans la
feuille TCD) :

Sub cParti()
Dim MonTCD As PivotTable

Sheets("TCD").Cells.Delete

Set MonTCD = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:= _
[hiérarchie!
A1:B2]).CreatePivotTable(TableDestination:=Sheets("TCD").Cells(3, 1),
TableName _
:="Tableau croisé dynamique6",
DefaultVersion:=xlPivotTableVersion10)

With MonTCD
.Format xlTable4
.SourceData = [hiérarchie!A1].CurrentRegion.Address(, , xlR1C1,
True)
.AddFields RowFields:=Array("Livré ", "Données")
With .PivotFields("total 2006"): .Orientation =
xlDataField: .Position = 1: .Function = xlSum: End With
With .PivotFields("total 2007"): .Orientation =
xlDataField: .Position = 2: .Function = xlSum: End With
With .PivotFields("IT 2006"): .Orientation =
xlDataField: .Position = 3: .Function = xlSum: End With
With .PivotFields("IT 2007"): .Orientation =
xlDataField: .Position = 4: .Function = xlSum: End With
With .PivotFields("papier 2006"): .Orientation =
xlDataField: .Position = 5: .Function = xlSum: End With
With .PivotFields("papier 2007"): .Orientation =
xlDataField: .Position = 6: .Function = xlSum: End With
With .PivotFields("GOP 2006"): .Orientation =
xlDataField: .Position = 7: .Function = xlSum: End With
With .PivotFields("GOP 2007"): .Orientation =
xlDataField: .Position = 8: .Function = xlSum: End With
With .PivotFields("mobilier 2006"): .Orientation =
xlDataField: .Position = 9: .Function = xlSum: End With
With .PivotFields("mobilier 2007"): .Orientation =
xlDataField: .Position = 10: .Function = xlSum: End With
With .PivotFields("hygiène 2006"): .Orientation =
xlDataField: .Position = 11: .Function = xlSum: End With
With .PivotFields("hygiène 2007"): .Orientation =
xlDataField: .Position = 12: .Function = xlSum: End With
End With

End Sub

Cordialement,

F.
Avatar
Jean-François LEGRAS
Merci beaucoup F pour ta réponse !

Hélas, ca ne marche pas tout à fait :

bizarrement j'ai bien le format 4 mais il me met les données verticalement
et non horizontalement (je ne savais même pas que c'était possible avec ce
type de format).

Donc même problème que pour le format par défaut : cela me crée plein de
lignes supplémentaires et je peux avoir plus de 65000 lignes et donc un
bug...

Aurais-tu la solution ?

Pour info, j'ai écris ce code (il ne marchait pas tout à fait à cause des
retours à la ligne) :



Sub test ()


Dim MonTCD As PivotTable

Sheets("TCD").Cells.Delete

Set MonTCD = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:=[hiérarchie!A1:B2]).CreatePivotTable(TableDestination:=Sheets("TCD").Cells(3,
1), TableName:="Tableau croisé dynamique6", DefaultVersion:=xlTable4)

With MonTCD
.Format xlTable4
.SourceData = [hiérarchie!A1].CurrentRegion.Address(, , xlR1C1, True)
.AddFields RowFields:=Array("Livré ", "Données")
With .PivotFields("total 2006"): .Orientation = xlDataField: .Position =
1: .Function = xlSum: End With
With .PivotFields("total 2007"): .Orientation = xlDataField: .Position =
2: .Function = xlSum: End With
With .PivotFields("IT 2006"): .Orientation = xlDataField: .Position = 3:
.Function = xlSum: End With
With .PivotFields("IT 2007"): .Orientation = xlDataField: .Position = 4:
.Function = xlSum: End With
With .PivotFields("papier 2006"): .Orientation = xlDataField: .Position
= 5: .Function = xlSum: End With
With .PivotFields("papier 2007"): .Orientation = xlDataField: .Position
= 6: .Function = xlSum: End With
With .PivotFields("GOP 2006"): .Orientation = xlDataField: .Position =
7: .Function = xlSum: End With
With .PivotFields("GOP 2007"): .Orientation = xlDataField: .Position =
8: .Function = xlSum: End With
With .PivotFields("mobilier 2006"): .Orientation = xlDataField:
.Position = 9: .Function = xlSum: End With
With .PivotFields("mobilier 2007"): .Orientation = xlDataField:
.Position = 10: .Function = xlSum: End With
With .PivotFields("hygiène 2006"): .Orientation = xlDataField: .Position
= 11: .Function = xlSum: End With
With .PivotFields("hygiène 2007"): .Orientation = xlDataField: .Position
= 12: .Function = xlSum: End With
End With


End Sub




Merci beaucoup d'avance !!!

Slts

JF














"FdeCourt" a écrit dans le message de news:

Salut,

Ce bout de code te permet de créer ton TCD et de le mettre au bon
format puis de lui indiquer la source de données (je le créé dans la
feuille TCD) :

Sub cParti()
Dim MonTCD As PivotTable

Sheets("TCD").Cells.Delete

Set MonTCD = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:= _
[hiérarchie!
A1:B2]).CreatePivotTable(TableDestination:=Sheets("TCD").Cells(3, 1),
TableName _
:="Tableau croisé dynamique6",
DefaultVersion:=xlPivotTableVersion10)

With MonTCD
.Format xlTable4
.SourceData = [hiérarchie!A1].CurrentRegion.Address(, , xlR1C1,
True)
.AddFields RowFields:=Array("Livré ", "Données")
With .PivotFields("total 2006"): .Orientation xlDataField: .Position = 1: .Function = xlSum: End With
With .PivotFields("total 2007"): .Orientation xlDataField: .Position = 2: .Function = xlSum: End With
With .PivotFields("IT 2006"): .Orientation xlDataField: .Position = 3: .Function = xlSum: End With
With .PivotFields("IT 2007"): .Orientation xlDataField: .Position = 4: .Function = xlSum: End With
With .PivotFields("papier 2006"): .Orientation xlDataField: .Position = 5: .Function = xlSum: End With
With .PivotFields("papier 2007"): .Orientation xlDataField: .Position = 6: .Function = xlSum: End With
With .PivotFields("GOP 2006"): .Orientation xlDataField: .Position = 7: .Function = xlSum: End With
With .PivotFields("GOP 2007"): .Orientation xlDataField: .Position = 8: .Function = xlSum: End With
With .PivotFields("mobilier 2006"): .Orientation xlDataField: .Position = 9: .Function = xlSum: End With
With .PivotFields("mobilier 2007"): .Orientation xlDataField: .Position = 10: .Function = xlSum: End With
With .PivotFields("hygiène 2006"): .Orientation xlDataField: .Position = 11: .Function = xlSum: End With
With .PivotFields("hygiène 2007"): .Orientation xlDataField: .Position = 12: .Function = xlSum: End With
End With

End Sub

Cordialement,

F.
Avatar
FdeCourt
Salut,

Un paramètre quelques part a du être oublié.
N'aurais tu pas un extrait de ton tableau de données (dans lequel tu
modifies les données si besoin est). Tu peux le mettre sur cjoint.com,
et mettre le lien pour le télécharger sur ce newsgroup.

Cordialement,

F.


On 27 mar, 20:48, "Jean-François LEGRAS" wrote:
Merci beaucoup F pour ta réponse !

Hélas, ca ne marche pas tout à fait :

bizarrement j'ai bien le format 4 mais il me met les données verticaleme nt
et non horizontalement (je ne savais même pas que c'était possible ave c ce
type de format).

Donc même problème que pour le format par défaut : cela me crée pl ein de
lignes supplémentaires et je peux avoir plus de 65000 lignes et donc un
bug...

Aurais-tu la solution ?

Pour info, j'ai écris ce code (il ne marchait pas tout à fait à caus e des
retours à la ligne) :

Sub test ()

Dim MonTCD As PivotTable

Sheets("TCD").Cells.Delete

Set MonTCD = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:=[hiérarchie!A1:B2]).CreatePivotTable(TableDestination:=S heets("TCD").Cells(3,
1), TableName:="Tableau croisé dynamique6", DefaultVersion:=xlTable4 )

With MonTCD
.Format xlTable4
.SourceData = [hiérarchie!A1].CurrentRegion.Address(, , xlR1C1, Tr ue)
.AddFields RowFields:=Array("Livré ", "Données")
With .PivotFields("total 2006"): .Orientation = xlDataField: .Positi on =
1: .Function = xlSum: End With
With .PivotFields("total 2007"): .Orientation = xlDataField: .Positi on =
2: .Function = xlSum: End With
With .PivotFields("IT 2006"): .Orientation = xlDataField: .Position = 3:
.Function = xlSum: End With
With .PivotFields("IT 2007"): .Orientation = xlDataField: .Position = 4:
.Function = xlSum: End With
With .PivotFields("papier 2006"): .Orientation = xlDataField: .Posit ion
= 5: .Function = xlSum: End With
With .PivotFields("papier 2007"): .Orientation = xlDataField: .Posit ion
= 6: .Function = xlSum: End With
With .PivotFields("GOP 2006"): .Orientation = xlDataField: .Position =
7: .Function = xlSum: End With
With .PivotFields("GOP 2007"): .Orientation = xlDataField: .Position =
8: .Function = xlSum: End With
With .PivotFields("mobilier 2006"): .Orientation = xlDataField:
.Position = 9: .Function = xlSum: End With
With .PivotFields("mobilier 2007"): .Orientation = xlDataField:
.Position = 10: .Function = xlSum: End With
With .PivotFields("hygiène 2006"): .Orientation = xlDataField: .Po sition
= 11: .Function = xlSum: End With
With .PivotFields("hygiène 2007"): .Orientation = xlDataField: .Po sition
= 12: .Function = xlSum: End With
End With

End Sub

Merci beaucoup d'avance !!!

Slts

JF

"FdeCourt" a écrit dans le message de news:

Salut,

Ce bout de code te permet de créer ton TCD et de le mettre au bon
format puis de lui indiquer la source de données (je le créé dans la
feuille TCD) :

Sub cParti()
Dim MonTCD As PivotTable

Sheets("TCD").Cells.Delete

Set MonTCD = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:= _
[hiérarchie!
A1:B2]).CreatePivotTable(TableDestination:=Sheets("TCD").Cells(3, 1),
TableName _
:="Tableau croisé dynamique6",
DefaultVersion:=xlPivotTableVersion10)

With MonTCD
.Format xlTable4
.SourceData = [hiérarchie!A1].CurrentRegion.Address(, , xlR1C1,
True)
.AddFields RowFields:=Array("Livré ", "Données")
With .PivotFields("total 2006"): .Orientation =
xlDataField: .Position = 1: .Function = xlSum: End With
With .PivotFields("total 2007"): .Orientation =
xlDataField: .Position = 2: .Function = xlSum: End With
With .PivotFields("IT 2006"): .Orientation =
xlDataField: .Position = 3: .Function = xlSum: End With
With .PivotFields("IT 2007"): .Orientation =
xlDataField: .Position = 4: .Function = xlSum: End With
With .PivotFields("papier 2006"): .Orientation =
xlDataField: .Position = 5: .Function = xlSum: End With
With .PivotFields("papier 2007"): .Orientation =
xlDataField: .Position = 6: .Function = xlSum: End With
With .PivotFields("GOP 2006"): .Orientation =
xlDataField: .Position = 7: .Function = xlSum: End With
With .PivotFields("GOP 2007"): .Orientation =
xlDataField: .Position = 8: .Function = xlSum: End With
With .PivotFields("mobilier 2006"): .Orientation =
xlDataField: .Position = 9: .Function = xlSum: End With
With .PivotFields("mobilier 2007"): .Orientation =
xlDataField: .Position = 10: .Function = xlSum: End With
With .PivotFields("hygiène 2006"): .Orientation =
xlDataField: .Position = 11: .Function = xlSum: End With
With .PivotFields("hygiène 2007"): .Orientation =
xlDataField: .Position = 12: .Function = xlSum: End With
End With

End Sub

Cordialement,

F.


Avatar
Jean-François LEGRAS
Merci F.


Voici le lien du tableau. J'y ai mis ton code ainsi que l'onglet TCD.

http://cjoint.com/?dClfk4UHZS


J'ai donc les données qui se suivent verticalement et non alignées
horizontalement.

Si tu as la solution...

Merci d'avance !

JF




"FdeCourt" a écrit dans le message de news:

Salut,

Un paramètre quelques part a du être oublié.
N'aurais tu pas un extrait de ton tableau de données (dans lequel tu
modifies les données si besoin est). Tu peux le mettre sur cjoint.com,
et mettre le lien pour le télécharger sur ce newsgroup.

Cordialement,

F.


On 27 mar, 20:48, "Jean-François LEGRAS" wrote:
Merci beaucoup F pour ta réponse !

Hélas, ca ne marche pas tout à fait :

bizarrement j'ai bien le format 4 mais il me met les données verticalement
et non horizontalement (je ne savais même pas que c'était possible avec ce
type de format).

Donc même problème que pour le format par défaut : cela me crée plein de
lignes supplémentaires et je peux avoir plus de 65000 lignes et donc un
bug...

Aurais-tu la solution ?

Pour info, j'ai écris ce code (il ne marchait pas tout à fait à cause des
retours à la ligne) :

Sub test ()

Dim MonTCD As PivotTable

Sheets("TCD").Cells.Delete

Set MonTCD = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:=[hiérarchie!A1:B2]).CreatePivotTable(TableDestination:=Sheets("TCD").Cells(3,
1), TableName:="Tableau croisé dynamique6", DefaultVersion:=xlTable4)

With MonTCD
.Format xlTable4
.SourceData = [hiérarchie!A1].CurrentRegion.Address(, , xlR1C1, True)
.AddFields RowFields:=Array("Livré ", "Données")
With .PivotFields("total 2006"): .Orientation = xlDataField: .Position
1: .Function = xlSum: End With
With .PivotFields("total 2007"): .Orientation = xlDataField: .Position

2: .Function = xlSum: End With
With .PivotFields("IT 2006"): .Orientation = xlDataField: .Position =

3:
.Function = xlSum: End With
With .PivotFields("IT 2007"): .Orientation = xlDataField: .Position =
4:
.Function = xlSum: End With
With .PivotFields("papier 2006"): .Orientation = xlDataField:
.Position
= 5: .Function = xlSum: End With
With .PivotFields("papier 2007"): .Orientation = xlDataField:
.Position
= 6: .Function = xlSum: End With
With .PivotFields("GOP 2006"): .Orientation = xlDataField: .Position > 7: .Function = xlSum: End With
With .PivotFields("GOP 2007"): .Orientation = xlDataField: .Position > 8: .Function = xlSum: End With
With .PivotFields("mobilier 2006"): .Orientation = xlDataField:
.Position = 9: .Function = xlSum: End With
With .PivotFields("mobilier 2007"): .Orientation = xlDataField:
.Position = 10: .Function = xlSum: End With
With .PivotFields("hygiène 2006"): .Orientation = xlDataField:
.Position
= 11: .Function = xlSum: End With
With .PivotFields("hygiène 2007"): .Orientation = xlDataField:
.Position
= 12: .Function = xlSum: End With
End With

End Sub

Merci beaucoup d'avance !!!

Slts

JF

"FdeCourt" a écrit dans le message de news:

Salut,

Ce bout de code te permet de créer ton TCD et de le mettre au bon
format puis de lui indiquer la source de données (je le créé dans la
feuille TCD) :

Sub cParti()
Dim MonTCD As PivotTable

Sheets("TCD").Cells.Delete

Set MonTCD = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:= _
[hiérarchie!
A1:B2]).CreatePivotTable(TableDestination:=Sheets("TCD").Cells(3, 1),
TableName _
:="Tableau croisé dynamique6",
DefaultVersion:=xlPivotTableVersion10)

With MonTCD
.Format xlTable4
.SourceData = [hiérarchie!A1].CurrentRegion.Address(, , xlR1C1,
True)
.AddFields RowFields:=Array("Livré ", "Données")
With .PivotFields("total 2006"): .Orientation > xlDataField: .Position = 1: .Function = xlSum: End With
With .PivotFields("total 2007"): .Orientation > xlDataField: .Position = 2: .Function = xlSum: End With
With .PivotFields("IT 2006"): .Orientation > xlDataField: .Position = 3: .Function = xlSum: End With
With .PivotFields("IT 2007"): .Orientation > xlDataField: .Position = 4: .Function = xlSum: End With
With .PivotFields("papier 2006"): .Orientation > xlDataField: .Position = 5: .Function = xlSum: End With
With .PivotFields("papier 2007"): .Orientation > xlDataField: .Position = 6: .Function = xlSum: End With
With .PivotFields("GOP 2006"): .Orientation > xlDataField: .Position = 7: .Function = xlSum: End With
With .PivotFields("GOP 2007"): .Orientation > xlDataField: .Position = 8: .Function = xlSum: End With
With .PivotFields("mobilier 2006"): .Orientation > xlDataField: .Position = 9: .Function = xlSum: End With
With .PivotFields("mobilier 2007"): .Orientation > xlDataField: .Position = 10: .Function = xlSum: End With
With .PivotFields("hygiène 2006"): .Orientation > xlDataField: .Position = 11: .Function = xlSum: End With
With .PivotFields("hygiène 2007"): .Orientation > xlDataField: .Position = 12: .Function = xlSum: End With
End With

End Sub

Cordialement,

F.



Avatar
FdeCourt
Salut,

Remplace juste
.AddFields RowFields:=Array("Livré ", "Données")


par

.AddFields ColumnFields:="Données"
.AddFields RowFields:="Livré "

Et c'est tout bon ;)
Avatar
Jean-François LEGRAS
MERCI BEAUCOUP F !!!!



Je vais donc modifier tous mes codes VB créant des TDC de façon à ce que mes
macros soient plus propres.

Une question donc (en espérant ne pas abuser...) :


J'ai un TDC (lien : http://cjoint.com/?dCuTpjuG6h ) avec des données à
l'intérieur. Voici le code initial :



ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
[2006!A1].CurrentRegion.Address(, , xlR1C1, True)).CreatePivotTable
TableDestination:="", TableName:= _
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables("Tableau croisé
dynamique1").PivotFields("Livré")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Rubrique")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField
ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("Net"), "Somme
de Net", _
xlSum

J'ai essayé en suivant l'exemple précédent mais sans succès :

Dim TCD1 As PivotTable


Sheets("TCD1").Cells.Delete

Set TCD1 = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:=[2006!A1:B2]).CreatePivotTable(TableDestination:=Sheets("TCD1").Cells(3,
1), TableName:="Tableau croisé dynamique6", DefaultVersion:=xlTable4)

With TCD1


.Format xlTable4
.SourceData = [2006!A1].CurrentRegion.Address(, , xlR1C1, True)
.AddFields ColumnFields:="Rubrique"
.AddFields RowFields:="Livré"


With .PivotFields("Net"): .Orientation = xlDataField: .Position = 1:
.Function = xlSum: End With




Aurais-tu le bon code ?


Merci encore !

JF


"FdeCourt" a écrit dans le message de news:

Salut,

Remplace juste
.AddFields RowFields:=Array("Livré ", "Données")


par

.AddFields ColumnFields:="Données"
.AddFields RowFields:="Livré "

Et c'est tout bon ;)
Avatar
FdeCourt
Salut,

Désolé, je n'avais pas vu ton message. Essayes ceci :

Sub test2()
Dim TCD1 As PivotTable
Sheets("TCD1").Cells.Delete
Set TCD1 = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:=[2006!
A1:B2]).CreatePivotTable(TableDestination:=Sheets("TCD1").Cells(3, 2),
TableName:="Tableau croisé dynamique6", DefaultVersion:=xlTable4)
With TCD1
.Format xlTable4
.SourceData = [2006!A1].CurrentRegion.Address(, , xlR1C1, True)
.AddFields ColumnFields:="Rubrique", RowFields:="Livré"
With .PivotFields("Net"): .Orientation = xlDataField: .Position =
1: .Function = xlSum: End With
End With
End Sub

Cordialement,

F.