Verrouillage du menu principal d'excel

dss

XLDnaute Occasionnel
Bonjour le forum,

J'ai différentes application VBA excel qui permettent notamment d'empêcher l'impression, la copie du fichier, etc... Tout cela fonctionne bien dès l'instant ou un utilisateur n'a pas changé la configuration d'excel au niveau du menu principal :
Outils--->Macro--->Securité---->PARAMETRE A FAIBLE pour que la macro puisse s'exécuter.
Le Hic : si un utilisateur change le paramètre de FAIBLE à MOYEN ou ELEVE, la macro ne s'exécute plus et les différents programmes ne sont plus actifs.

Aussi, existe-t-il un moyen d'empêcher l'utilisateur d'avoir accès à cette partie du menu afin que les configurations d'excel ne puissent être changées ? Ou tout autre moyen qui permettrait de contourner ce problème ?

Merci de votre soutien

Cordialement

DSS
 

job75

XLDnaute Barbatruc
Re : Verrouillage du menu principal d'excel

Bonsoir dss, jeanpierre, Minick,

Sous Excel 2003, on peut rendre le menu Outils inactif par :

Code:
CommandBars(1).Controls("Outils").Enabled = False 'ou .Visible = False

Mais il y a des inconvénients... Tôt ou tard il faudra bien exécuter :

Code:
CommandBars(1).Controls("Outils").Enabled = True 'ou .Visible = True

A+
 
Dernière édition:

dss

XLDnaute Occasionnel
Re : Verrouillage du menu principal d'excel

Bonjour Jeanpierre, Minick et Job75

Tout d'abord, merci pour vos réponses.
Cela étant, je ne cherche pas à verrouiller tout Excel mais seulement les fichiers qui sont en réseau (multi utilisateurs) et disposent de "macros" destinés par exemple à sécuriser l'impression (attention les arbres vu le nbre d'impressions lancées par erreur, rendre impossible la copie des fichiers ouverts en lecture seule.
Mais tout cela ne peut être efficace que si chaque utilisateur sur les fichiers réseau concernés ne peut modifier le niveau de sécurité affecté au macro... sinon le programme devient inefficace : Exemple fermeture automatique du classeur ouvert en lecture seule si 1 utilisateur est déjà connecté afin d'éviter la copie du classeur. Cela n'est opérant que si le niveau de sécurité des macros est positionné à Faible.
Pour Job75, je possède sur le réseau des versions de 2002 et 2003 ainsi qu'une version 2007.
Sauf erreur de ma part, j'ai l'impression que pour les versions antèrieures à 2003, c'est pas gagné?
Si ce n'est pas trop te demander, pourrais tu me donner la syntaxe détaillée de la procédure car je ne sais pas trop manipuler les objets.
En tout cas, merci d'avoir pris le temps de te pencher sur le problème que je rencontre : une commande VBA qui me permettrait de désactiver l'accès la sécurité des macros sur les fichiers concernés dans le but d'assurer une utilisation plus sereine aux différents utilisateurs.
A vous lire peut être,
Merci encore
Cordialement
DSS
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Verrouillage du menu principal d'excel

Bonjour dss, le fil, le forum,

Si ce n'est pas trop te demander, pourrais tu me donner la syntaxe détaillée de la procédure car je ne sais pas trop manipuler les objets.

Voici une manière de faire :

1) Placer dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
InactiveMenu
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveMenu
End Sub

2) Placer dans un Module :

Code:
Sub InactiveMenu()
CommandBars(1).Controls("Outils").Enabled = False 'ou .Visible = False
End Sub

Sub ActiveMenu()
CommandBars(1).Controls("Outils").Enabled = True 'ou .Visible = True
End Sub

A noter que si l'on crée un graphique, le menu Outils de la barre de menu Graphique n'est pas désactivé. On peut alors compléter en écrivant :

Code:
Sub InactiveMenu()
CommandBars(1).Controls("Outils").Enabled = False 'ou .Visible = False
[COLOR="Red"]CommandBars(2).Controls("Outils").Enabled = False[/COLOR]
End Sub

Sub ActiveMenu()
CommandBars(1).Controls("Outils").Enabled = True 'ou .Visible = True
[COLOR="Red"]CommandBars(2).Controls("Outils").Enabled = True[/COLOR]
End Sub

A+
 

Pierrot93

XLDnaute Barbatruc
Re : Verrouillage du menu principal d'excel

Bonjour à tous

Perso je déconseille fortement le fait de mettre le niveau de sécurité à FAIBLE, c'est une porte ouverte sur tout le système, autant dire qu'il n'y a plus aucune sécurité, enfin c'est juste mon avis...

bonne journée
@+
 

dss

XLDnaute Occasionnel
Re : Verrouillage du menu principal d'excel (résolu)

Bonjour Job75, Pierrot93,

