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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel.C
Bonjour.
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
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,
Bonjour.
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
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.
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
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,
Daniel.C
Plus précisément, si les hôtels sont en champ de page :
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
Bonjour.
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
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,
Plus précisément, si les hôtels sont en champ de page :
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
Bonjour.
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
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.
Plus précisément, si les hôtels sont en champ de page :
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
Bonjour.
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
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.