Désactiver Ctrl-Pause et Ctrl-Arrêt Déf. dans VBE

P

Pierrot

Guest
Bonjour le Forum,

J’ai un problème de programmation en vba que je n’arrive pas à résoudre.

J’ai défini un userform avec saisie du nom de l’utilisateur et du mot de passe avant l’ouverture du classeur objet de mon application . But recherché : je ne veux pas que le classeur s’ouvre si l’on ne saisit pas le nom de l’utilisateur autorisé ainsi que son mot de passe valide.

Le soucis que j’ai : c’est que l’on peut justement ouvrir ce classeur même si on ne saisit pas le mot de passe ou le nom de l’utilisateur. Il suffit de taper tout simplement après affichage de l’Userform : Ctrl + Pause ou Ctrl + Arrêt défilement. Et pourtant , j’ai verrouillé le dit classeur en désactivant par vba les raccourcis clavier . Voir ci-dessous les macros « Désactive » - « Réactive » dans « ThisWorkbook » - Private Sub Workbook_Open().
et Private Sub Workbook_BeforeClose
Après ouverture du classeur ,les touches de raccourcis clavier sont bien désactivées.

Ce que je souhaite c’est de désactiver les raccourcis clavier Ctrl + Pause ou Ctrl + Arrêt défilement pendant l’exécution du code VBE et pas seulement après.

Sub Désactive()
'Interdire les Raccourcis Clavier Ctrl
Dim K, I As Integer
On Error Resume Next
For Each K In Array('^', '%', '+^', '+%', '^%', '+^%')
For I = 32 To 255
Application.OnKey K & Chr$(I), ''
Next I
Next K
End Sub


Sub Réactive()
'Rétablir les Raccourcis Clavier Ctrl +
Dim K, I As Integer
On Error Resume Next
For Each K In Array('^', '%', '+^', '+%', '^%', '+^%')
For I = 32 To 255
Application.OnKey K & Chr$(I)
Next I
Next K
End Sub

Merci d’avance pour votre aide
Cordialement
Pierrot
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Pierrot,

En VBA, il est possible de désactiver complèment les interruptions par la touche Echap ou CTRL + Pause... il convient de jouer sur la propriété EnableCancelKey de l'objet Application. 3 valeurs possibles : xlDisabled, xlErrorHandler, xlInterrupt (valeur par défaut).

ATTENTION toutefois, je te conseille vivement de lire l'aide VBA à propos de cette propriété sous peine de te retrouver avec une procédure qui tourne en rond sans fin et sans possibilité d'interruption !

Cela dit, je pense que tes efforts sont vains : que devient ton code si l'utilisateur désactive les macros à l'ouverture du classeur ?

Cordialement,
 
P

Pierrot

Guest
Bonsoir Didier,

Merci pour ton aide et pour tes conseils.Je vais de ce pas, tester avec un classeur d’essai, les différentes configurations de EnableCancelKey afin d’éviter de planter mon application.

En réponse à ta question sur la désactivation des macros par un utilisateur ; j’ai prévu la désactivation par vba du menu standard d’Excel ainsi que des barres d’outils à l’ouverture de mon classeur.En remplacement du Menu Excel,un nouveau menu s'affiche à l'ouverture de l'application.De ce fait ,l’utilisateur ne pourra pas accéder au menu Outils ou à VBE pour désactiver les macros.

Merci encore une fois pour ton aide.
Cordialement
Pierrot
 

myDearFriend!

XLDnaute Barbatruc
Re Pierrot,

Je ne voudrais pas paraître insistant ni te décourager dans ton projet, mais je m'interroge toutefois sur ce problème de désactivation des macros...
Les paramètres de sécurité d'Excel ne sont pas modifiables comme ça par VBA (sinon ce ne serait pas de la 'sécurité' !), la 'désactivation' du menu standard d'Excel par VBA n'y changera rien... si l'utilisateur a paramétré la sécurité sur Moyen (par défaut) ou Elevé, la macro d'ouverture de ton classeur ne pourra pas faire grand chose car, en amont, l'utilisateur se verra proposer de désactiver les macros du classeur avant même son ouverture effective.
Si, le cas échéant, cet utilisateur avait paramétré un niveau de sécurité sur 'faible', alors effectivement ton classeur pourra faire son oeuvre... mais ce sera pour une fois seulement car, comme je suppose que tu rétablies la configuration d'Excel à la fermeture de ton classeur (c'est le cas j'espère, non ?), l'utilisateur aura donc toute possibilité de modifier ce niveau de sécurité pour la prochaine ouverture.

Certains 'apprentis sorciers' pourront peut-être te proposer d'intervenir directement sur la base de registre Windows pour tenter de forcer ce niveau de sécurité à 'Faible'... Hormis le fait que ces tentatives de haute-voltige demandent une bonne maîtrise du sujet, le culot de travailler sans filet (malgré les risques d'une intervention sur cet organe sensible du système d'exploitation), et la possibilité d'avoir tout simplement les droits suffisants pour modifier la BR (en réseau d'entreprise notamment)... un simple maintien de la touche SHIFT à l'ouverture du classeur désactivera de toute façon les macros automatiquement !

A tout cela, s'ajoute bien évidemment tous les utilitaires permettant de 'déplomber' l'accès à ton code VBA.

J'ai moi-même vécu cette expérience et fait de nombreux tests pour tenter d'obtenir 'LE' verrouillage idéal et incontournable. La conclusion que j'ai tirée de tout ça, c'est que : [ol][ul][li]Soit les utilisateurs sont suffisamment avertis et ils sauront contourner toute tentative de verrouillage du classeur.[/li]
[li]Soit les utilisateurs sont peu habitués à la manipulation d'Excel et ses options, et là, on peut se demander : 'à quoi sert toutes ces modifications de menus, raccourcis clavier et barre d'outils ?'.[/li][/ul][/ol]
Cordialement,
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji