Protection de TCD dans feuille Excel avec segment
Bonjour,
Je souhaiterais protéger un classeur Excel et notamment une feuille EXCEL contenant un TCD et des Segments.
L'objectif est que les segments puissent toujours fonctionner afin que l'utilisateur en lecture puisse en profiter, tout en empêchant celui ci de chercher des données complémentaires en ajoutant des champs dans le TCD.
Lors de la protection de la feuille, j'ai essayé de déverrouiller les segments en cochant "modifier objets" dans "autoriser tous les utilisateurs de cette feuille à" . Une fois la feuille protégée, on peut cliquer sur le segment mais un message d'erreur indique que l'on ne peut pas modifier le TCD donc le filtre du segment ne fonctionne pas.
J'ai essayé de cocher alors "modifcation TCD..." dans le même menu de protection de feuille, mais du coup rien n'est protégé l'utilisateur peut ajouter ou enlever des champs à sa convenance.
Je ne suis pas une grosse habituée d'Excel sur des questions de macro ou VBA donc si il y a une solution sans ...?
Merci de vôtre aide !
Emilie
Bonjour,
Sans vba impossible. Déjà avec faut chercher, ce n'est pas un truc demandé tous les jours.
A mettre dans le module de la feuille du TCD :
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim Champs As String, pf As PivotField
Champs = ",Produit,nb,"
For Each pf In ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields
If InStr(Champs, pf.SourceName) = 0 Then
Application.EnableEvents = False
If pf.Orientation Then pf.Orientation = xlHidden
Application.EnableEvents = True
End If
Next pf
End SubLister les champs autorisés (nom de champ d'origine de la feuille des données, pas celui éventuellement fabriqué dans le TCD) dans :
Champs = ",Produit,nb,"Si un champ autre est ajouté il est aussitôt masqué.
Essaie d'ajouter le champ Date en ligne ou colonne dans le fichier joint.
Clic-droit sur le nom de l'onglet et 'Visualiser le code', à copier coller dans ton classeur
eric
PS : après réflexion il y a beaucoup plus simple : ne choisis pour ton TCD que les colonnes que tu veux afficher, les autres champs n'y seront pas
Merci !
Ca fonctionne (presque).
J'ai bien ajouté les champs que je souhaite conserver à l'endroit indiqué, et modifié avec le nom de mon TCD.
J'ai également coché "modifier les objets" dans la protection de feuille sinon je n'avais plus accès aux segments.
En revanche J'ai une fenêtre débogage qui apparaît sur la ligne
If InStr(Champs, pf.SourceName) = 0 Then
A quoi correspond pf.Sourcename ?
Est ce que l'on peut ensuite protéger le code ? Car un autre utilisateur supprimant le code peut avoir de nouveau accès aux informations ?
Emilie
Finalement j'ai utilisé la méthode simple.
J'ai supprimé les colonnes confidentielles non utiles, et concernant celle que je devais obligatoirement conserver car utilisée en somme dans le TCD, j'ai juste changé les données à l'intérieur pour que si on décide d'utiliser ce champ, les données affichées ne représentent rien pour l'utilisateur.
Merci beaucoup, je passe le sujet en résolu, j'apprendrais les codes VBA une autre fois.
Bonjour le Forum;
Ce sujet a été traité il y à déjà qq années, à ce jour sous windows10 et Excel 2016, existe-il une solution pour faire plus simple?
Sur une feuille EXCEL contenant un TCD et des Segments.( Affichage plein écran avec les Onglets masqués)
L'objectif est que les segments puissent toujours fonctionner sur une feuille protégée.
La seule solution que j'ai réussi à appliquer est de mettre le Segment dans une colonne déverrouillée, mais le problème que je rencontre est que ma feuille est pleine et que l'affichage ne me permet pas de voir celle-ci.
Je ne veux pas que les utilisateurs utilises la barre de défilement horizontale.
j’espère avoir était clair dans ma demande.
Merci pour la collaboration des membres.
Georges
re moii:)
j'ai essayé la méthode de J.eric ci-dessous
https://forum.excel-pratique.com/viewtopic.php?f=2&t=104034
Mais en effet on peut utiliser le segment, mais également possibilité de le déplacer voir le supprimer, je ne trouve pas comment utiliser correctement la protection de ma feuille.