Protection Filtre TCD

Re,

Nettement plus facile à comprendre avec un fichier.

Depuis le début, rien ne disait sur le fil que l'on parlait du champ de page...

Le code rend inaccessible tous les filtres de tous les champs du TCD.

Revoici le fichier Base test dans lequel j'ai refait un TCD identique à celui du fichier TCDtest.

Je me suis arrangé pour qu'à l'ouverture du fichier on soit positionné sur la feuille du TCD (Feuil2)

  • Ouvre le fichier puis clique sur la feuille 1 comportant la base test.
  • Clique ensuite sur l'onglet feuille 2 et les champs seront inaccessibles.

Attention que si la feuille est protégée par un mot de passe supplémentaire, il faut aller cocer l'option "utilser les rappports de TCD" dans la boite de dialogue qui s'afficher lorsque l'on protège la feuille (Sous excel 2003 -> à vérifier sous excel 2007))

Amicalement

62basetest-dan.zip (13.15 Ko)

Bonsoir,

J'ai téléchargé le fichier et cela ne fait toujours pas ce que je demandais ( expliqué précédemment =>

à savoir bloquer le filtre réseau par exemple sur A et double clic sur total TCD possible avec récup. des données de A

même les colonnes ne figurant pas dans le TCD).

A quoi sert le code?

Il n'agit apparemment pas.

D'autre part j'avais fait 2 fichiers sciemment car A ne doit pas voir B ni C.

A + Cordialement

re,

à savoir bloquer le filtre réseau par exemple sur A et double clic sur total TCD possible avec récup.

C'est ce que le code fait. J'ai en fait désactivé les filtres de tous les champs. Cela évite aussi d'avoir le choix du réseau en champ de page. Vérifié avec excel 2003, cela fonctionne ainsi que la récupération du total.

j'avais fait 2 fichiers sciemment car A ne doit pas voir B ni C

Pour solutionner ton problème, je préfère travailler dans un seul fichier. Après on peut toujours mettre dans le fichier 2. J'ai d'ailleurs des soucis pour le lire car il est sous excel 2010 mais cela ne change rien au code qu'il suffit de mettre dans le fichier 2.

Eventuellement remplace le code par celui ci après,

Private Sub Worksheet_Activate()
Msgbox "test"
End Sub

Si à l'activation de la feuille, un message n'est pas affiché c'est que les macros ne sont pas activées.

Pour les activer, suis ce lien pour le vérifier --> https://forum.excel-pratique.com/cours-astuces/securite-des-macros-t19852.html

Bonsoir,

J'ai vérifié les éléments ci-dessous et ils étaient déjà sélectionnés :

A partir de 2007

  • Cliquer sur le bouton Office, en haut à gauche
  • Cliquer sur "Options Excel", en bas à droite de la fenêtre qui vient de s'ouvrir"
  • Sélectionner la rubrique "Centre de gestion de la confidentialité"
  • Dans l'option "Paramètres des macros", sélectionner "Désactiver toutes les macros Avec notification"
  • Dans l'option "Barre des messages", sélectionner "Afficher la barre des messages dans toutes les applications,
lorsque le contenu est bloqué"

Sans doute que ton code ne fonctionne que sur 2003 et pas sur 2007 et 2010.

Peux-tu le tester et le modifier sur 2007 ?

Merci A+

Re,

As-tu essayé le code que j'ai proposé dans mon précédent post ?

Si tout est Ok, au changement de feuille cela doit t'afficher une boite avec le message "test"

Amicalement

Re,

Oui j'ai essayé mais cela n'a rien produit.

Par contre je sais que les macros dans d'autres fichiers fonctionnent.

Je pense que le code désactive les macros, mais n'aboutit pas au résultat voulu sur Excel 2007.

A + Amicalement

Re,

Oui j'ai essayé mais cela n'a rien produit.

C'est bien là le pb. Ce n'est pas normal. Donc le souci vient bien d'excel même.

Je pense que le code désactive les macros, mais n'aboutit pas au résultat voulu sur Excel 2007

