TCD : Afficher pages à 2 critères

Batiscaf

XLDnaute Occasionnel
Bonjour tout le monde,

j'ai un petit souci avec un tcd, voici le code que l'enregistreur de macro me donne :

ActiveSheet.PivotTables('Tableau croisé dynamique1').ShowPages PageField:= _
'année'
Sheets('2005').Select
ActiveSheet.PivotTables('Tableau croisé dynamique2').ShowPages PageField:= _
'Etat2'
Sheets('2004').Select
ActiveSheet.PivotTables('Tableau croisé dynamique3').ShowPages PageField:= _
'Etat2'

En résumé, j'ai mis 2 critères dans la zone PAGE au moment de la création du tcd global, puis je lui demande la répartition d'un tableau par 'annee', puis un tableau par 'etat2' pour chaque année.

Sans avoir touché la macro enregistrée, elle ne remarche pas.
Existe t-il une solution pour lui faire faire directement les 2 répartions annee/etat2 à partir du tcd global ?

Merci à vous.

Batiscaf.
 

Dan

XLDnaute Barbatruc
Bonjour,

Deux questions que je me pose :

1. Le 'tableaux croisé dynamique 1' se trouve sur quelle feuille ?
2. Est-ce que les 3 tableaux sont bien situés sur des feuilles différentes ?

Merci de ta réponse.

:)
 

Batiscaf

XLDnaute Occasionnel
Bonjour Dan,

Les 3 tableaux sont bien sur des feuilles différentes (je mets tous mes tcd toujours sur des feuilles différentes).
Dans le cas présent, le tcd1 est sur la feuille 12, mais peut se rentrouver sur une feuille moindre.

Bat.
 

Batiscaf

XLDnaute Occasionnel
ça y est j'ai compris d'où ça vient, par contre je connais pas encore la solution.

mes soucis viennent du code :
ActiveSheet.PivotTables('Tableau croisé dynamique2')

lorsque je relance ma macro, les tcd donnés ne sont plus
('Tableau croisé dynamique2') et ('Tableau croisé dynamique')
mais ('Tableau croisé dynamique8') et ('Tableau croisé dynamique9') par exemple.

Il va juste falloir que je renomme le nom de mes tcd avec les n° 2 et 3.
à moins que toi Dan, ou quelqu'un connaisse comment dire que je veux m'occuper du tableau de mon onglet :
ActiveSheet.PivotTables('Tableau de l'onglet actif').ShowPages PageField:= _
'Etat2'

Et là ça marche.

Bat.
 

Batiscaf

XLDnaute Occasionnel
le nom de mes onglets 'recepteurs' ne changent jamais :
- j'ai 2 années possibles : '2004' et '2005'
- j'ai 2 état2 possibles : 'fact' et 'nonf'

1) je pars d'un onglet 'prépa' qui contient ma base de données.
2) je fais un tcd global avec 2 critères de pages.
3) je dois me retouver avec 4 tableaux différents plus ou moins vides :
- fact 2004
- nonf 2004
- fact 2005
- nonf 2005


ci-joint un fichier avec un extrait de ma base.
dans le code, ça ce complique après le STOP.

par contre ça marche très bien juste après l'ouverture d'excel puisque le compteur des tcd se remet à zéro.

Voilà.

Merci à toi. [file name=basetcdforum.zip size=15567]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/basetcdforum.zip[/file]
 

Pièces jointes

  • basetcdforum.zip
    15.2 KB · Affichages: 39

Dan

XLDnaute Barbatruc
Bonsoir,

Ta macro me parait avoir un pb dès le départ. En effet, on dirait que tu vas écraser les données de ta feuille 'prépa'.
A aucun moment dans ta macro on ne voit que tu sélectionnes les feuilles 2004 et 2005 pour aller placer les TCD.
de plus il n'y a qu'une seul TCD nommé.
Bref pas facile de comprendre ce que tu fais dans ta macro.

Peux-tu apporter des précisions la dessus et me dire à quoi sert le STOP ?

A priori, il ya pas mal de chose à adapter.

;)
 

Dan

XLDnaute Barbatruc
Bonjour,

En essayant de faire tourner ta macroavce Excel 2000 j'ai un arrêt sur la 2ième ligne -> cette instruction : 'DefaultVersion:=xlPivotTableVersion10'

