Trier automatiquement la table pivot liée aux données en deux dimensions dans Excel 2007 à l'aide de VBA
Question
Voici une question gênante.J'ai une table pivot dans une feuille de calcul Excel qui obtient ses données directement à partir d'une requête SQL Server.
La table contient des clients sur l'axe vertical et les dates de l'accès horizontal.Les deux doivent être correctement triés - c'est-à-dire des clients comme haut alphabétique en haut et dates à la date d'ordre de gauche à droite.
Je suis assuré que les données sortantes de SQL sont reconnues par Excel comme champ de date.Vous pouvez trier les dates avec succès à l'aide de la fonction manuelle A-Z.Mais je dois le faire automatiquement à l'aide de VBA.
J'avais espéré (Againt Hope) que l'utilisation de deux paramètres de tri sur la requête SQL pourrait faire le tour:
sql = "SELECT * FROM myView ORDER BY Customer, Date"
Set pt = Worksheets("MyReport").PivotTables("MyPivot")
pt.PivotCache.CommandText = sql
pt.RefreshTable
Mais ça ne le fait pas.
Je vois que dans Excel 2010, il y a une fonction d'autosort pratique qui devrait faire ce dont j'ai besoin.Mais je suis bloqué avec 2007. Y a-t-il un moyen de trier mes données dans les deux dimensions?
La solution
Il y a une fonction d'autosort dans Excel 2007, mais elle appartient à l'objet Pivotfields, plutôt que de la table pivot elle-même.
Dim pt As PivotTable
Set pt = Worksheets("myWorksheet").PivotTables("myPivotTable")
pt.PivotFields("DATE").AutoSort xlAscending, "DATE"