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

Champs de pages dans 1 ou plusieurs TCD

8 réponses
Avatar
dédélafinance
Bonjour,

J'ai plusieurs TCD bâtis sur une seule et même plage de données et
comportant plusieurs champs de pages. Disons pour illustrer:
- Continent
- Pays
- Ville
Je sais désormais, grâce à Isabelle comment afficher le même champ de page
dans tous ces TCD et leur faire claculer les données en un seul clic !
J'aimerais toutefois qu'une sélection dans la champ de page "Continent" soit
équivalente à la fonction 'Tri" d'une page normale, à savoir qu'en
choisissant "Europe" comme continent, on ne puisse plus trouver dans la liste
déroulante du champ de page "Pays" le Canada, la Bolivie, la Chine ou le
Japon, etc..., ni dans la dans la liste déroulante du champ de page "Ville"
New-York, Auckland, New Dehli, etc....et si possible vice versa : Si on
choisit Paris dans le champ de page "Ville", que les listes déroulantes
affichent comme seul choix possible : Pays = France, Continent = Europe.

Vous me direz d'apprendre la géographie ! ...c'est plus utile et plus facile
. Certes, mais si on met en champs de pages des notions moins intuitives,
cela me sera grandement utile.

Merci à vos cellules grises et bon WE à tous
--
Merci

DD

8 réponses

Avatar
MichDenis
Pour ce faire, tu sélectionnes ton champ page
Tu le glisses en champ colonne dans le tdc,
sélectionne dans sa liste, l'item de ton choix
et tu le replace (glisse) comme champ Page.


"dédélafinance" a écrit dans le message de news:

Bonjour,

J'ai plusieurs TCD bâtis sur une seule et même plage de données et
comportant plusieurs champs de pages. Disons pour illustrer:
- Continent
- Pays
- Ville
Je sais désormais, grâce à Isabelle comment afficher le même champ de page
dans tous ces TCD et leur faire claculer les données en un seul clic !
J'aimerais toutefois qu'une sélection dans la champ de page "Continent" soit
équivalente à la fonction 'Tri" d'une page normale, à savoir qu'en
choisissant "Europe" comme continent, on ne puisse plus trouver dans la liste
déroulante du champ de page "Pays" le Canada, la Bolivie, la Chine ou le
Japon, etc..., ni dans la dans la liste déroulante du champ de page "Ville"
New-York, Auckland, New Dehli, etc....et si possible vice versa : Si on
choisit Paris dans le champ de page "Ville", que les listes déroulantes
affichent comme seul choix possible : Pays = France, Continent = Europe.

Vous me direz d'apprendre la géographie ! ...c'est plus utile et plus facile
. Certes, mais si on met en champs de pages des notions moins intuitives,
cela me sera grandement utile.

Merci à vos cellules grises et bon WE à tous
--
Merci

DD
Avatar
isabelle
bonjour dédélafinance,

je ne crois pas que ce soit possible,
il y aurait une possibilité si tu mets les champs de page en champs de ligne,

pour mettre à jour les autre tcd tu pourrais utilisé l'événement calculate d'une autre page faisant
référence à la première cellule du champ (Continent)

par exemple :

Private Sub Worksheet_Calculate()
With ActiveSheet.PivotTables("Tableau croisé dynamique1")
For Each pf In .PivotFields("Continent").PivotItems
If pf.Visible = True Then
v = pf
Exit For
End If
Next
End With

With ActiveSheet.PivotTables("Tableau croisé dynamique2")
.PivotFields("Continent").PivotItems(v).Visible = True
For Each pf In .PivotFields("Région").PivotItems
If pf <> v Then pf.Visible = False
Next
End With
End Sub

isabelle


Bonjour,

J'ai plusieurs TCD bâtis sur une seule et même plage de données et
comportant plusieurs champs de pages. Disons pour illustrer:
- Continent
- Pays
- Ville
Je sais désormais, grâce à Isabelle comment afficher le même champ de page
dans tous ces TCD et leur faire claculer les données en un seul clic !
J'aimerais toutefois qu'une sélection dans la champ de page "Continent" soit
équivalente à la fonction 'Tri" d'une page normale, à savoir qu'en
choisissant "Europe" comme continent, on ne puisse plus trouver dans la liste
déroulante du champ de page "Pays" le Canada, la Bolivie, la Chine ou le
Japon, etc..., ni dans la dans la liste déroulante du champ de page "Ville"
New-York, Auckland, New Dehli, etc....et si possible vice versa : Si on
choisit Paris dans le champ de page "Ville", que les listes déroulantes
affichent comme seul choix possible : Pays = France, Continent = Europe.

Vous me direz d'apprendre la géographie ! ...c'est plus utile et plus facile
. Certes, mais si on met en champs de pages des notions moins intuitives,
cela me sera grandement utile.

Merci à vos cellules grises et bon WE à tous


Avatar
isabelle
correction :

Private Sub Worksheet_Calculate()
With ActiveSheet.PivotTables("Tableau croisé dynamique1")
For Each pf In .PivotFields("Continent").PivotItems
If pf.Visible = True Then
v = pf
Exit For
End If
Next
End With

With ActiveSheet.PivotTables("Tableau croisé dynamique2")
.PivotFields("Continent").PivotItems(v).Visible = True
For Each pf In .PivotFields("Continent").PivotItems
If pf <> v Then pf.Visible = False
Next
End With
End Sub

isabelle
Avatar
dédélafinance
Merci Mich,

Je connais cette technique depuis peu; elle a néanmoins de trop nombreux
inconvénients à mon sens:
- il faut de la place à côté du TCD existant (notamment et surtout pas
d'autre TCD à proximité des nouvelles colonnes qui vont se créer ainsi, même
si c'est de façon temporaire...)
- tous les utilisateurs du TCD , ne connaissent pas forcément ....
- et puis il faut bien revenir en arrière à un moment ou à un autre, et là,
il y a certainement encore moins d'utilisateurs qui connaissent !

Bilan : la réponse est juste, mais ne répond pas idéalement à mon besoin
--
Merci de toute façon de vous être donné la peine de me répondre, cela pourra
sans doute aider qqu'un.

DD



Pour ce faire, tu sélectionnes ton champ page
Tu le glisses en champ colonne dans le tdc,
sélectionne dans sa liste, l'item de ton choix
et tu le replace (glisse) comme champ Page.


"dédélafinance" a écrit dans le message de news:

Bonjour,

J'ai plusieurs TCD bâtis sur une seule et même plage de données et
comportant plusieurs champs de pages. Disons pour illustrer:
- Continent
- Pays
- Ville
Je sais désormais, grâce à Isabelle comment afficher le même champ de page
dans tous ces TCD et leur faire claculer les données en un seul clic !
J'aimerais toutefois qu'une sélection dans la champ de page "Continent" soit
équivalente à la fonction 'Tri" d'une page normale, à savoir qu'en
choisissant "Europe" comme continent, on ne puisse plus trouver dans la liste
déroulante du champ de page "Pays" le Canada, la Bolivie, la Chine ou le
Japon, etc..., ni dans la dans la liste déroulante du champ de page "Ville"
New-York, Auckland, New Dehli, etc....et si possible vice versa : Si on
choisit Paris dans le champ de page "Ville", que les listes déroulantes
affichent comme seul choix possible : Pays = France, Continent = Europe.

Vous me direz d'apprendre la géographie ! ...c'est plus utile et plus facile
.. Certes, mais si on met en champs de pages des notions moins intuitives,
cela me sera grandement utile.

Merci à vos cellules grises et bon WE à tous
--
Merci

DD





Avatar
dédélafinance
Bonjour Isabelle,

Je tourne tellement en rond que j'ai raté ma réponse à votre deuxième
message. Et je n'ai pas pour habitude de laisser les bonnes volontés de ce
groupe sans réponse, au moins de courtoisie. Sorry !, je recommence donc.

Cela n'est a proiri pas ce que j'espérais, mais je voulais en avoir le coeur
net et il y a peut-être et sûrement qque chose à en apprendre.

Voilà :

J'ai refait 2 TCD avec tous les champs de page cette fois en lignes sur une
nouvelle page et y ai incorporé le précieux code préconisé.

Lorsque je fais une sélection sur la (première) ligne "Continent" du 1er
TCD, le code "calculate" se déclenche, mais bute sur le 2ème § au niveau de :

..PivotFields("Continent").PivotItems(v).Visible = True

qu'il écrit en rouge dans le débogueur et annonce une "Erreur de
compilation; erreur de syntaxe".

Alors je ne peux pas aller plus loin, car je suis incapable de comprendre
l'aide Microsoft et d'y faire (si vraiment nécessaire) les corrections
demandées.

Peut-être est-ce dû à ma façon de bâtir les TCD ?

Pouvez-vous m'aider davantage SVP ?

--
Merci d'avance

DD



correction :

Private Sub Worksheet_Calculate()
With ActiveSheet.PivotTables("Tableau croisé dynamique1")
For Each pf In .PivotFields("Continent").PivotItems
If pf.Visible = True Then
v = pf
Exit For
End If
Next
End With

With ActiveSheet.PivotTables("Tableau croisé dynamique2")
..PivotFields("Continent").PivotItems(v).Visible = True
For Each pf In .PivotFields("Continent").PivotItems
If pf <> v Then pf.Visible = False
Next
End With
End Sub

isabelle



Avatar
MichDenis
Tu peux toujours essayer avec "UN" point en début de ligne ...

.PivotFields("Continent").PivotItems(v).Visible = True





"dédélafinance" a écrit dans le message de news:

Bonjour Isabelle,

Je tourne tellement en rond que j'ai raté ma réponse à votre deuxième
message. Et je n'ai pas pour habitude de laisser les bonnes volontés de ce
groupe sans réponse, au moins de courtoisie. Sorry !, je recommence donc.

Cela n'est a proiri pas ce que j'espérais, mais je voulais en avoir le coeur
net et il y a peut-être et sûrement qque chose à en apprendre.

Voilà :

J'ai refait 2 TCD avec tous les champs de page cette fois en lignes sur une
nouvelle page et y ai incorporé le précieux code préconisé.

Lorsque je fais une sélection sur la (première) ligne "Continent" du 1er
TCD, le code "calculate" se déclenche, mais bute sur le 2ème § au niveau de :

..PivotFields("Continent").PivotItems(v).Visible = True

qu'il écrit en rouge dans le débogueur et annonce une "Erreur de
compilation; erreur de syntaxe".

Alors je ne peux pas aller plus loin, car je suis incapable de comprendre
l'aide Microsoft et d'y faire (si vraiment nécessaire) les corrections
demandées.

Peut-être est-ce dû à ma façon de bâtir les TCD ?

Pouvez-vous m'aider davantage SVP ?

--
Merci d'avance

DD



correction :

Private Sub Worksheet_Calculate()
With ActiveSheet.PivotTables("Tableau croisé dynamique1")
For Each pf In .PivotFields("Continent").PivotItems
If pf.Visible = True Then
v = pf
Exit For
End If
Next
End With

With ActiveSheet.PivotTables("Tableau croisé dynamique2")
..PivotFields("Continent").PivotItems(v).Visible = True
For Each pf In .PivotFields("Continent").PivotItems
If pf <> v Then pf.Visible = False
Next
End With
End Sub

isabelle



Avatar
dédélafinance
Bonjour Mich,

ni 2 points, ni 1point en début de ligne ne solutionnent la question
Avec 1 (seul) point, le calcul ne se termine pas, il faut en arriver au
"pire" = AltCtrlSuppr !

--
Merci

DD



Tu peux toujours essayer avec "UN" point en début de ligne ...

..PivotFields("Continent").PivotItems(v).Visible = True





"dédélafinance" a écrit dans le message de news:

Bonjour Isabelle,

Je tourne tellement en rond que j'ai raté ma réponse à votre deuxième
message. Et je n'ai pas pour habitude de laisser les bonnes volontés de ce
groupe sans réponse, au moins de courtoisie. Sorry !, je recommence donc.

Cela n'est a proiri pas ce que j'espérais, mais je voulais en avoir le coeur
net et il y a peut-être et sûrement qque chose à en apprendre.

Voilà :

J'ai refait 2 TCD avec tous les champs de page cette fois en lignes sur une
nouvelle page et y ai incorporé le précieux code préconisé.

Lorsque je fais une sélection sur la (première) ligne "Continent" du 1er
TCD, le code "calculate" se déclenche, mais bute sur le 2ème § au niveau de :

...PivotFields("Continent").PivotItems(v).Visible = True

qu'il écrit en rouge dans le débogueur et annonce une "Erreur de
compilation; erreur de syntaxe".

Alors je ne peux pas aller plus loin, car je suis incapable de comprendre
l'aide Microsoft et d'y faire (si vraiment nécessaire) les corrections
demandées.

Peut-être est-ce dû à ma façon de bâtir les TCD ?

Pouvez-vous m'aider davantage SVP ?

--
Merci d'avance

DD



correction :

Private Sub Worksheet_Calculate()
With ActiveSheet.PivotTables("Tableau croisé dynamique1")
For Each pf In .PivotFields("Continent").PivotItems
If pf.Visible = True Then
v = pf
Exit For
End If
Next
End With

With ActiveSheet.PivotTables("Tableau croisé dynamique2")
..PivotFields("Continent").PivotItems(v).Visible = True
For Each pf In .PivotFields("Continent").PivotItems
If pf <> v Then pf.Visible = False
Next
End With
End Sub

isabelle








Avatar
MichDenis
Voici un exemple :

Le champ page s'appelle "product" dans l'exemple
Seul l'item "Apples" de la liste sera visible

'----------------------------------------------------
Sub test()
Dim Pf As PivotItem
With ActiveSheet.PivotTables("Tableau croisé dynamique3")
'Première section - affiche tous les items
' du champ page
'----------------
For Each Pf In .PivotFields("Product").PivotItems
Pf.Visible = True
Next
.PivotFields("Product").CurrentPage = "(Tous)"
.RefreshTable
'----------------

'Section 2
'Cache tous les items du champ page sauf celui
'retenu en l'occurence dans l'exemple "Apples"
With .PivotFields("Product")
.CurrentPage = "Apples"
For Each Pf In .PivotItems
If Pf.Name <> .CurrentPage Then
Pf.Visible = False
End If
Next
End With
.RefreshTable
'--------------------
End With
End Sub
'----------------------------------------------------






"dédélafinance" a écrit dans le message de news:

Bonjour Mich,

ni 2 points, ni 1point en début de ligne ne solutionnent la question
Avec 1 (seul) point, le calcul ne se termine pas, il faut en arriver au
"pire" = AltCtrlSuppr !

--
Merci

DD



Tu peux toujours essayer avec "UN" point en début de ligne ...

..PivotFields("Continent").PivotItems(v).Visible = True





"dédélafinance" a écrit dans le message de news:

Bonjour Isabelle,

Je tourne tellement en rond que j'ai raté ma réponse à votre deuxième
message. Et je n'ai pas pour habitude de laisser les bonnes volontés de ce
groupe sans réponse, au moins de courtoisie. Sorry !, je recommence donc.

Cela n'est a proiri pas ce que j'espérais, mais je voulais en avoir le coeur
net et il y a peut-être et sûrement qque chose à en apprendre.

Voilà :

J'ai refait 2 TCD avec tous les champs de page cette fois en lignes sur une
nouvelle page et y ai incorporé le précieux code préconisé.

Lorsque je fais une sélection sur la (première) ligne "Continent" du 1er
TCD, le code "calculate" se déclenche, mais bute sur le 2ème § au niveau de :

...PivotFields("Continent").PivotItems(v).Visible = True

qu'il écrit en rouge dans le débogueur et annonce une "Erreur de
compilation; erreur de syntaxe".

Alors je ne peux pas aller plus loin, car je suis incapable de comprendre
l'aide Microsoft et d'y faire (si vraiment nécessaire) les corrections
demandées.

Peut-être est-ce dû à ma façon de bâtir les TCD ?

Pouvez-vous m'aider davantage SVP ?

--
Merci d'avance

DD



correction :

Private Sub Worksheet_Calculate()
With ActiveSheet.PivotTables("Tableau croisé dynamique1")
For Each pf In .PivotFields("Continent").PivotItems
If pf.Visible = True Then
v = pf
Exit For
End If
Next
End With

With ActiveSheet.PivotTables("Tableau croisé dynamique2")
..PivotFields("Continent").PivotItems(v).Visible = True
For Each pf In .PivotFields("Continent").PivotItems
If pf <> v Then pf.Visible = False
Next
End With
End Sub

isabelle