Peux-tu en plus de ma demande dans le précédent post, me dire quel version d'Excel tu utilises.

:)
 

Batiscaf

XLDnaute Occasionnel
Bonjour le Forum, Dan,

Dan,
D'abord merci pour l'attention que tu portes à ce post.

Pour répondre à tes questions :
1) J'utlise excel 2003.
2) Tu peux oublier le STOP dans la macro, c'était juste un point d'arret que j'avais mis à un moment.
3) A mon avis ton 'xlPivotTableVersion10' vient du fait que tu en est à ton 10ème tcd depuis que tu as ouvert xl.
C'est pour ça, que dans mes derniers posts je disais que ma macro actuelle ne marche que tant que ce sont les premiers tcd générés dans excel après l'ouverture.
Le mieux doit rester de forcer le nom du tcd qu'il soit le 1er, le 10e ou le 40e généré depuis l'ouverture d'excel.


Voici joint ldans le fichier, le détail de mes opérations :
1) j'ai l'onglet 'prépa'
2) je fais un tcd global -qui se retrouve sur une nouvelle feuille-
3) j'éclate le tcd global par année (via la fonction 'afficher les page') -là encore sur de nouvelles feuilles-
4) j'éclate les nouveaux tcd annuels par etat2, via la même fonction -et là encore sur de nouvelles feuilles-
5) ce ne sont que les 4 derniers tcd que j'écraserai pour la suite de ma macro.

ps: s'il était possible de passer directement du tcd global aux 4 petits tcd, ce serait tip top.

J'espère avoir été un peu plus clair. En tout cas je reste à ta disposition.

Batiscaf. [file name=basetcdforum2.zip size=27333]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/basetcdforum2.zip[/file]
 

Pièces jointes

  • basetcdforum2.zip
    26.7 KB · Affichages: 37

Dan

XLDnaute Barbatruc
Ok là je pense avoir compris ce que tu essaies de faire :
tu constitues le TCD général et récupères les infos par année et par état sous forme de nouveaux TCD splittés dans de nouvelles feuilles.

Chez moi la commande 'Affficher pages' me retourne une erreur car tu as trop de colonnes à gérer dans ton TCD général.
Il en va de même lors des choix dans les champ de page lorsque l'on veut choisir l'affichage pour une année ou un état.
Il me semble donc normal que tes instructions donne aussi un message d'erreur.
Mais cela est peut être dû à ta version d'excel

Solution :
Dans un premier temps, places moi ton fichier en le sauvant sous Excel 2000 pour voir si cela change.
De mon coté j'essaierai de refaire le TCD général comme tu l'as présenté et revoir le tout au niveau macro.

A te lire


:)
 

Batiscaf

XLDnaute Occasionnel
Voici le fichier précédent enregisté en version excel97 (version 2000 ne m'était pas proposée).

Je viens de retester ma version actuelle --> no problémo au moment d'éclater mon tcd général par 2005 puis par état2 (dès lors que je la fait tourner juste après l'ouverture d'excel 2003).

Pour la contitution du tcd général, effectivement il faut le faire en 2 fois, mais la macro le fait automatiquement.

Je continue à chercher de mon côté.

Bat.

[file name=basetcdforum2xl2000.zip size=47543]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/basetcdforum2xl2000.zip[/file]
 

Pièces jointes

  • basetcdforum2xl2000.zip
    46.4 KB · Affichages: 34

Dan

XLDnaute Barbatruc
Bon la version ne change pas le pb.

Ce que je pense c'est que le nbre de colonnes de ton TCD est trop important et le bug de ta macro(après le STOP) est dû à cela.

Fais un essai en faisant cela manuellement. Donc à partir du TCD général, essaie de créer par 'afficher page' les nouveaux TCD en choisissant sur l'année. Je pense que tu n'y arriveras pas pour la raison que je t'ai expliquée dans mon post avant.

Le TCD général est réalisable par macro parce que tu effectues cela en deux fois (c'est cela l'astuce). Sinon, on ne sait plus rien faire manuellement dans ton TCD général. Cela est dû à un pb de mémoire.

Je vais toutefois effectuer quelques tests ce soir car là je suis au boulot.

;)
 

