Macro modification échelle graphique avec protection

Salut à tous !

J'aurais besoin d'aide sur le sujet suivant (je précise que je suis néophyte question macros !) :

j'ai créé une feuille excel contenant des graph ainsi qu'une macro permettant de taper directement dans une cellule la valeur que l'on souhaite donner aux min et max des axes et de l'appliquer au graph

ceci pour éviter de cliquer à chaque fois sur l'axe pour changer à la main le critère fixe/automatique et taper la valeur

problème : je souhaite protéger ma feuille avec mot de passe

tout marchait bien dessus jusqu'à ce que je fasse cette macro, qui plante justement car la protection n'autorise pas la modif

pour une protection sans mot de passe, ça marche encore

pour une protection avec mot de passe, ben ça demande simplement de taper le mot de passe ce qui enlève tout l'intérêt de la protection !

Voici la macro en question, qui fonctionne sur une feuille protégée sans mot de passe :

Sub echelle_plan_A()

ActiveSheet.ChartObjects("Graphique 27").Activate

ActiveSheet.Unprotect

ActiveChart.Axes(xlCategory).Select

ActiveChart.Axes(xlCategory).MinimumScaleIsAuto = False

ActiveChart.Axes(xlCategory).MaximumScaleIsAuto = False

ActiveChart.Axes(xlCategory).MinimumScale = Range("BW9")

ActiveChart.Axes(xlCategory).MaximumScale = Range("BW10")

End Sub

j'ai testé plusieurs options de protection (autoriser modifier les objets, les scenarios...) mais rien n'y fait

y a t il une propriété à attribuer au graph pour qu'il puisse être modifié par une macro au sein d'une feuille protégée avec mot de passe ?

j'espère que quelqu'un pourra m’apporter ses lumières

Merci d'avance et à bientôt.

Bonsoir

A tester (une possibilité)

Bien sur Mot_de_passe est à remplacer par le vrai mot

Sub echelle_plan_A()

  ActiveSheet.Unprotect Password:="Mot_de_passe"

  ActiveSheet.ChartObjects("Graphique 27").Activate
  ActiveChart.Axes(xlCategory).Select
  ActiveChart.Axes(xlCategory).MinimumScaleIsAuto = False
  ActiveChart.Axes(xlCategory).MaximumScaleIsAuto = False
  ActiveChart.Axes(xlCategory).MinimumScale = Range("BW9")
  ActiveChart.Axes(xlCategory).MaximumScale = Range("BW10")

  ActiveSheet.Protect Password:="Mot_de_passe"

End Sub

Héhéhé !

Merci, je vais tester ça.

Cette solution m'avait déjà traversé l'esprit (même si je savais pas comment l'écrire) mais ce qui me chagrine c'est que du coup le fameux mot de passe serait accessible à quiconque irait mettre son nez dans la macro !

Plutôt moyen comme protection...

Ou alors il faudrait une solution qui empêche les gens d'aller voir ou modifier les macros du classeur mais je sais pas faire non plus.

Bonsoir

Tu protèges ton code

Dans l'éditeur

Menu Outils ---> propriétés de VBAProject

Dans l'onglet "Protection" coches "Verrouiller le projet pour l'affichage"

Tapes un mot de passe, confirmes le

Ok

Sauvegarde

Mais Excel n'est pas un coffre-fort réputé

Excellent !

Bon après je suis pas non plus un maniaque de la sécurité mais j'ai développé cette feuille pour le boulot et j'ai juste pas envie que tout le monde se l'approprie...

D'ailleurs je pensais avoir un mot de passe à toute épreuve à base de #14Mjlo2%-2FG etc... et un collègue m'a cassé ça en 5 min avec une macro genre brute force

(d'ailleurs c'est marrant ça te déprotège la feuille en annonçant un mot de passe qui n'a rien à voir avec celui que t'as rentré mais ça marche...)

Par contre ça nécessitait qu'il puisse créer et exécuter sa macro magique dans le classeur. Tu sais comment empêcher ça ?

J'essaie tout ça dès demain si j'ai le temps pour voir ce que ça donne.

Un grand merci à toi

Bonsoir

bougnat a écrit :

Tu sais comment empêcher ça ?

Soit en lui disant que c'est pas bien soit en formatant son disque dur

Le meilleur moyen d'empêcher un cambrioleur d'ouvrir ton coffre-fort c'est de ne pas en avoir

j'ai testé, c'est tout bon !

Rechercher des sujets similaires à "macro modification echelle graphique protection"