Boutons d'option + protection par VBA

Bonjour,

Dans le fichier ci-joint, par des boutons d’option placés en C15, je modifie la valeur de la cellule E15. En fonction de cette cellule, ça modifie la valeur de la cellule D22.

Deux macros – placées sur chacun des boutons d’option - modifient le format de la cellule D22 (0 ou 1 chiffre après la virgule) en fonction du résultat qui y est affiché.

Jusque là, tout va bien.

Ca se complique si je veux protéger la feuille (sans mot de passe). J’ai alors eu l’idée de placer les commandes «ActiveSheet.Unprotect» et «ActiveSheet.Protect» en début et fin de chacune des deux macros indiquées ci-dessus, mais ça ne passe pas.

Avez-vous une idée pourquoi ça bloque alors sur Range("D22").NumberFormat = "0%" ?

A vous relire

39teuerung.zip (14.04 Ko)

Bonjour,

La cellule E15 est verrouillée sur ta feuille. Les deux boutons d'option étant liés à cette cellule cela te renvoi un bug

Donc dans ton code il faut déverouiller E15 ou mieux lier tes deux cellules à B15 au dessus de laquelle se trouve ton bouton "Ja" par exemple.

Amicalement

Salut Dan,

Merci pour ta réponse. Ca fonctionne effectivement tel que tu me l'indiques. Mais il y a quand même quelque chose que je ne comprends pas : En cliquant sur le bouton d'option je lance la macro et la protection est bien enlevée puisque ça ne bloque que sur la ligne suivante, celle de la modification du format.

C'est ça qui me chicane le plus As-tu une idée pourquoi ?

Cordialement.

re

Bizarre ce que tu me dis là. Peut-être y a-t-il une option supplémentaire sous excel 2007 ??

Peux-tu essayer sur le fichier joint.

Amicalement

33teuerung.zip (13.70 Ko)

Re,

En fait j'ai créé ce fichier au travail, sur Excel 2003 ; il ne peut donc pas s'agir d'un problème de version.

Je te dis dans mon deuxième message que si je fais comme tu préconises - c'est-à-dire en ôtant au préalable le verrouillage de la cellule E15 - mes macros fonctionnent correctement (enlèvement de la protection de la feuille, changement du format de la cellule D22, remise en place de la protection de la feuille). Le fichier que tu m'as fourni fonctionne donc exactement comme les essais dont je fais mention dans mon précédent message.

Mais j'insistais afin de savoir pourquoi - en ne déverrouillant pas la cellule E15, mais en ôtant la protection de la feuille par l'intermédiaire de la macro avant de modifier le format - ça ne passe pas. Alors que si j'enlève la protection de la feuille manuellement - sans déverrouiller la cellule E15 - ça passe. C'est ça que j'aimerais comprendre.

Bonnes salutations.

re

Mais j'insistais afin de savoir pourquoi - en ne déverrouillant pas la cellule E15, mais en ôtant la protection de la feuille par l'intermédiaire de la macro avant de modifier le format - ça ne passe pas.

Cela arrive parce que, dans l'ordre des choses, excel voit d'abord que la cellule n'est pas accessible et ce, avant d'exécuter le code.

En gros, la priorité est d'abord donnée à Excel d'abord.

Pour le voir, mets un arrêt sur "sub Macro1()", puis clique ton bouton. Tu verras que le message de feuille protégée apparait d'abord puis dès que tu cliques sur Ok, "Sub macro1()" sera coloriée en jaune pour démarrer le code.

C'est de cela que je suis parti pour te proposer une solution en ne verrouillant pas E15.

Peut être que ce serait possible via les procédures Events telles que trouvées dans les modules de classe. A voir et à analyser

Amicalement

Salut Dan,

Merci infiniment pour ces dernières précisions. Comme j'avais eu quelques fois des situations semblables, je voulais une fois insister un peu afin d'avoir des renseignements plus complets.

C'est chose faite. J'ai ma solution et mon explication

Bonnes salutations et à une prochaine fois.

Rechercher des sujets similaires à "boutons option protection vba"