UserInterfaceOnly et Manipulation de Shapes
Bonjour le forum,
J'ai dernièrement fait une "trouvaille" géniale concernant la sécurité des feuilles excel : l'argument "UserInterfaceOnly" qui ayant pour valeur "True" permet les modifications de feuilles via macro.
Mais !
Il semblerait qu'en fait, cet argument ne permette pas de modifier tout ce que l'on veux par macro sur une feuille. Je rencontre un problème de manipulation de Shapes et de Charts. Ces manipulations (taille, positions, valeurs etc) fonctionnent très bien sur une feuille non protégée, mais ne fonctionnent plus sur une feuille protégée, même via argument "UserInterfaceOnly" ...
Alors je sais, je peux lever la protection en début de procédure, et remettre la protection en fin de procédure; ce que je fais actuellement.
Je peux aussi protéger la feuille et ne pas protéger les Shapes ni les Charts (mais je vois mal l’intérêt d'une telle pratique).
Par curiosité, quelqu'un saurait-il quel est le problème avec "UserInterfaceOnly" et la manipulation des Shapes/Charts?
Ci-joint un classeur exemple, qui illustrera mes propos:
La flèche noire se déplace a gauche de votre sélection (zone jaune déverrouillée sur feuille 1). Le code, très simple fonctionne lorsque la feuille 1 n'est pas protégée, mais plus du tout après protection!
Si quelqu'un à une idée, ou peux m'expliquer pourquoi la procédure génère un bug malgré le "UserInterfaceOnly", je lui serai extrêmement reconnaissant!
Yann
Bonjour,
Alors je sais, je peux lever la protection en début de procédure, et remettre la protection en fin de procédure; ce que je fais actuellement.
C'est bien ce qu'on fait habituellement, et c'est normalement sans risque, durant l'exécution d'une procédure l'utilisateur n'a pas la main. Le paramètre UserInterfaceOnly a en effet des effets limités...
Cordialement.
Bonjour MFerrand,
Merci pour votre réponse. Les risques par rapport à l'utilisateur ne me font pas peur, ayant déjà testé, je sais que la méthode de déverrouillage / verrouillage fonctionne bien. Quitte à la coupler avec un "Application.interactive = false" pour plus de sécurité.
Je pense que j'ai un fichier plutôt lourd en terme d'interface graphique, et les verrouillages déverrouillages provoquent des " sauts d'écrans " (avec disparition et ré-apparition de Shapes et Charts) malgrès un "Application.screenUpdating = false"
D'où ma recherche d'une autre solution avec laquelle j'éviterai ces déverrouillages / verrouillages réguliers.
Il semblerai donc que la propriété "userInterfaceOnly" ne concerne ni les manipulations de Shapes, ni les manipulations de Charts.. Des effets bien limités en effet..!
Retour au point de départ donc. Merci beaucoup cependant!
Yann