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

VBa : créer plusieurs TCD sur les mêmes données (excel2007)

10 réponses
Avatar
Le Nordiste
Bonjour,


L'enregistreur de macro est mon "ennemi"

Je veux cr=E9er deux TCD =E0 partir des m=EAmes donn=E9es (feuille "Donn=E9=
es")
sur la feuille "TCD".

J'utilise l'enregistreur de macro, mais je n'arrive pas =E0 d=E9rouler
l'enregistrement sans Pb.
m=EAme en supprimant les colones o=F9 j'ai plac=E9 les TCD,
m=EAme en supprimant carr=E9ment la feuille,

Pourquoi tant de haine ????

J'aimerais aussi nommer les TCD d'un nom explicite


Merci de votre aide.

10 réponses

Avatar
michdenis
Un petit exemple simple

'-----------------------------
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
.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



"Le Nordiste" a écrit dans le message de
news:
Bonjour,


L'enregistreur de macro est mon "ennemi"

Je veux créer deux TCD à partir des mêmes données (feuille "Données")
sur la feuille "TCD".

J'utilise l'enregistreur de macro, mais je n'arrive pas à dérouler
l'enregistrement sans Pb.
même en supprimant les colones où j'ai placé les TCD,
même en supprimant carrément la feuille,

Pourquoi tant de haine ????

J'aimerais aussi nommer les TCD d'un nom explicite


Merci de votre aide.
Avatar
Le Nordiste
Merci d eton aide Michdenis,


Cela me semble convenir, aprés adaptation bien évidemment ,
mais je n'arrive pâs à recréer le TCD si je l'efface, si je supprime
les colonnes du TCD et même si je supprime la page.
Il faut surement TUER le TCD mais comment ?


Bon WE.
Avatar
michdenis
Avant de recréer un TDC, tu dois d'abord effacer
le tdc existant.


Fichier exemple là : http://cjoint.com/?iiqZ6pfJ3c



"Le Nordiste" a écrit dans le message de
news:
Merci d eton aide Michdenis,


Cela me semble convenir, aprés adaptation bien évidemment ,
mais je n'arrive pâs à recréer le TCD si je l'efface, si je supprime
les colonnes du TCD et même si je supprime la page.
Il faut surement TUER le TCD mais comment ?


Bon WE.
Avatar
Le Nordiste
> Avant de recréer un TDC, tu dois d'abord effacer
le tdc existant.



Ça je m'en doutais mais comment ?
Je n'effaçais que sa "trace" sur la feuille et pas le "JeNeSaisQuoi'
derrière tout ça.
-Qui reste à m'expliquer-

Voila ce que je cherchais :

Feuil1.PivotTables("Denis").PivotSelect "", xlDataAndLabel, True
Selection.Clear

Une autre question : pourquoi ne peut on executer ces instructions en
mode "arret" ou pas à pas ?

Bonsoir et bon week end
Avatar
michdenis
Tu auras noté que cette ligne de code fait la même chose
dans mon petit exemple
****.Range("A1").CurrentRegion.Clear

que
Feuil1.PivotTables("Denis").PivotSelect "", xlDataAndLabel, True
Selection.Clear

Cependant, dans la dernière, elle est plus complète si tu as par
exemple un champ (s) dans ton TDC car dans ce cas,
.Range("A1").CurrentRegion.Clear n'efface pas ce champ
car ne fait pas parti de la sélection retenue par CurrentRegion.
et fait planter la procédure.

| pourquoi ne peut on executer ces instructions en
| mode "arret" ou pas à pas ?

Les 2 petites procédures du fichier exemple peuvent s'exécuter
en pas en pas sans aucun problème. La difficulté que tu éprouves
doit être locale !!!




"Le Nordiste" a écrit dans le message de
news:

Avant de recréer un TDC, tu dois d'abord effacer
le tdc existant.



Ça je m'en doutais mais comment ?
Je n'effaçais que sa "trace" sur la feuille et pas le "JeNeSaisQuoi'
derrière tout ça.
-Qui reste à m'expliquer-

Voila ce que je cherchais :

Feuil1.PivotTables("Denis").PivotSelect "", xlDataAndLabel, True
Selection.Clear

Une autre question : pourquoi ne peut on executer ces instructions en
mode "arret" ou pas à pas ?

Bonsoir et bon week end
Avatar
Le Nordiste
J'essaye ce matin en vrai grandeur :

avec le fichier joint : pas de Pb,

avec mon fichier en cours ou sur un petit fichier d'essai : je coince
avec erreur 1004 dans cette partie du code :

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _

SourceData:=Range(Adr)).CreatePivotTable(TableDestination:=Range(Adr1),
_
TableName:="monTCD",
DefaultVersion:=xlPivotTableVersion10)

et pourtant mes adr, adr1 correspondent bien aux bonnes zones.


Je suis sous excel 2007 mais de là ne vient pas le Pb


Merci pour votre collaboration.
Avatar
michdenis
Excel 2007 -> connais pas !



"Le Nordiste" a écrit dans le message de
news:
J'essaye ce matin en vrai grandeur :

avec le fichier joint : pas de Pb,

avec mon fichier en cours ou sur un petit fichier d'essai : je coince
avec erreur 1004 dans cette partie du code :

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _

SourceData:=Range(Adr)).CreatePivotTable(TableDestination:=Range(Adr1),
_
TableName:="monTCD",
DefaultVersion:=xlPivotTableVersion10)

et pourtant mes adr, adr1 correspondent bien aux bonnes zones.


Je suis sous excel 2007 mais de là ne vient pas le Pb


Merci pour votre collaboration.
Avatar
michdenis
En passant, vérifie dans l'aide de ta version excel 2007
si ce paramêtre est toujours bon :

DefaultVersion:=xlPivotTableVersion10)




"Le Nordiste" a écrit dans le message de
news:
J'essaye ce matin en vrai grandeur :

avec le fichier joint : pas de Pb,

avec mon fichier en cours ou sur un petit fichier d'essai : je coince
avec erreur 1004 dans cette partie du code :

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _

SourceData:=Range(Adr)).CreatePivotTable(TableDestination:=Range(Adr1),
_
TableName:="monTCD",
DefaultVersion:=xlPivotTableVersion10)

et pourtant mes adr, adr1 correspondent bien aux bonnes zones.


Je suis sous excel 2007 mais de là ne vient pas le Pb


Merci pour votre collaboration.
Avatar
Le Nordiste
On 11 août, 14:40, "michdenis" wrote:
En passant, vérifie dans l'aide de ta version excel 2007
si ce paramêtre est toujours bon :

DefaultVersion:=xlPivotTableVersion10)


Je ne dispose pas de l'aide en ligne - Pb d'install-
par contre lorsque je crée un TCD l'enregistreur me donne

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase,
SourceData:= _
"analyse Fa!L1C4:L34197C19", Version:=xlPivotTableVersion12).
_
CreatePivotTable TableDestination:="BAP!L5C2", TableName:= _
"Tableau croisé dynamique1",
DefaultVersion:=xlPivotTableVersion12 <=== ici ====

Je place ce 12 dans ton code, et ça coince.
Avatar
michdenis
Désolé mais je n'ai pas la version 2007 pour tester