Protéger un classeur pour désactiver les macros

cs_scastell00 Messages postés 2 Date d'inscription lundi 16 octobre 2006 Statut Membre Dernière intervention 16 octobre 2006 - 16 oct. 2006 à 22:14
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 16 oct. 2006 à 22:44
D'abord bonsoir à tous

Je découvre ce site et j'en profite pour vous exposer mon problème

J'ai un fichier Excel qui contient six macros VBA Macro1 à Macro6

Ce fichier s'adresse à deux groupes de personnes.

1 -
Les personnes du premier groupe ne doivent pouvoir lancer que Macro1
Ils y ont accès par un bouton placé sur la feuille
Pb : je ne sais pas comment leur interdire l'accès aux autres macros. En outre, je ne connais pas nominativement ces personnes (on ne peut pas les identifier précisément).

2 - une fois la macro terminée, ces premiers utilisateurs sauvent le fichier et l'envoient par mail à une personne du second groupe.
Cette personne doit alors pouvoir, de manière simple, désactiver la protection mise en 1 pour utiliser toutes les macros.
Je pensais à une solution type "protéger le classeur" (avec mot de passe) qui protègerait aussi l'accès aux macros mais je n'ai pas trouvé cette fonctionnalité. Elle présentait l'avantage de donner au second groupe une solution simple (= "déprotéger le classeur") pour retrouver l'accès à toutes les macros.

Votre aide est vraiment la bienvenue

Sylvain

3 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 oct. 2006 à 22:24
Salut,

tu ne peux pas protéger partiellement tes macros, soit Tout le projet est vérouillé, soit il ne l'est pas !

Une alternative : une demande de mot de passe pour l'execution de tes macros, si le mot de passe se vérifie, beh la macro se lance, sinon non.
Mais c'est à toi de coder cela !

Un truc du genre, au début de chaque macro :

Dim sPassWord  As String
Dim sMyPass    As String

sMyPass = "Cesame"
sPassWord = InputBox("Saisissez le mot de passe")

If sMyPass <> sPassWord Then Exit Sub  ' ou Exit Function

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
cs_scastell00 Messages postés 2 Date d'inscription lundi 16 octobre 2006 Statut Membre Dernière intervention 16 octobre 2006
16 oct. 2006 à 22:35
Ca me va impec !!!
Merci beaucoup, réponse super rapide en plus
gé-nial !

Pour ma culture perso : comment verrouille-t-on un Projet pour empécher aussi TOUTES les macros de se lancer ???

Sylvain
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 oct. 2006 à 22:44
Tu ne peux pas vraiment, en fait soit tu protèges ton projet pour empêcher les modifications, mais les macros sont visibles par tous, soit tu protèges tes macros pour qu'elles ne soient pas vus (click droit sur ton projet, dans l'éditeur vbe, puis Propriété de VBAProject) mais elles pourront être lancées.

Pour qu'elles ne soient pas exécutées, il faut, dans Excel, aller dans le menu Outils, Macros..., Sécurité, et la passer à un niveau de sécurité élevé (mais accessible par tous les utilisateurs, et donc la sécurité peut être modifiée à n'importe quel moment)

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
Rejoignez-nous