Interdire la mise à jour manuelle des TCD

Bonjour,

J'ai un fichier avec une base de données qui doit être mise à jour régulièrement et plusieurs tableaux croisés dynamiques.

Et j'ai un problème, c'est que la base de données est extraite d'un logiciel, et que les dates ne sont pas au bon format ( il faut convertir les dates pour qu'elles soient reconnues comme des dates )

ce qui devient problématique car si l'on met à jour les TCD avant de convertir les dates dans la BDD, ça casse tout car les filtres s'effacent, et il faut ensuite les remettre.

J'aimerais donc empêcher les utilisateurs de mettre à jour le TCD de la manière traditionnelle ( par le bouton dans le ruban ), et que ça soit possible que à travers le bouton VBA qui sert à cet effet.

Est ce que quelqu'un sait si ce code fonctionne pour empêcher de mettre à jour les TCD à travers tous les moyens ( hors VBA )

ou si il y a un risque ?

Set pt = ActiveSheet.PivotTables("PivotTable1") 
    pt.ManualUpdate = False

Je pensais peut être aussi qu'il y aurait peut être un moyen de cacher l'option dans le ruban ?

En vous remerciant d'avoir lu !

Bonjour,

Un début de réponse dans le fichier.

Il y a une procédure à l'ouverture du fichier (Workbook_Open) et 2 procédures dans un module standard.

A te relire.

Cdlt.

6flodino.xlsm (21.75 Ko)

Merci beaucoup !

Je comprends la logique, à l'ouverture du workbook : Interdire la mise à jour des TCD avec le code sur Thisworkbook

Et dans le bouton qui met à jour les TCD, juste avant, autoriser la mise à jour des TCD.

c'est très intelligent.

Par contre, je n'arrive pas à faire fonctionner le code sur Thisworkbook pour interdire la mise à jour des TCD car c'est possible de mettre à jour le classeur directement ? je ne comprends pas ?

Re,

Essaie ainsi :

Private Sub Workbook_Open()
Dim ws As Worksheet, pt As PivotTable
    For Each ws In ActiveWorkbook.Worksheets
        For Each pt In ws.PivotTables
            pt.PivotCache.RefreshOnFileOpen = False
            pt.PivotCache.EnableRefresh = False
        Next pt
    Next ws
End Sub

ça marche très bien avec ce code merci beaucoup !

Rechercher des sujets similaires à "interdire mise jour manuelle tcd"