Note: The other languages of the website are Google-translated. Back to English
Se connecter  \/ 
x
or
x
INSCRIPTION  \/ 
x

or

Comment répertorier tous les tableaux croisés dynamiques d'un classeur?

En supposant que vous ayez un grand classeur contenant plusieurs tableaux croisés dynamiques, vous souhaitez maintenant répertorier tous les tableaux croisés dynamiques de ce classeur, est-ce possible? Bien sûr, le code VBA suivant dans cet article vous rendra service. Pour en savoir plus, veuillez lire l'article ci-dessous.

Lister tous les tableaux croisés dynamiques d'un classeur avec le code VBA

Onglet Office Activez la modification et la navigation par onglets dans Office et simplifiez considérablement votre travail ...
Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%
  • Réutiliser n'importe quoi: Ajoutez les formules, les graphiques et tout autre élément les plus utilisés ou les plus complexes à vos favoris et réutilisez-les rapidement à l'avenir.
  • Plus de 20 fonctionnalités de texte: Extraire le numéro de la chaîne de texte; Extraire ou supprimer une partie des textes; Convertissez les nombres et les devises en mots anglais.
  • Outils de fusion: Plusieurs classeurs et feuilles en un seul; Fusionner plusieurs cellules / lignes / colonnes sans perdre de données; Fusionner les lignes en double et la somme.
  • Outils de fractionnement: Diviser les données en plusieurs feuilles en fonction de la valeur; Un classeur vers plusieurs fichiers Excel, PDF ou CSV; Une colonne à plusieurs colonnes.
  • Coller sauter Lignes cachées / filtrées; Compte et somme par couleur d'arrière-plan; Envoyez des e-mails personnalisés à plusieurs destinataires en masse.
  • Super filtre: Créez des schémas de filtres avancés et appliquez-les à toutes les feuilles; Trier par semaine, jour, fréquence et plus encore; Filtre par gras, formules, commentaire ...
  • Plus de 300 fonctionnalités puissantes; Fonctionne avec Office 2007-2019 et 365; Prend en charge toutes les langues; Déploiement facile dans votre entreprise ou organisation.

flèche bleue bulle droite Lister tous les tableaux croisés dynamiques d'un classeur avec le code VBA


Le code VBA suivant peut vous aider à répertorier tous les noms de tableau croisé dynamique avec leurs attributs, tels que la plage de données source, le nom de la feuille de calcul, la date actualisée, etc.

1. Ouvrez votre classeur dans lequel vous souhaitez répertorier tous les tableaux croisés dynamiques.

2. Maintenez le ALT + F11 clés, et il ouvre le Fenêtre Microsoft Visual Basic pour Applications.

3. Cliquez insérer > Moduleet collez le code suivant dans le Fenêtre du module.

Code VBA: liste tous les tableaux croisés dynamiques d'un classeur

Sub ListPivotsInfor()
'Update 20141112
    Dim St As Worksheet
    Dim NewSt As Worksheet
    Dim pt As PivotTable
    Dim I, K As Long
    Application.ScreenUpdating = False
    Set NewSt = Worksheets.Add
    I = 1: K = 2
    With NewSt
        .Cells(I, 1) = "Name"
        .Cells(I, 2) = "Source"
        .Cells(I, 3) = "Refreshed by"
        .Cells(I, 4) = "Refreshed"
        .Cells(I, 5) = "Sheet"
        .Cells(I, 6) = "Location"
        For Each St In ActiveWorkbook.Worksheets
            For Each pt In St.PivotTables
                I = I + 1
                .Cells(I, 1).Value = pt.Name
                .Cells(I, 2).Value = pt.SourceData
                .Cells(I, 3).Value = pt.RefreshName
                .Cells(I, 4).Value = pt.RefreshDate
                .Cells(I, 5).Value = St.Name
                .Cells(I, 6).Value = pt.TableRange1.Address
            Next
        Next
        .Activate
    End With
    Application.ScreenUpdating = True
End Sub

4. Puis appuyez F5 clé pour exécuter ce code, tous les noms de tableau croisé dynamique, la plage de données source, le nom de la feuille de calcul et d'autres attributs sont répertoriés dans une nouvelle feuille de calcul placée au début de votre feuille de calcul active, comme illustré ci-dessous:

doc-list-all-pivottable-1


Articles Liés:

Comment vérifier si un tableau croisé dynamique existe dans un classeur?

