Actualisation d'un croisé via un bouton se trouvant sur un autre onglet
Bonjour à tous,
C’est un peu compliqué à expliquer, mais je vais tout de même essayer…
J’ai un premier onglet « Rapport » (protégé avec un mot de passe) qu’un opérateur complet à chaque réception de marchandise. Dès qu’il a terminé il clique sur un bouton que j’ai affecté à une Macro qui va enregistrer et imprimer le document (et ainsi de suite). Maintenant, une autre personne consulte ce document (en lecture seule), mais sur un autre onglet « TEST » qui est caché et aussi protégé par un mot de passe, il s’agit un croisé dynamique qui fait référence à l’onglet « Rapport ».
Ce que j’aimerai faire : actualiser la croisée dynamique automatiquement lorsque l’opérateur clique sur le bouton qui est affecté à la macro enregistrer et imprimer mais j’obtiens toujours l’erreur ci-dessous au niveau (ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotCache.Refresh ), pour info le code ci-dessous est uniquement de la première partie de la macro (actualisation du croisé, ensuite je vais intégrer l’enregistrement et l’impression).
Est-ce qu’il y a une solution d’actualiser le croisé sans que l’opérateur puis avoir accès à l’onglet "TEST" ?
Merci pour votre aide.
Olivier
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveSheet.Unprotect
Sheets("Rapport").Select
Sheets("TEST").Visible = True
ActiveCell.Offset(-8, -2).Range("A1").Select
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotCache.Refresh
Sheets("TEST").Select
ActiveWindow.SelectedSheets.Visible = False
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:= _
True
ActiveWorkbook.Save
End Sub
Bonjour,
Le bouton est sur quelle feuille ? Le TCD est sur quelle feuille ? Quelles sont les feuilles protégées ? Les feuilles protégées par mot de passe ?
C'est un peu confus, surtout à la lecture de ton code.
On n'a pas besoin de sélectionner ou d'activer la feuille du TCD, pour actualiser ce dernier !...
Peux-tu joindre un fichier ?
Cdlt.
Bonjour Larouve,
Je trouve le titre de ton sujet « Actualisation d'un croisé » très intéressant ! malheureusement, je crois qu'il n'est plus d'actualité : les guerres des Croisades sont terminées depuis longtemps, mais j'admets volontiers qu'anoblir un Croisé avant qu'il parte au combat était une forme d'actualisation (une sorte de rite d'initiation, quoi).
Heureusement, notre Grand Historien Jean-Eric, expert en TCD médiévaux de toutes sortes, t'a posé exactement toutes les questions qu'il fallait ! (un grand merci à lui
dhany
Bonjour Jean-Eric,
Merci pour votre réponse et question.
Voici le fichier qui est actuellement dans l'état (onglet masqué et feuille protégée) que j'aimerai retrouver après avoir cliqué sur le bouton (que j'ai créé) avec la disquette "Enregistrer". En effet ce bouton regroupe plusieurs fonctions (1. Retirer la protection de la feuille "Rapport", 2. insérer une nouvelle ligne, 3. trier dans l'ordre des dates, 4. Afficher l'onglet "TEST", 5. retrier la protection de la feuille qui contient le tableau croisé, 6. actualiser, 7. protéger la feuille qui contiens le tableau croisé, 8. masquer l'onglet "TEST", 9. protéger la feuille "Rapport" et la structure, et pour finir 10. Enregistrer.
La personne qui complète se rapport ne dois pas avoir accès à l'onglet "TEST".
Voilà, j'espère que c'est un peu plus claire et désolé pour mes explications un peu confuse.
Merci beaucoup pour votre aide.
Olivier
Bonjour,
Le bouton est sur quelle feuille ? Le TCD est sur quelle feuille ? Quelles sont les feuilles protégées ? Les feuilles protégées par mot de passe ?
C'est un peu confus, surtout à la lecture de ton code.
On n'a pas besoin de sélectionner ou d'activer la feuille du TCD, pour actualiser ce dernier !...
Peux-tu joindre un fichier ?
Cdlt.
Bonjour,
Un début de réponse à méditer.
Cdlt.
Public Sub Data_processing()
Dim wb As Workbook
Dim ws As Worksheet, ws2 As Worksheet
Dim lo As ListObject
Set wb = ActiveWorkbook
Set ws = wb.Worksheets("Rapport")
Set lo = ws.ListObjects(1)
Set ws2 = wb.Worksheets("TEST")
wb.Unprotect
ws.Unprotect
With lo
.ListRows.Add
.Sort.SortFields.Add .ListColumns(1).DataBodyRange, xlSortOnValues, xlAscending
.Sort.Apply
.Sort.SortFields.Clear
End With
ws.Protect
With ws2
.Unprotect
.PivotTables(1).PivotCache.Refresh
.Protect
End With
With wb
.Protect Structure:=True, Windows:=False
.Save
End With
End SubSuper ! Merci beaucoup, cela fonctionne parfaitement.
Si j'ose encore, comment puis intégrer à cette macro un trie sur la colonne des dates de la plus récente à la plus ancienne et comment dois-je m'y prendre pour mettre un mot de passe sur la feuille "Rapport" et qu'il me le demande systématiquement si je souhaite déverrouiller ?
Encore un grand merci et excellente soirée.
Olivier
Re,
Une nouvelle proposition à étudier.
Cdlt.
Option Explicit
Option Private Module
Public Const PWD As String = "excel"
Public Sub Data_processing()
Dim wb As Workbook
Dim ws As Worksheet, ws2 As Worksheet
Dim lo As ListObject
Set wb = ActiveWorkbook
Set ws = wb.Worksheets("Rapport")
Set lo = ws.ListObjects(1)
Set ws2 = wb.Worksheets("TEST")
wb.Unprotect Password:=PWD
ws.Unprotect Password:=PWD
With lo
.ListRows.Add
.Sort.SortFields.Add .ListColumns(1).DataBodyRange, _
xlSortOnValues, _
xlDescending
.Sort.Apply
.Sort.SortFields.Clear
End With
With ws
.EnableAutoFilter = True
.Protect Password:=PWD, _
userinterfaceonly:=True, _
AllowSorting:=True, _
AllowFiltering:=True
End With
With ws2
.Unprotect Password:=PWD
.PivotTables(1).PivotCache.Refresh
.EnablePivotTable = True
.Protect Password:=PWD, _
userinterfaceonly:=True, _
AllowUsingPivotTables:=True
End With
With wb
.Protect Password:=PWD, Structure:=True, Windows:=False
.Save
End With
End SubBonjour,
Merci bien pour le tri et blocage, mais est-ce possible avec la ligne vide ajoutée systématiquement en première position ? En ce qui concerne l'onglet "TEST", je ne le trouve plus, l'avez-vous supprimé par erreur ? Dans le fichier joint j'ai ajouté un n° d'article et inséré une ligne, celle-ci se trouve en deuxième position.
Merci d'avance pour votre aide,
Olivier
Bonjour,
Je renvoie le classeur pour l'histoire de la feuille TEST.
Mais dans la mesure ou tu as demandé une protection du classeur, tu ne pourras pas l'afficher.
Pour le reste, je ne comprends pas !...
A l'insertion d'une ligne, je t'ai proposé 2 tris (ascendant, puis descendant).
La procédure reprend ta demande !...
Cdlt.
Nota : comment as-tu fait pour insérer un nouvel article ?
Bonjour Jean-Éric,
Avec votre dernière version et une autre macro, je suis enfin arrivé au résultat que je souhaitais.
Je vous remercie vivement pour votre aide et temps passé.
Passez un excellent week-end.
Olivier