Protection de colonnes dans un tableau structuré Excel

Bonjour,

Je peine depuis plusieurs jours avec un fichier destiné à suivre les formations, j’en laisse une version simplifiée en PJ.

Je souhaiterais, dans l’onglet « formations » :

• Pouvoir protéger les colonnes grisées (ou mieux, uniquement la partie des colonnes grisées qui sont dans le tableau structuré) pour que leur contenu ne soit pas modifiable (pas besoin de mot de passe).

• Que lorsqu’on saisisse une nouvelle ligne en-dessous (exemple : on ajoute le nom d’un autre salarié), cette ligne s’ajoute au tableau structuré

• Qu’on puisse continuer à utiliser les filtres automatiques et la poignée de grouper/dégrouper même quand la protection est activée

• Que le contenu des colonnes grisées puisse alimenter des TCD dont la source est le tableau structuré

Voilà, je crois que je n’ai rien oublié…

J’ai l’impression que la seule solution est une macro VBA et je suis complètement novice en la matière. J’ai essayé de me lancer un peu mais je me perds dans la syntaxe et les notions (worksheet, range, listobjects, méthodes…).

J'ai réussi à trouver un code permettant d'utiliser la poignée grouper/dégrouper en mode protégé, mais mon tableau structuré reste figé une fois que la protection est active (les lignes saisies en dessous ne s'y ajoutent pas).

Bref, merci d’avance pour votre aide !

Bonico

14test-formation.xlsx (13.43 Ko)

Précision d'importance: j'utilise excel 2016 (je vois que mon profil affiche que j'utilise excel 2010, je vais essayer de le modifier)

Bonjour

J'avais fabriqué ce classeur dont le code peut s'appliquer à tout classeur.
Il prévoit des cas bien plus compliqués comme exposé dans l'onglet Intro

Le code est dans le module ThisWorkbook, le mot de passe dans le module 1

A noter que lier tes deux feuilles comme tu l'as fait pour le matricule est une mauvaise pratique : tout tri, insertion, suppression, volontaire ou non, dans l'onglet Base salariés fera exploser ton tableau de l'onglet Formations

En fait, la base salariés est aussi un tableau structuré: quand j'exporte une liste actualisée du personnel, j'en fais un copier/coller dans ce tableau et normalement le tableau structuré s'adapte... Enfin, le tableau est pas encore entré en phase de production, j'espère que ça va le faire.

Par contre ma formule index/equiv fait la recherche sur toute la colonne (B:B) de l'onglet "salariés", donc je vois pas pourquoi ajouter où supprimer des lignes dans cet onglet poserait problème...?

Je vais prendre un doliprane et je vais attentivement regarder ton fichier, merci

Après une 1ère lecture, effectivement plusieurs fonctionnalités de ta macro marchent et m'intéressent, notamment l'ajout automatique d'une nouvelle ligne au tableau, et la protection et la validation de données uniquement pour la partie des colonnes comprises dans le tableau.

D'autres ne m'intéressent a priori pas (sous-totaux)

Donc je vais essayer de comprendre ton code et de faire mon marché dedans...

Par contre, ton fichier est censé permettre le redimensionnement auto des tableaux, or:

  • Cette fonctionnalité est grisée dans le ruban quand je suis dans un tableau
  • Quand j'ajoute une ligne à un tableau puis que je supprime les données saisies, le tableau ne se redimensionne pas automatiquement

RE

Le code ne fait que vérifier la présence ou l'absence des sous-totaux pour en tenir compte.
Il n'en ajoute ou enlève pas

Effectivement la suppression de données ne conduit pas à la suppression de la ligne mais c'est nativement le cas dans un tableau formulé : si on saisit sous le tableau, ce tableau s'allonge mais si on ne supprime que les données saisies et non la ligne de tableau, il ne s'ajuste pas.

Re

Bon ben c'est pas gagné...

Quelle partie de ton code fait que quand tu ajoutes une nouvelle ligne sous ton tableau, elle s'ajoute à ce dernier, alors que ce n'est pas le cas dans mon fichier?

C'est la partie "Ajout dans le tableau d'autant de lignes que saisies"?

C'est juste les 2 lignes :

"For each Rrow In Target.Rows

LO.ListRows.Add "?

Une fois que j'aurais réussi à identifier, comprendre et transposer ce passage dans mon fichier, je vérifierai si les règles de validation de données se dupliquent aussi, et le cas échéant j'ajouterai au code la partie qui va bien.

Bonjour

OK pour la formule INDEX, EQUIV, je l'avais mal lue.

Je te conseille de

  • copier tes 2 onglets dans mon fichier,
  • supprimer tous mes onglets,
  • changer le mot de passe du module1 (ne laisser que les guillemets si tu n'en mets pas),
  • protéger ta feuille
  • lancer le code. En mode pas à pas ou avec des points d'arrêts si cela ne marche pas comme tu veux.

Bonsoir Chris,

Après pas mal d'essais et de tests, je valide ta macro!

Un grand merci pour ton aide

Rechercher des sujets similaires à "protection colonnes tableau structure"