Lister le contenu d'un champs Croisé Dynamique
Le
tattoo94
Bonjour,
Il y quelques jour j’avais déjà posé la question, mais visiblement je suis pas très clair dans mon explication, voici donc quelques précisions.
Le but est de pouvoir lister le contenu d’un champ en fonction des éléments ‘filtrés’ dans d’autres champs.
Idéalement dans le pied de page.
Voici un exemple un peu plus détaillé:
Dans le champ 'Page' j'ai: Zone / Marque / Hotels / etc.
Dans le champs 'Ligne' j'ai: Segments clients
Dans le champ 'Colonne' j'ai: Année
Dans le champ ‘Data’ j’ai : chambres vendues et chiffres d’affaires
Donc quand je 'filtre' ma zone et ma marque les hôtels concernés changent (logique) c'est donc la liste de ces hôtels que je veux faire apparaitre. Car les personnes qui lisent mes rapports ne connaissent pas tous la répartition de ces hôtels.
Je pense que cette fois ci c'est plus clair,
Et je vous remercie une fois de plus,
Il y quelques jour j’avais déjà posé la question, mais visiblement je suis pas très clair dans mon explication, voici donc quelques précisions.
Le but est de pouvoir lister le contenu d’un champ en fonction des éléments ‘filtrés’ dans d’autres champs.
Idéalement dans le pied de page.
Voici un exemple un peu plus détaillé:
Dans le champ 'Page' j'ai: Zone / Marque / Hotels / etc.
Dans le champs 'Ligne' j'ai: Segments clients
Dans le champ 'Colonne' j'ai: Année
Dans le champ ‘Data’ j’ai : chambres vendues et chiffres d’affaires
Donc quand je 'filtre' ma zone et ma marque les hôtels concernés changent (logique) c'est donc la liste de ces hôtels que je veux faire apparaitre. Car les personnes qui lisent mes rapports ne connaissent pas tous la répartition de ces hôtels.
Je pense que cette fois ci c'est plus clair,
Et je vous remercie une fois de plus,

Poser une question


Essaie la macro :
Sub test()
Dim PiedDePage As String, pi As PivotItem
Dim tblZone() As String, tblMarque() As String
Dim Ligne As Integer, Zone As String, Marque As String
ReDim tblZone(0)
ReDim tblMarque(0)
With ActiveSheet.PivotTables("Tableau croisé dynamique1")
For Each pi In .PivotFields("Zone").PivotItems
If pi.Visible = True Then
tblZone(UBound(tblZone)) = pi.Name
ReDim Preserve tblZone(UBound(tblZone) + 1)
End If
Next pi
ReDim Preserve tblZone(UBound(tblZone) - 1)
For Each pi In .PivotFields("Marque").PivotItems
If pi.Visible = True Then
tblMarque(UBound(tblMarque)) = pi.Name
ReDim Preserve tblMarque(UBound(tblMarque) + 1)
End If
Next pi
ReDim Preserve tblMarque(UBound(tblMarque) - 1)
For Each pi In .PivotFields("Hotels").PivotItems
Ligne = Application.Match(pi.Name, [Feuil1!C:C], 0)
Zone = Application.Index([Feuil1!A:A], Ligne)
Marque = Application.Index([Feuil1!B:B], Ligne)
If IsNumeric(Application.Match(Zone, tblZone, 0)) And _
IsNumeric(Application.Match(Marque, tblMarque, 0)) Then
PiedDePage = PiedDePage & pi.Name & ", "
End If
Next pi
End With
PiedDePage = Left(PiedDePage, Len(PiedDePage) - 2)
ActiveSheet.PageSetup.LeftFooter = PiedDePage
MsgBox PiedDePage
End Sub
correspondant au classeur :
http://cjoint.com/?lfnXDGusad
Daniel
Sub test()
Dim PiedDePage As String, pi As PivotItem
Dim tblZone() As String, tblMarque() As String
Dim Ligne As Integer, Zone As String, Marque As String
ReDim tblZone(0)
ReDim tblMarque(0)
With ActiveSheet.PivotTables("Tableau croisé dynamique1")
For Each pi In .PivotFields("Zone").PivotItems
If pi.Visible = True Then
tblZone(UBound(tblZone)) = pi.Name
ReDim Preserve tblZone(UBound(tblZone) + 1)
End If
Next pi
ReDim Preserve tblZone(UBound(tblZone) - 1)
For Each pi In .PivotFields("Marque").PivotItems
If pi.Visible = True Then
tblMarque(UBound(tblMarque)) = pi.Name
ReDim Preserve tblMarque(UBound(tblMarque) + 1)
End If
Next pi
ReDim Preserve tblMarque(UBound(tblMarque) - 1)
For Each pi In .PivotFields("Hotels").PivotItems
If pi.Visible = True Then
Ligne = Application.Match(pi.Name, [Feuil1!C:C], 0)
Zone = Application.Index([Feuil1!A:A], Ligne)
Marque = Application.Index([Feuil1!B:B], Ligne)
If IsNumeric(Application.Match(Zone, tblZone, 0)) And _
IsNumeric(Application.Match(Marque, tblMarque, 0)) Then
PiedDePage = PiedDePage & pi.Name & ", "
End If
End If
Next pi
End With
PiedDePage = Left(PiedDePage, Len(PiedDePage) - 2)
ActiveSheet.PageSetup.LeftFooter = PiedDePage
MsgBox PiedDePage
End Sub
Daniel