Non, le code ne désactive pas les macros. Par contre, il y a peut être un complément qui désactive les macros ou alors vérifie aussi que le niveau de sécurité des macros n'est pas sur maximum !

A vérifier dans Option / centre de gestion de confidentialité / Paramètres des macros --> quelle est l'option choisie ?

Un test à faire serait aussi d'enlever l'instruction "On error resume next" pour vérifier que le code ne bug pas.

Bonjour,

Après nouvelle vérification, option choisie :

Désactiver toutes les macros avec notification

En enlevant : On Error Resume Next, rien de spécial ne s'est produit.

A + amicalement

re,

En enlevant : On Error Resume Next, rien de spécial ne s'est produit.

Ok. Le code est bien lu par excel.

Désactiver toutes les macros avec notification

Clique sur l'option "activer toutes les macros" afin de tester le code.

Re,

J'ai fait ce que tu m'as dit ( Activer toutes les macros )et rien ne s'est produit.

A te lire

re,

Je pense que c'est la config excel qui a un souci.

Fais un test avec le fichier joint.

Dans la feuille du TCD, il y a deux boutons sur lequel il faut cliquer pour déclencher les codes.

Le bouton 1 fait apparaitre une boite à message et rien de plus.

Le bouton 2 déclenche le code pour le TCD.

Si rien ne se passe, c'est qu'il y a un souci avec la config macro d'excel.

157basetest-dan2.zip (13.28 Ko)

Bonsoir,

Super , lorsque j'ai sélectionné activer toutes les macros

et que je suis rentrée dans ce fichier tout fonctionnait parfaitement comme je le souhaitais.

Je te suis infiniment reconnaissante.

Cependant puis-je encore abuser de ta gentillesse et ta patience pour 2 points.

Tout d'abord que puis-je faire pour que cela marche sans sélectionner : "Activer toutes les Macros"

car ce paramètre est déconseillé car potentiellement dangereux.

D'autre part comment puis-je faire pour que la liste des champs n'apparaisse plus et ne puisse plus apparaître.

Car j'ai testé lorsque je supprime le filtre du rapport et que je le refais glisser,

même si le filtre est désactivé tout s'affiche.

Merci encore de ton aide

A te lire

Re,

C'est bien ce que je disais avant. Malgré ce que tu disais les macros n'étaient pas activées ...

Tout d'abord que puis-je faire pour que cela marche sans sélectionner : "Activer toutes les Macros"

car ce paramètre est déconseillé car potentiellement dangereux.

Le code ne fonctionnera que si les macros sont activées. La solution de sécurité est de cocher la case "activer les macros avec notification". De cette sorte, à chaque ouverture d'un fichier excel comportant des macros, excel demandera une confirmation d'activation.

Toutefois, il faut savoir que celui qui refuse l'activation des macros ou ne coche pas cette case "activer les macros" ou a son excel configuré à la sécurité maximum, pourra ouvrir le fichier sans les macros activées et donc avec les filtres du TCD accessibles. Ce qui n'est pas recherché...

A toi de voir mais sache que le niveau de sécurité des macros n'est pas lié à une option du fichier mais à Excel.

Car j'ai testé lorsque je supprime le filtre du rapport et que je le refais glisser, même si le filtre est désactivé tout s'affiche.

Une solution rapide serait de créer une deuxième macro à mettre en dessous de l'autre avec les mêmes instructions :

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim pf As Byte, Rf As Byte, cf As Byte
...les instructions
End Sub

On peut aussi complexifier le code pour qu'il soit impossible de bouger les champs.

Tout cela à voir en fonction de ce qui est dit plus haut au sujet de l'option "activation des macros"

Re,

Si je met moi même les différents TCD dans différents fichiers partagés

et que j'ai activé moi-même le code au départ,

il me semble, corrige moi si je me trompe, que le filtre ne sera plus accessible

et que par contre en actualisant le tableau les données évolueront malgré tout..

