VBA Refresh All n'actualise pas tous les TCD

anthooooony

XLDnaute Occasionnel
Bonjour,

J'ai un dilème, dans l'actualisation de divers rapports.

Je passe habituellement, par une macro pour mettre un jour l'ensemble des fichiers d'un dossier. Chaque fichier, comprends plusieurs tableaux croisés.

la macro ci dessous, ouvre les fichiers, elle les met à jour, et se ferme. Lorsque je regarde les connexions de données je m'aperçois que tous les rapports ne sont pas à jour...
par contre pour un même fichier quand je le fais à la main, et je fais actualiser tout, tous les fichiers se mettent à jour...

Je ne comprends pas du tout ce qui a pu se passer, peut etre ai je quelque chose qui bloque sur la macro qui met tout à jour.

J'ai mis une capture d'écran des connexions de données à la suite du lancement de la macro, et à la suite du lancement à la main.

Si quelqu'un à une petite idée, parce que la je ne vois pas di tout di tout.

en vous remerciant par avance cher exceldownlodiens/ennes

Code:
Sub Macro1()
Dim tempo
tempo = Timer

Dim Fichier As String, Chemin As String
Dim Wb As Workbook
Chemin = "S:\Csp Nanterre\Regions test macro\"
Fichier = Dir(Chemin & "*.xlsm")

Do While Fichier <> ""
Set Wb = Workbooks.Open(Chemin & Fichier)
Application.DisplayAlerts = False
ActiveWorkbook.RefreshAll
'suite de la procedure
'
Wb.Close True
Application.DisplayAlerts = True
Set Wb = Nothing
Fichier = Dir
Loop

'MsgBox ("Les fichiers ont été mis à jour !!!")
MsgBox Timer - tempo

End Sub
 

Pièces jointes

  • Image1.jpg
    Image1.jpg
    53.5 KB · Affichages: 89
  • Image1.jpg
    Image1.jpg
    53.5 KB · Affichages: 93
  • Image1.jpg
    Image1.jpg
    53.5 KB · Affichages: 91

Staple1600

XLDnaute Barbatruc
Re : VBA Refresh All n'actualise pas tous les TCD

Bonsoir à tous


Sub Macro1()
Dim tempo
tempo = Timer

Dim Fichier As String, Chemin As String
Dim Wb As Workbook
Chemin = "S:\Csp Nanterre\Regions test macro\"
Fichier = Dir(Chemin & "*.xlsm")

Do While Fichier <> ""
Set Wb = Workbooks.Open(Chemin & Fichier)
Application.DisplayAlerts = False
Wb.RefreshAll
'suite de la procedure
'
Wb.Close True
Application.DisplayAlerts = True
Set Wb = Nothing
Fichier = Dir
Loop

'MsgBox ("Les fichiers ont été mis à jour !!!")
MsgBox Timer - tempo

End Sub
 

anthooooony

XLDnaute Occasionnel
Re : VBA Refresh All n'actualise pas tous les TCD

Bonjour,

J'ai essayé mais ca n'a pas l'air de fonctionner.
Ce que j'ai fait, c'est que j'ai mis pour tester une macro refreshall dans un fichier agence.
Je le lance la macro à distance et ca a l air de fonctionner... etrange. Il faut que j'ai sur chaque dossier du coup et rajouter la macro
 
G

Guest

Guest
Re : VBA Refresh All n'actualise pas tous les TCD

bonjour,

En actualisant les caches avant de tout actualiser:
Code:
Sub truc()
    Dim pvc As PivotCache
    For Each pvc In ThisWorkbook.PivotCaches
        pvc.Refresh      
    Next
    ThisWorkbook.RefreshAll
End Sub

A+
 

anthooooony

XLDnaute Occasionnel
Re : VBA Refresh All n'actualise pas tous les TCD

c'est à ni rien comprendre.. ca continu, j'ai mis ton bout de code pour le lancer et ca continu à ne pas se mettre à jour...

Je pense que je vais mettre une macro sur chaque fichier, et zouuuu, la j'embete tt le monde !

Merci pour vos retours en tout cas.....

Code:
Sub Macro1()
Dim tempo
tempo = Timer

Dim Fichier As String, Chemin As String
Dim Wb As Workbook
Dim pvc As PivotCache
    For Each pvc In ThisWorkbook.PivotCaches
          pvc.Refresh
            Next
Chemin = "S:\Csp Nanterre\Regions test macro\"
Fichier = Dir(Chemin & "*.xlsm")

Do While Fichier <> ""
Set Wb = Workbooks.Open(Chemin & Fichier)
Application.DisplayAlerts = False
Wb.RefreshAll
'suite de la procedure
'
Wb.Close True
Application.DisplayAlerts = True
Set Wb = Nothing
Fichier = Dir
Loop

'MsgBox ("Les fichiers ont été mis à jour !!!")
MsgBox Timer - tempo

End Sub
 

Pièces jointes

  • TRuc de fou.jpg
    TRuc de fou.jpg
    38.6 KB · Affichages: 72
G

Guest

Guest
Re : VBA Refresh All n'actualise pas tous les TCD

re,

Il faut mettre les lignes dans la boucle do while Fichier<>"" en changeant ThisWorkbook par WB

Code:
    Do While Fichier <> ""
        Set wb = Workbooks.Open(Chemin & Fichier)
        For Each pvc In wb.PivotCaches
            pvc.Refresh
        Next
        wb.RefreshAll
        Application.DisplayAlerts = False
        wb.Close True
        Application.DisplayAlerts = True
        Set wb = Nothing
        Fichier = Dir
    Loop
 
G

Guest

Guest
Re : VBA Refresh All n'actualise pas tous les TCD

Re,

Comme dans ton post#1 tu parlais de rapports nous nous sommes dirigés vers les TCD, mais en le relisant je m'aperçois que tu as peut-être des connexions à des sources extérieures de données.

Alors déclare une variable Cnx As WorkBookConnection en haut de ta macro et dans la boucle Do While....Loop:

Code:
For Each cnx In wb.Connections
cnx.Refresh
Next

Et bien sûr mettre le Wb.RefreshAll avant la fermeture / sauvegarde du fichier

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 111
Messages
2 085 407
Membres
102 884
dernier inscrit
Macarena