Mise a jour des champs du TDC en temps réel

11planning.zip (174.50 Ko)

Bonjour à tous et bonne année 2022!

Sur mon lieu de travail nous utilisons un fichier Excel pour planifier le personnel sur les différents postes de travail.
Ce fichier utiliser plusieurs TDC pour mettre en forme les données en fonctions des horaires du personnel.

L'utilisation est relativement simple. Nous avons une feuille pour une semaine. nous utilisons en routine 5 feuilles que nous renommons au fur et à mesure qu'on avance dans l'année. Dans la feuille nous rentrons la date souhaité et nous attribuons le personnel aux différents postes de travail en changeant lattribut de la colonne A. Une fois les changements faits il suffit d'appuyer sur le bouton "actualiser" pour que les TDC prennent en compte les modifications apportées.

Depuis que ce fichier est sur le SharePoint de l'entreprise j'ai remarqué que le fait d'appuyer sur le bouton "actualiser" à tendance à faire planter le fichier si on est plusieurs à l'avoir ouvert en même temps. ça implique un arrêt systématique d'Excel et de tout les fichiers ouvert, sans messages d'erreur et sans sauvegarde des dernières modifications.. Si on a le malheur d'avoir ce planning ouvert et qu'en même temps on travail sur un autre fichier, lors du plantage on perd tout. Pas cool du tout pour les collègues

Ma demande est: Est-t 'il possible de mettre à jour les TDC "en temps réel" lors de modifications apportées dans la colonne A de la feuille semaine que l'on traite? Sans avoir à recalculer l'ensemble des TDC de l'ensembles des feuilles à chaque fois qu'on appuie sur le bouton "actualiser"? A savoir que dans le fichier il y a 30 TDC qui se mettent à jours en même temps..

Et question bonus, sait-t 'on pourquoi Excel plante de cette manière sans afficher d'erreur lorsqu'il est partagé dans un SharePoint alors qu'en local on ne rencontre pas ce problème? et peut-on l'éviter?

En pièce jointe je vous ai mis une version anonymisé de ce fichier avec des données en moins, cependant le fonctionnement du fichier reste strictement identique.

Je vous remercie d'avance pour votre temps et votre aide.
Xaroks

Bonjour

Une proposition. La feuille "Liste TCDs" peut être supprimer elle n'est là que pour les tests. Ainsi que la macro "ListeTableauxCroisesDynamiques()" dans le Module1

En principe ça ne devrait actualiser qu'un seul TCD, je ne sait pas pourquoi ça actualise tous les TCDs de la feuille mais comme je suppose que c'est le but recherché je n'ai pas creusé la question.

19planning.zip (160.79 Ko)

Hello Yal

Merci pour ta proposition. J'ai recopier le bout de code du bouton actualiser dans le fichier planning qu'on utilise. Je ne sais pas pourquoi le fait que le code générait une erreur 1004 dans mon fichier. J'ai dû modifier la ligne en changeant le numéro 9 par 7. Depuis ça semble fonctionner correctement.

Set tcd = ActiveSheet.PivotTables("Tableau croisé dynamique9")

Nous allons travailler avec cette modification un moment afin de voir si cela résous ou non le problème de plantage d'Excel lorsque nous sommes plusieurs dessus. Je ferai un retour plus tard.

Encore une question, ne serait-il pas possible de se passer de l'actualisation manuelle via le bouton? qu'il applique le changement dès qu'il est détecté?

Bonjour xaroks

"Tableau croisé dynamique9" c'est le nom d'un des TCDs. Visiblement ce n'est pas les mêmes noms sur ta version. Je vais regarder si on peut se passer du nom.

Je ne comprends pas ta dernière question. Par quoi faudrait il que l'actualisation soit déclenchée?

Voici le code pour actualiser tous les TCDs de la feuille active donc sans toucher aux autres feuilles.

Sub Rectangleàcoinsarrondis1_Cliquer()
  Application.ScreenUpdating = False
  Dim tcd As PivotTable
  For Each tcd In ActiveSheet.PivotTables
    tcd.RefreshTable
  Next tcd
  Application.ScreenUpdating = True
End Sub

Bonjour,
Une autre proposition.
Chaque feuille dispose d'un cache et troisTCDs.
Cdlt.

Sub Rectangleàcoinsarrondis1_Cliquer()
Dim n As Long
    n = ActiveSheet.PivotTables(1).CacheIndex
    ActiveWorkbook.PivotCaches(n).Refresh
End Sub

Et en ajoutant une gestion des erreurs ça devrait éviter les plantages

Sub Rectangleàcoinsarrondis1_Cliquer()
  Dim tcd As PivotTable
  On Error GoTo erreur
  Application.ScreenUpdating = False
  For Each tcd In ActiveSheet.PivotTables
    tcd.RefreshTable
  Next tcd
  Application.ScreenUpdating = True
  Exit Sub

erreur:
  MsgBox "Les tableaux dynamiques n'ont pas été actualisés"
  On Error GoTo 0
  Application.ScreenUpdating = True
End Sub

Merci pour vos contributions!

J'ai mis le code qui intègre la gestion d'erreur.
Si d'ici le milieu de la semaine prochaine le fichier n'a pas subit de plantage je passerai le sujet en résolu!

Cordialement

Rechercher des sujets similaires à "mise jour champs tdc temps reel"