Alors je suis partante pour l'ajout de ta deuxième macro pour la liste des champs

Mais je ne sais pas ce que donnerai le code complexifié dont tu fais mention.

Au fait je comptais ajouter à la fin un bouton de Macro pour que les utilisateurs

qui ne connaissent pas les TCD puissent actualiser en cliquant dessus.

Je te retourne le fichier avec ce bouton ajouté.

Penses-tu qu'avec les problèmes d'activation de Macro cela fonctionnera malgré tout?

A + Amicalement

72basetest-dan2.zip (17.16 Ko)

re,

Au fait je comptais ajouter à la fin un bouton de Macro pour que les utilisateurs qui ne connaissent pas les TCD puissent actualiser en cliquant dessus. Je te retourne le fichier avec ce bouton ajouté.

Pas besoin de bouton car excel offre cette possibilité. Clique droite dans le TCD puis choisir "option du tableau" et ensuite cocher la case "actualiser à l'ouverture". On peut aussi faire tout par code. Donc actualiser et figer les filtres.

Si je met moi même les différents TCD dans différents fichiers partagés et que j'ai activé moi-même le code au départ,

Merci de me donner plus d'explications.

Bonsoir,

Ce que j' entends par là :

Exemple : Je crée 3 fichiers avec le même TCD;

mais l'un est filtré sur A, l'autre sur B, et l'autre sur C,

Dans 3 fichiers partagés chacun a accès uniquement à son tableau respectif.

Si je lance la macro dans chaque fichier qui fige les filtres et "la liste des champs"

lorsque l'on réouvre le fichier tout reste en l'état.

Est-ce que je me trompe lorsque je pense que ces derniers resteront définitivement figés?

As-tu trouvé le moyen de figer les champs?

A te lire amicalement

re,

Ce que j' entends par là :

Exemple : Je crée 3 fichiers avec le même TCD;

mais l'un est filtré sur A, l'autre sur B, et l'autre sur C,

Dans 3 fichiers partagés chacun a accès uniquement à son tableau respectif.

Si je lance la macro dans chaque fichier qui fige les filtres et "la liste des champs" lorsque l'on réouvre le fichier tout reste en l'état.

Est-ce que je me trompe lorsque je pense que ces derniers resteront définitivement figés?

As-tu trouvé le moyen de figer les champs?

Oui pour figer les champs mais merci de m'expliquer le code est appliqué aux 3 TCD et (pour être sûr) de me copier ici le code qui est sur le fichier original.

Bonsoir,

"merci de m'expliquer le code est appliqué aux 3 TCD et (pour être sûr) de me copier ici le code qui est sur le fichier original."

Je ne comprends pas ta question, le code que je compte mettre sur tous les fichiers est celui que tu m'as fait.

Ce que je voulais savoir c'est juste s'il n'y a aucun risque une fois tout figé que quelqu'un parvienne à défiger les filtres.

"Oui pour figer les champs "

Peux-tu s'il te plait me renvoyer le fichier test avec l'ajout de la macro figeant là la fois les filtres + les champs.

Merci d'avance.

A te lire amicalement

re,

Ce que je voulais savoir c'est juste s'il n'y a aucun risque une fois tout figé que quelqu'un parvienne à défiger les filtres

C'est possible si l'utilisateur va dans VBA et remplace les FALSE par TRUE et qu'il regénère la macro.

figer les champs

Dans la macro, mets le code ci-dessous entre END WITH et END SUB

Dim PFD As PivotField
Dim TCD As PivotFields
Set TCD = ActiveSheet.PivotTables(1).PivotFields
For Each PFD In TCD
With PFD
.DragToPage = False
.DragToRow = False
.DragToColumn = False
.DragToData = False
.DragToHide = False
End With
Next PFD

Amicalement

Bonsoir,

Tu trouvera ci-joint le message que je reçois avec le bout de VBA dans la macro entre END WITH et END SUB.

Que dois-je faire

A te lire Cordialement

Rechercher des sujets similaires à "protection filtre tcd"