Batiscaf

XLDnaute Occasionnel
De mon côté je n'ai pas de problème de capacités (ni par année, ni par état2). Et pourtant mes bases 'prépa' réelles donnent des tcd bcp + gros.

J'ai créé la macro via l'assistant, donc manuellement.
et je viens de refaire la partie post-STOP manuellement, et là ça marche aussi.

Effectivement, la version d'excel doit y être pour quelque chose.

De mon côté 2 choses :
1) effectivement, je n'ai jamais trouvé comment obtenir des très gros tcd dna les faires en 2 fois.
2) je n'ai toujours pas trouvé comment renommé en macro mes noms de tcd, ou comment me passer de ces noms.
Mon seul bloquage reste lorsque ces tcd ne sont pas les premiers apres l'ouverture d'excel.

je continue à fouiller dans les archives du forum parmi tes messages et ceux de Celeda principalement.

'j'y crois, tout est possible, c'est le jeu de la vie !' (sketch de Laspales et chevallier)

A+

Bat.
 

Dan

XLDnaute Barbatruc
Bonsoir,

Bon voilà j'ai pu finalement te faire quelque chose.

D'abord je dois te signaler que le pb concernant le TCD général vient bien de la mémoire de l'ordinateur. En effet si tu en as assez (ce qui semble être ton cas) cela fonctionne bien.

J'ai donc refais la macro complétement et t'explique comment cela fonctionne maintenant :

L'appli tourne avec 3 macros
1. tcd2criteres :
- constitue le TCD dans une feuille appelée TCD.

Tu peux l'enclencher par le raccourci clavier : CTRL + t

2. Resultats :
- création des 4 TCD dans des feuilles différentes selon les années et l'état 2

Tu peux l'enclencher par le raccourci clavier : CTRL + r

3. Supprime :
- supprime toutes les feuilles du classeur sauf la feuille 'prepa' qui sert de base de données. Elle est intégrée à la macro tcd2criteres (merci à Didier-mdF au passage pour le coup de main)

Verifie le tout et fais moi savoir tes pb.

:) [file name=basetcd_batiscaf_v01.zip size=31026]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/basetcd_batiscaf_v01.zip[/file]

Message édité par: Dan, à: 20/08/2005 00:46
 

Pièces jointes

  • basetcd_batiscaf_v01.zip
    30.3 KB · Affichages: 39

Batiscaf

XLDnaute Occasionnel
Bonjour le Forum, Dan,

Dan,

Tu as super bien avancé. La constitution du tcd global en 1 seule fois (visiblement possible en macro alors que pas en manuel) est tip top. Je testerai avec ma base réelle s'il n'y a pas de pb de capacités.

Cela dit, ce n'est pas exactement ces 4 onglets là dont j'ai besoin.
Il y a besoin que automatiquement pour 2004 et 2005, il me donne le fact et le nonf.

Attends je viens de penser à un truc.

...

Oh purée c'est quasi-gagné !

>> J'ai rajouté une macro à la suite des tiennes : quatres_onglets (crtl+q)
Grâce au fait que tu nommes le tcd global 'TCD1', je dispose d'une constante pour travailler sur les pages en copiant l'onglet 'TCD' avant de changer de filtres.

Tu pourras également voir dans le module 2, une macro qui sur la base de 'quatres_onglets' permet automatiser le filtre état2 (c'est déjà ça !).
Je pense qu'on est pas mal et qu'il y a moyen de tout automatiser en comptant dans la base prépa le nombre d'années (donc le nombre de fois qu'il faudra copier l'onglet du tcd global).

De façon plus générale, si on arrive à compter dans la base, le nombre de variables pour toutes les rubriques qui se retrouvent dans la zone PAGE, on devrait pouvoir éclater les tcd automatiquement dans tous les sens, qu'il y est 1,3 ou 20 rubriques.

Je te laisse regarder et me dire ce que tu en penses.

A+

Batiscaf.

[file name=basetcd_batiscaf_v02.zip size=32273]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/basetcd_batiscaf_v02.zip[/file]
 

Pièces jointes

  • basetcd_batiscaf_v02.zip
    31.5 KB · Affichages: 40

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 353
Membres
103 528
dernier inscrit
hplus