Comment ajouter plusieurs champs dans le tableau croisé dynamique?


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtrée...
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammes...
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellules...
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDF...
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Zulfikar Ali · 9 days ago
    That's Awesome. 
  • To post as a guest, your comment is unpublished.
    mprou · 1 years ago
    VERY handy to have in a pinch! Thank you.
  • To post as a guest, your comment is unpublished.
    Fuzz-Head · 2 years ago
    Thanks for the post, I cleaned up the code a little by defining I and Long and deleting the ref to K since it wasn't used. Lastly I added a line just below your .Activate to show .Columns.AutoFit
  • To post as a guest, your comment is unpublished.
    agarzon@gmail.com · 2 years ago
    This is awesome! I have been looking for a code like this one, but with the addition of showing all active fields per table. I need to clean up the source tables from unnecessary fields (too heavy) and they feed a book of over 300 pivots. I'd prefer not to go one pivot table at a time to figure out which fields I can eliminate... If you could show me how, it would be incredible... Thanks!
  • To post as a guest, your comment is unpublished.
    Vinicius · 2 years ago
    Amazing!!! thksss!!!!
  • To post as a guest, your comment is unpublished.
    Mark · 3 years ago
    Saved me from a major headache!
    Couldn't find what pivot table was causing a "Refresh All Error"
    Boom Listed with locations, Thank you so much
  • To post as a guest, your comment is unpublished.
    bass · 3 years ago
    For Connection Only info the Data connection info isa property of the PivotCache
    I have a workbook that has over 40 pivot tables with a mix of Excel Tables and SQL server Data Connections. I use the following code to keep track of them


    Sub GetPivotTableInfo()

    Dim wb As Workbook
    Dim pvt As PivotTable
    Dim wsheet As Worksheet
    Dim pc As PivotCache

    Set wb = ActiveWorkbook
    For Each wsheet In wb.Worksheets
    For Each pvt In wsheet.PivotTables
    Debug.Print wsheet.Name & ": " & pvt.Name
    Set pc = wb.PivotCaches(pvt.CacheIndex)
    If pc.SourceType = xlDatabase Then
    Debug.Print pc.SourceData
    Else
    If pc.QueryType = xlOLEDBQuery Then
    Debug.Print pc.Connection
    Debug.Print pc.SourceConnectionFile
    Debug.Print pc.WorkbookConnection.Name
    Debug.Print pc.CommandText
    End If
    End If


    Next pvt
    Next wsheet
  • To post as a guest, your comment is unpublished.
    Turnabout · 3 years ago
    Very powerful. Thanks so much.
  • To post as a guest, your comment is unpublished.
    HDF · 4 years ago
    Thanks for this. It's a great piece of code, very useful.

    As others have posted, I think it doesn't work for pivot tables whose underlying data source is based on a Connection Only data query.

    I have a workbook with one data table. I subsequently create more refined workbook data queries based on this one table's data. The queries are connection only (avoiding an unnecessary increase in the size of the workbook). I then created pivot tables that rely on the data in the workbook queries.

    When I run the code, it works fine for traditionally sourced pivot tables, but it hits a run-time error when it gets to the pivot tables based on data in Workbook Queries. Specifically; it gives a Run-time error "1004": Application-defined or object defined error. The line of code where the error occurs is:

    .cells(I, 2).value = pt.SourceData

    Thanks for providing the code and I hope the above helps you refine it.
  • To post as a guest, your comment is unpublished.
    Ross · 4 years ago
    I have tried to run this in excel 2013 and I get the Run-time error '1004': Application-defined or object-defined error.

    If comment out the .Cells(I, 2).Value = pt.SourceData line it will run fine, can you advise me what I might need to do to get the SourceData part to work?

    Thanks Ross
    • To post as a guest, your comment is unpublished.
      EdH · 4 years ago
      [quote name="Ross"]I have tried to run this in excel 2013 and I get the Run-time error '1004': Application-defined or object-defined error.

      If comment out the .Cells(I, 2).Value = pt.SourceData line it will run fine, can you advise me what I might need to do to get the SourceData part to work?

      Thanks Ross[/quote]

      I got the same error. I think it is bombing when the source for a pivot table is the Excel Data Model and used by PowerPivot.
  • To post as a guest, your comment is unpublished.
    Dave · 5 years ago
    I needed to fix a file that had over 60 pivot tables in it. Initially clicked each one at a time to fix ( as is the case for times when someone 'unlinks' them but I could not fina all the wrong ones. It found the last one on a few columns that were hidden on the original) . Nice piece of code !
  • To post as a guest, your comment is unpublished.
    Pat Z · 5 years ago
    This was a massive find for me! Wish I had looked for this solution three days ago. It would have saved me hours!! Thanks!
  • To post as a guest, your comment is unpublished.
    Doaa · 5 years ago
    excellent. thank you.
  • To post as a guest, your comment is unpublished.
    Drip LeBuk · 6 years ago
    Good stuff. Could include this snippet to make the pivot table name a hyperlink.

    .Cells(I, 1).Parent.Hyperlinks.Add Anchor:=.Cells(I, 1) _
    , Address:="" _
    , SubAddress:="'" + St.Name + "'!" + Split(pt.TableRange1.Address, ":")(0) _
    , TextToDisplay:=pt.Name
    With .Cells(I, 7).Font
    .ColorIndex = xlAutomatic
    .Underline = xlUnderlineStyleNone
    End With
    With .Cells(I, 7).Characters(Start:=1, Length:=Len(pt.Name)).Font
    .Underline = xlUnderlineStyleSingle
    .Color = -4165632
    End With