Boucle dans un TCD

Bonjour à la communauté VBA,

Cela fait plusieurs jours que je me casse la tête sur un truc qui est certainement très simple pour la grande majorité d'entre vous mais, pas pour moi!

J'ai un fichier avec un TCD qui est filtré par un filtre Conseiller/ère. Le but de la macro que je cherche à faire, c'est de montrer tous les détails sur le CORP1 de l'enregistrer (dans le fichier annexé, cela signifie la plage A1:B45) en format .pdf (avec les 4 premières lignes comme titre si possible) sous le nom CORP 1.pdf puis de cacher les détails, montrer les détails du CORP 2 et, je pense que vous commencer à imaginer la suite... Ceci jusqu'au dernier mohican non je rigole, jusqu'au dernier conseiller (actuellement CORP 18)

Je n'arrive pas à créer la boucle qui liste l'ensemble des conseillers pour ensuite passer du CORP 1 au CORP 2. J'ai déjà passablement consulté le forum pour trouver mon bonheur mais, j'avoue que je m'y perd un peu avec les PivotFields, PivotItems avec ou sans "s" les list, count, name

Voici le fichier incriminé

Je me réjouis de vos retours pour me permettre de me frapper vigoureusement la tête en m'exclamant "Mais bon sang, bien sûr"

Bonjour à tous,

Devant l'afflux de réponse... j'ai continué à me creuser la tête et, après avoir pas mal galéré (il faut être honnête ) j'ai trouvé la solution . Je vais donc la mettre à disposition pour pouvoir constater qu'à la suite de toutes vos corrections, il y avait une solution plus simple et plus efficace.

Mais, bon vu que c'est la première fois que je publie le résultat de mes heures de travail j'ose espérer un peu de compassion

Sub MMT_pdf()

'Macro créée le 15.12.2016 par JMP pour permettre de créer les fichier .pdf individuels de la répartition des MMT

Dim CORP As String
Dim PvtTbl As PivotTable
Dim rng1 As Range
Dim rng2 As Range
Dim Plage As Range
Dim fichier As String

Set PvtTbl = ActiveSheet.PivotTables("MMT")

    With PvtTbl.PivotFields("Conseiller/ère")

'Définir le nombre d'items
        For i = 1 To .PivotItems.Count

'Développer les détails de l'item
            .PivotItems(i).ShowDetail = True

'Définir le nom de l'item dans une variable
CORP = .PivotItems(i).LabelRange

'Sélectionner le données (data & label) de l'item
            PvtTbl.PivotSelect Name:=CORP, Mode:=xlDataAndLabel, UseStandardName:=True

'Définir les plages dans une variable pour pouvoir les copier
Set rng1 = Selection
Set rng2 = Range("A1:B4")
Set Plage = Union(rng1, rng2)

'Copie des données sur une nouvelle feuille. Impossible de le faire sur la feuille du TCD pour la mise en page
            Plage.Copy
            Sheets.Add After:=Sheets(Sheets.Count)
            Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
             SkipBlanks:=False, Transpose:=False
            ActiveSheet.Paste

'Donner le nom du fichier selon la variable du nom de l'item
fichier = "Répartition des MMT de  " & CORP & ".pdf"

'Définir la mise en page
            Application.CutCopyMode = False
            Application.PrintCommunication = False
            ActiveSheet.PageSetup.PrintArea = ""
            With ActiveSheet.PageSetup
                .CenterHorizontally = True
                .CenterVertically = True
                .FitToPagesWide = 1
                .FitToPagesTall = 1
            End With
            Application.PrintCommunication = True

'Suppression des alertes
            Application.DisplayAlerts = False

'Enregistrement du fichier en .pdf dans le répertoire défini
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
             "F:\ORP\Planification\Répartition des MMT\" & fichier, Quality:=xlQualityStandard, _
             IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

 'Suppression de la feuille (3) contenant les données à imprimer
            Sheets(3).Delete
            Application.DisplayAlerts = True
            Sheets(1).Activate

'Réduire les détails de l'item
            .PivotItems(i).ShowDetail = False

'Passer à la prochaine occurence de l'item
        Next

        End With

End Sub

Pour ceux que le paramétrage des TCD dans VBA intéresse, je ne peux que vous recommander le site ci-dessous:

http://www.globaliconnect.com/excel/index.php?option=com_content&view=article&id=154:referencing-an-excel-pivot-table-range-using-vba&catid=79&Itemid=475

Salutations

Rechercher des sujets similaires à "boucle tcd"