Protection feuille avec mot passe : activation par macro

  • Initiateur de la discussion Olivier_HTP
  • Date de début
O

Olivier_HTP

Guest
Bonjour le Forum,

Il y a une protection des feuilles de calcul sur mon classeur, afin notamment d'interdire l'accès et la suppression accidentelle des cellules comprenant des formules.

Cette protection empêchant certaines de mes macros de fonctionner correctement, j'ai été amené à les modifier, en ajoutant au début de chacune une instruction pour ôter la protection de la feuille, et à la fin une instruction pour activer cette protection.
Cela permet l'exécution correcte de ces macros tout en empêchant les 'accidents' sur les cellules 'sensibles'.

MAIS : cette protection se révélant insuffisante, car certains utilisateurs ôtent volontairement la protection de la feuille par le menu 'outils', j'aimerais savoir s'il est possible de garder ma solution 'désactiver la protection en début de macro, et la réactiver à la fin', MAIS avec une PROTECTION PAR MOT DE PASSE ?

Merci d'avance pour vos réponses et bonne journée à tous.

Olivier_HTP
 
J

jmt0

Guest
Salut,

avec ces lignes la, tu protege toute les pages de ton classeur avec le password que tu veut. Mais les macro peuvent encore modifier les pages et cellules, meme si elles sont protégées.


Dim Wksht As Worksheet
For Each Wksht In Me.Worksheets
Wksht.Protect password:="ton password ici", UserInterfaceOnly:=True
Next Wksht
 
J

jac

Guest
La solution la + simple, (qui m'a été donnée ici il y a quelques temps...)
Au début de la macro:
ActiveSheet.Unprotect("ton mot de passe")
et à la fin:
ActiveSheet.Protect("ton mot de passe")
Il faudra protéger ton projet VBA pour que ton mot de passe ne soit pas lu
Salut
@+
 
O

Olivier_HTP

Guest
Bonjour Jacques et le Forum,

merci de ta réponse.

Le code que tu m'as indiqué me permet en effet de désactiver et de réactiver la protection avec mot de passe, dans le cas d'une protection 'totale' de la feuille.

Malheureusement, je n'arrive pas à le faire fonctionner pour réactiver une protection "partielle" de la feuille, c'est à dire par exemple une protection qui laisse la possibilité à l'utilisateur d'accéder au tri.
Dans ce cas, le code est :

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True

Mon problème est que l'instruction ("mon code") ne fonctionne pas que je la place juste après Protect, ou bien à la fin (donc après le dernier 'True'.

MA QUESTION : Dans le cas d'une protection 'partielle' de la feuille avec mot de passe, est-il possible ou non de l'activer et désactiver dans la macro, et avec quelle syntaxe? ou bien est-ce impossible ?

Merci d'avance à ceux qui voudront bien m'aider et bon dimanche.

Olivier_HTP
 
G

Gérard DEZAMIS

Guest
Bonjour Jac, Olivier HTP et JMT0

BONJOUR le roux,

la meilleure "protection" pour éviter de voir sa question sans réponse est :
de dire Bonjour (avant il vaut mieux <Consultez la charte du Forum XLD>)

Ma remarque est un peu ACYD mais fais une recherche sur le Forum avec ce nom et "Ti" trouveras ce que tu attends.
Sans rancune j'espère
@+
GD
 
O

Olivier_HTP

Guest
Bonjour le Forum,

Merci encore à tous ceux qui m'ont répondu.

Pour terminer ce sujet en ce qui me concerne, et pour ceux que ça intéresse (Jac notamment) je vous communique le code que j'ai utilisé, et qui fonctionne, pour mettre une protection PARTIELLE de feuille avec mot de passe :

ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
True, AllowSorting:=True, AllowFiltering:=True, Password:="toto"

Et pour désactiver cette protection :

ActiveSheet.Unprotect Pasword:="toto"

Bonne soirée à tous,

Olivier
 

Discussions similaires

Statistiques des forums

Discussions
314 210
Messages
2 107 304
Membres
109 798
dernier inscrit
NAJI2005