Merci Job75 : suite à ton aide précieuse, j'ai testé et là impeccable : le blocage ne se fait que sur le fichier concerné.
Merci encore,
Pierrot93, j'aurais souhaité moi aussi avoir un niveau de sécurité plus élevé mais dans ce cas les macros ne fonctionnent plus et la sécurité sur les fichiers concernés n'est plus assurée.
Cordialement
DSS
 

job75

XLDnaute Barbatruc
Re : Verrouillage du menu principal d'excel

Re, salut Pierrot,

C'est aussi mon avis, en mettant sur Moyen on fait ensuite ce qu'on veut...

De toute façon dss doit se rendre compte que toute solution à son problème est illusoire. En effet 2 possibilités sur un ordi :

- soit on rend inactif en permanence le menu Outils, et alors on perd une partie des possibilités d'Excel... et de toute façon avec un peu de connaissance en programmation on récupérera ce menu.

- soit comme je l'ai proposé on rétablit ce menu à la fermeture du fichier, mais alors on peut ensuite modifier quand on veut la sécurité des macros.

A+
 

Iderium

XLDnaute Nouveau
Re : Verrouillage du menu principal d'excel

Bonjour,

Pardonnez moi de relancer ce sujet, mais ça évite d'en ouvrir un autre.
Ces fonctions sont très intéressantes et fonctionnent aussi de mon côter.

Je vous explique mon problème.
Au boulot, je m'occupe de mettre à jour un fichier que les conseillés utilisent tout les jours.
Le soucis, c'est que j'ai ici des collègues qui veulent bidouiller ce fichier et, c'est bien sur hors de question.

J'ai réussi à vérrouiller le menu "outils", mais j'aimerais donner l'accès à uniquement certaines personnes (dont moi) en fonction du nom d'utilisateur utilisé sur Windows (non de session).

Est il possible de faire ce genre de chose ? Si oui, pourriez-vous em mettre sur la voie ?

J'ai essayé avec des variables de ce genre, mais ça en fonctionne pas.

Code:
If Username <> "mon_login" Then
CommandBars(1).Controls("Outils").Enabled = False
End if

Merci d'avance.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Verrouillage du menu principal d'excel

Bonjour Iderium, bienvenue sur XLD,

C'est la fin des vacances, mais votre post est passé inaperçu, désolé.

Si l'on veut le nom utilisateur d'Excel, écrire :

Code:
If Application.UserName <> "mon_login" Then

Il est préférable d'utiliser le nom utilisateur de Windows, moins facilement modifiable :

Code:
If Environ("Username") <> "mon_login" Then

A+
 

Iderium

XLDnaute Nouveau
Re : Verrouillage du menu principal d'excel

Bonjour job75,

Merci pour cette réponse.
J'ai beau essayé, à chaques fois le menu se vérouille même pour mon propre username.

Voici ce que j'ai mis en code.

Dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
InactiveMenu
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveMenu
End Sub

Dans mon module :

Code:
Sub InactiveMenu()
If Environ("Username") <> "FRLKEAM" Then
CommandBars(1).Controls("Outils").Enabled = False 'ou .Visible = False
End If
End Sub

Sub ActiveMenu()
If Environ("Username") <> "FRLKEAM" Then
CommandBars(1).Controls("Outils").Enabled = True 'ou .Visible = True
End If
End Sub

Le but de la manoeuvre est de dire : Si l'username est différent = Vérouille le menu "outils".
Sinon, laisse le actif.

Je ne suis pas certain que le signe <> est bien interprêté par "différent" sur vba :s
 

job75

XLDnaute Barbatruc
Re : Verrouillage du menu principal d'excel

Bonjour Iderium,

Il faut que le nom utilisateur Windows soit exactement "FRLKEAM" (avec les majuscules) pour que le menu ne soit pas inactivé.

Pour vérifier ce nom mettez le code :

MsgBox Environ("Username")

Par ailleurs il est préférable, voire nécessaire (voir le fil) que le menu soit toujours activé à la fermeture, donc ne pas mettre de test dans la macro ActiveMenu.

A+
 

job75

XLDnaute Barbatruc
Re : Verrouillage du menu principal d'excel

Re,

Ah... mais si le menu a été désactivé, il faut l'activer à l'ouverture !!!

Alors utilisez les macros suivantes :

Code:
Private Sub Workbook_Open()
CommandBars(1).Controls("Outils").Enabled = Environ("Username") = "FRLKEAM"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveMenu
End Sub

Sub ActiveMenu()
CommandBars(1).Controls("Outils").Enabled = True 'ou .Visible = True
End Sub

Il vaut mieux qu'il y ait la 3ème macro, pour pouvoir l'exécuter quand on veut.

A+
 

Statistiques des forums

Discussions
312 332
Messages
2 087 362
Membres
103 530
dernier inscrit
Chess01