XL 2016 comment récupérer le nom des champs de second niveau d'un TCD sélectivement

Markess

XLDnaute Nouveau
Bonjour,

Dans mon TCD, j'affiche le nom des clients et pour chaque client leurs articles.
Je souhaiterais pour un client particulier récupérer le nom des articles par macro.

exemple pour le client B : carte 12 et carte x

Pouvez-vous m'aider ?
Merci
 

Pièces jointes

  • Essai_TCD.xlsm
    37.6 KB · Affichages: 12

Markess

XLDnaute Nouveau
Bonjour Markess, le forum

quelle est la finalité de ta demande ?
récupérer par macro le nom des articles par client ne veut rien dire, le TCD fait déjà ça très bien !

Cordialement, @+
Bonjour,

Le but d'exploiter les lignes sélectionnées pour tracer les évolutions journalières ou mensuelles des mouvements de quantité et de montant.

En gros, je coche la ligne client (checkbox ou optionbutton) et ma macro récupère l'ensemble des articles de ce client pour faire le reporting.

J'ai donc besoin des titres des lignes ( les articles). Le fichier posté n'est qu'un exemple pour illustrer mon problème.

Cordialement
Markess.
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Markess, le forum

je comprends toujours pas trop comment tu veux faire, j'ai modifié ton code, cela répondra peut être à ta demande.

Cordialement, @+
VB:
Sub recup()
'
Dim tablo As PivotTable
Dim ref1, ref2 As PivotField
Dim valeur As PivotItem
Dim rang As Range
Dim client As String
Dim carte As Variant
Dim ok As Boolean

    client = "Client B"
'
'
    On Error Resume Next
    With Sheets("Extraction")
        .Select
        With .PivotTables("TCD_extract").PivotFields("Clients")
            .ClearAllFilters
            For Each valeur In .PivotItems
                If valeur = client Then
                    ok = True
                Else
                    valeur.Visible = False
                End If
            Next valeur
            If Not ok Then .ClearAllFilters: MsgBox "Pas de client à ce nom"
        End With
    End With
    
End Sub
 

Markess

XLDnaute Nouveau
Bonjour Yeahou,

Merci pour ton temps.

A force d'essayer on y arrive. ci-dessous la solution (simple quand on la trouve).



VB:
Sub copycolle()
Dim client As String

    client = "Client E"
    Worksheets("Extraction").Select
'    Sheets("Extraction").PivotTables("TCD_extract").PivotFields("Clients").ShowDetail = True
    Worksheets("Extraction").PivotTables("TCD_extract").PivotFields("Clients").PivotItems( _
        client).ShowDetail = True
    Worksheets("Extraction").PivotTables("TCD_extract").PivotSelect client, xlLabelOnly
    Selection.Copy
    Sheets("A").Select
    Range("A3").Select
    ActiveSheet.Paste
    Worksheets("Extraction").PivotTables("TCD_extract").PivotFields("Clients").PivotItems( _
        client).ShowDetail = False

End Sub

Bonne journée.
Markess
 

Discussions similaires