Erreur 400 dans macro d'actualisation des TCdyn
Bonsoir à tous,
Je requiers de l'aide sur un problème que je ne parviens pas à résoudre...
Mon projet : actualiser tous les tableaux croisés dynamiques d'un classeur => Il y en 5 par feuille sachant que mon classeur peut en contenir jusqu'à 30! (Une par collaborateur)
Mon problème : la macro dont vous trouverez le code ci-dessous (et dont je ne suis évidemment pas l'auteur...) ne fonctionne plus lorsque j'ai crée plusieurs copies de ma feuille "originale". Un message d'erreur 400 s'affiche quand je clique sur le bouton et un message 1004 quand je lance la macro depuis la page de code.
Bien que j'ai pris le temps de lire les fils de discussion en lien avec mon problème, je ne parviens pas à le résoudre car je suis trop novice.
Je vous remercie par avance de l'attention que vous accorderez à mon problème.
Sub AdjustAllPivotDataRanges()
'PURPOSE: Dynamically change every pivot table's data source range in the workbook
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault
ActiveSheet.Unprotect Password:="xxxx"
Dim sht As Worksheet
Dim pvt As PivotTable
Dim StartPoint As Range
Dim rng As Range
Dim SourceAddress As String
'Enter Worksheet Name that holds your Pivot data source
Set sht = ActiveWorkbook.Worksheets("BDD")
'Enter first cell in your Pivot data source
Set StartPoint = sht.Range("A1")
'Create SourceData address
Set rng = sht.Range(StartPoint, StartPoint.SpecialCells(xlLastCell))
SourceAddress = sht.Name & "!" & rng.Address(ReferenceStyle:=xlR1C1)
'Loop through and update pivot tables with new data source range
For Each sht In ThisWorkbook.Worksheets
For Each pvt In sht.PivotTables
'Change Pivot Table's data source range address
pvt.ChangePivotCache _
ThisWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=SourceAddress)
'Ensure Pivot Table is refreshed
pvt.RefreshTable
Next pvt
Next sht
'Completion Message
MsgBox "Tous les tableaux du classeur ont été actualisés", vbInformation
ActiveSheet.Protect Password:="xxxx", Contents:=True, UserInterfaceOnly:=True, AllowUsingPivotTables:=True, AllowFiltering:=True, AllowSorting:=True
End SubRebonsoir,
Après quelques recherches sur le net, je pense avoir résolu mon problème en procédant autrement pour actualiser les tableaux. Mes multiples tests avec le nouveau code n'ont pas généré de bug jusqu'ici...
ancienne version : pvt.RefreshTable
nouvelle version : ActiveWorkbook.RefreshAll
Merci à ceux qui ont jeté un coup d'oeil...même si je ne vous pas laissé le temps de me donner une réponse!
Puisque nous sommes sous le signe de l'entraide, voici le site sur lequel j'ai trouvé ma solution :
http://www.thespreadsheetguru.com/blog/2014/9/27/vba-guide-excel-pivot-tables (en anglais uniquement)
Eric