IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Protection / Déprotection de feuille dans un classeur partagé


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de Zygomatic
    Homme Profil pro
    Salarié
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Salarié

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Par défaut Protection / Déprotection de feuille dans un classeur partagé
    Citation Envoyé par janigrel Voir le message
    Merci AlainTech,

    J'ai testé votre code. Pour cela, j'ai dû enlever le partage du classeur, puis j'ai fait rouler la macro, pour ensuite remettre le partage du classeur, et Euréka, ça marche!
    Cependant, lorsque j'enregistre le classeur, que je le ferme et que je l'ouvre à nouveau, j'ai à nouveau le même problème.
    J'ai pensé que je pourrais faire rouler votre macro à l'ouverture du classeur, mais comme il est partagé, la macro ne pourra s'exécuter...
    Je ne sais pas bien comment solutionner ce problème...

    Cordialement.
    Bonjour,

    J'ai lu cette discussion.

    Je travaille actuellement sur un planning de suivi d'activité et de position du personnel.
    Il y a pas loin de 80 personnes à gérer avec de nombreuses positions. Nous avons un réseau interne et les chefs de services ont accès en écriture au planning (tout le reste ont accès en lecture seule).
    Comme il y a presque qu'un quinzaine de service, le planning est souvent utilisé par plusieurs personnes en même temps d'où la nécessité de travailler en mode partagé.

    J'ai voulu que les utilisateurs restent sur un mode de fonctionnement que j'ai décidé. Ainsi j'ai verrouillé de nombreuses fonctions et le remplissage se fait par macro à l'intérieur desquelles je place la fonction unprotect en début de code et la fonction protect en fin de code.

    Chez moi, ça fonctionnait nickel !
    Aujourd'hui, j'ai voulu commencer le déploiement.
    J'avais pourtant l'habitude de travailler avec des fichiers partagés (l'ancienne version du planning (mais qui était devenu un bazar sans nom car les utilisateurs n'étaient pas toujours très discipliné, l'informatique étant une contrainte plus qu'une aide pour un certain nombre)

    Donc après avoir activé le partage, je relance mon fichier et là, c'est le drame !
    J'ai exactement les mêmes symptômes que Janigrel

    Je ne peux pas me passer du mode partagé, et, n'étant pas développeur et n'ayant pas le temps au boulot comme sur mon temps libre pour apprendre à coder avec des logiciels qui ne sont pas déployés dans mon environnement professionnel, j'essaye de faire avec ce que j'ai.
    Excel faisait jusque là une partie du Job, je souhaite juste améliorer le fonctionnement avec un moindre investissement (je fais ça principalement et bénévolement pendant mon temps de repos).

    Je comprends les arguments de certain qui veulent orienter vers d'autres solution plus pertinentes, mais l'accessibilité n'est pas la même !


    Je reviens donc sur cette question, Y a-t-il dorénavant une solution pour contourner ce problème de protection incompatible avec le mode partagé ?

    ou alors comment me passé de la protection de feuille sachant que ce que le but à atteindre était la neutralisation du coloriage de l’intérieure des cellules (fonction coloriage grisée sur onglets du ruban et menu contextuel d'une cellule) pour le reste, la plage calendrier n'était pas verrouillé, ceci autorisant les poignées de recopie, copier/coller, ...

    Je reste pessimiste quant à la possibilité de faire cohabiter protection de feuille et partage, je vais donc gratter sur l'inhibition des fonctions de coloriage, à moins que quelqu'un ici ne me propose une autre idée salvatrice :p

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    là c'est qu'un onglet de la boite Format que tu veux désactiver (entre autre).
    Je ne sais pas si c'est possible.
    Plus simplement tu ne peux pas restaurer les couleurs à l'activation ou la désactivation de la feuille, et avant enregistrement ?
    Ou bien si tu n'en as pas trop (ça devient vite gourmand) les mettre par MFC.
    eric

  3. #3
    Membre averti Avatar de Zygomatic
    Homme Profil pro
    Salarié
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Salarié

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Par défaut
    @Eriiic
    Merci de te pencher sur mon problème.

    Pour te répondre, je dirais que oui et non, il ne suffit pas d'agir sur l'onglet quand bien même cela serait possible, car l'utilisateur pourrait toujours utiliser le menu contextuel lorsqu'il va effectuer un clic droit sur la cellule qu'il veut colorier.

    Je ne vois pas ce que tu entends par "restaurer les couleurs..." ???

    Ces couleurs doivent être visibles en permanence puisqu'elles indique la position ou l'activité du personnel (congé, prévision de congé, arrêt maladie, RTT, déplacement, stage interne, stage externe, garde d'enfant,...)
    La piste sur laquelle je travaille est justement la mise en forme conditionnelle (je ne connaissais pas l'acronyme MFC :p )
    Plutôt que d'inhiber la fonction "remplissage", je peux peut être la rendre sans effet.

    Je m'explique:
    Si j'applique une MFC sur toute la plage modifiable (ex: sans couleur pour les jours ouvrables et gris pour les W-E et jours fériés), l'action manuelle de colorier sera inefficace.
    En revanche, ma macro, si cela est possible (ce sur quoi je suis en train de travailler), dans un 1er temps annulera la MFC de la zone sélectionnée, puis, dans un 2nd temps, appliquera dans la couleur du bouton déclencheur.
    Ensuite, sur mon bouton correction, il faut que je parvienne à réactiver la MFC (c'est ce qui me semble le plus compliqué en VBA).

    Il aurait été plus simple d'utiliser directement la MFC pour que le remplissage se fasse d'une couleur déterminée en fonction d'une lettre inscrite dans chaque cellule via la macro correspondante. Malheureusement je ne peux pas appliquer cette solution car j'ai besoin de pouvoir écrire directement dans les cellules coloriées afin d'apporter certaines précision (gain en visibilité par rapport au commentaire"

    Voilà pour la piste envisagée, mais je crains que l'on digresse du sujet initial de ce topic

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Pour te répondre, je dirais que oui et non, il ne suffit pas d'agir sur l'onglet quand bien même cela serait possible, car l'utilisateur pourrait toujours utiliser le menu contextuel
    C'est bien de l'onglet Remplissage de cette boite que je te parlais. Désactiver un menu contextuel oui, mais tu supprimes l'accès à toutes les mises en forme.

    Comme tu as l'air de découvrir les MFC (qui, oui, écrasent toute couleur manuelle) par exemple tu t'en fais une orange pour ="AM" (arrêt maladie) sur la plage B2:Z20
    Toute saisie de AM (utilisateur ou macro) te la met en orange, et si en plus tu as prévu la couleur du texte il peut être invisible.
    Comme tu saisis apparemment d'autres trucs il faudrait rendre obligatoire la saisie d'un code à 2 lettres au début pour qu'une MFC le détecte
    Tu pourras sans doute plus facilement contrôler qui a le droit de saisir dans ces cellules.

    Au passage dans 'Révision / Permettre la modification des plages' tu peux définir une liste d'ident qui pourront saisir les cellules verrouillées sans déprotection de la feuille. Ca peut être des plages disjointes ou toute la feuille si tu l'as sélectionnée. A voir ce que ça donne en partagé (?)
    eric

  5. #5
    Membre averti Avatar de Zygomatic
    Homme Profil pro
    Salarié
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Salarié

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Par défaut
    ...Toute saisie de AM (utilisateur ou macro) te la met en orange, et si en plus tu as prévu la couleur du texte il peut être invisible...
    Oui, j'y avais pensé, mais comme je l'ai expliqué dans mon message précédent, je ne peux pas utiliser cette fonction car j'ai besoin de pouvoir remplir du texte dans mais plage coloriées (ex : Stage EXCEL pour une personne le code couleur stage)

    Sinon, non je ne découvre pas la MFC, c'est juste l'acronyme que je n'avais jamais utilisé jusque là. Ici je compte détourner son usage 1er car je vais l'utiliser à l'inverse: MFC active pour cellules sans couleur et MFC désactivée ou supprimée pour cellules à colorier

    ...Au passage dans 'Révision / Permettre la modification des plages' tu peux définir une liste d'ident qui pourront saisir les cellules verrouillées sans déproteger de la feuille. Ça peut être des plages disjointes ou toute la feuille si tu l'as sélectionnée. A voir ce que ça donne en partagé (?)
    eric
    La gestion des droits est faite via l'administration du réseau, et pour rappel, les cellules dans lesquelles les utilisateurs (ayant les droits en écriture) doivent opérer ne sont pas verrouillées, mêmes lorsque le document est protégé. Cette protection ne me servait qu'à griser des fonctions d'édition dont le remplissage. La saisie, les copiers/coller, les poignées de recopie, ... restent fonctionnelles sur la plage intérieur du calendrier.
    J'en ai alors profité pour protéger l’extérieur afin de limiter des erreurs que mes collègues pourraient faire par inadvertance.
    Je ne pense pas que je puisse trouver un interet à cette option, car mon code bug dès le lancement du fichier pendant l'execution du workbook open, car j'utilise dans les 1ères lignes la fonction unprotect pour remettre en ordre le tableau avant de le refiger

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Je comprend que ça ne t'intéresse pas dans le fonctionnement de ta feuille mais je précise que 'Permettre la modification des plages' est une fonctionnalité excel qui n'a rien à voir avec l'administration du réseau.

    et MFC désactivée ou supprimée pour cellules à colorier
    à condition que tu obtiennes une réponse :-) A moins que tu n'acceptes que ce soit toutes les mises en formes qui soient inhibées et non seulement la couleur.

    Pour clôturer cette piste tu as la MFC la plus simple qui soit : =VRAI
    Tu t'en crées une pour chaque couleur et tu mets la MFC3 par exemple pour rouge sur la plage, en ayant supprimé les éventuelles autres. Elle s'appliquera qq soit le contenu.

  7. #7
    Membre averti Avatar de Zygomatic
    Homme Profil pro
    Salarié
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Salarié

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Par défaut
    Merci eriiic

    J'ai essayé de jouer avec les options du dossier partagé, mais ça ne change en rien.
    Mon souhait initial n'était pas de protéger les cellules mais d'inhiber certaines fonctions de mise en forme dont le remplissage (peu m'importe si cela désactivait d'autres car je n'en avait pas besoin non plus), sur toute la feuille et pour tous les utilisateurs, quand bien même toutes les cellules n'étaient pas protégées.

    Bref je n'ai pas trouvé de solution à la question initiale de ce topic, et je vais donc arrêter là le HS.
    Quant aux pistes qui pourraient résoudre ma problématique (empêcher le remplissage des cellules du planning via le ruban ou le menu contextuel), je vais explorer cela plus tard (et notamment ta piste sur les MFC), et, si je trouve, ou si besoin, je créerai un autre Topic sur le sujet et je viendrais rajouter le lien ici.

    Merci encore

    Zygo

Discussions similaires

  1. Protection / Déprotection de feuille dans un classeur partagé
    Par janigrel dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/01/2016, 21h18
  2. VBA-Recherche d'une feuille dans plusieurs classeurs
    Par derf3183 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/07/2006, 15h50
  3. [VBA-E]Existence d'une feuille dans un classeur EXCEL
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/04/2006, 16h58
  4. VB6 : création de feuilles dans un classeur Excel
    Par getea85 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/11/2005, 17h37
  5. Changer de feuille dans un classeur Excel
    Par couiss dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 09/05/2005, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo