Empêcher le Ctrl+Pause

Climaudo

XLDnaute Occasionnel
Bonsoir à toutes et à tous,

Avec l'aide de quelques uns d'entre vous, j'ai récupéré un code pour empêcher la fermeture d'une USF par la croix en haut à droite (code fourni par _Thierry sur ce fil Lien supprimé).

Je viens de m'apercevoir qu'on pouvait toujours accèder au code de mon appli avec la combinaison Ctrl + Pause et cela m'embête car suppose que l'on peut également accèder aux feuilles source de l'appli (accès prévu et théoriquement autorisé que par un mot de passe ).

Je souhaiterai savoir si il y a possibilité d'empêcher cette combinaison d'agir et d'accèder au code.

Merci de votre aide
 

Climaudo

XLDnaute Occasionnel
Bonsoir jmps, staple1600, re le forum

(tout d'abord félicitations jmps pour la nomination au grade de barbatruc)

j'ai essayé vos solution, en effet la méthode de josé ne fonctionne pas (va savoir pourquoi !).

Quand à ta réponse Staple1600, j'ai essayé et en effet en protégeant le projet par un mot de passe, la fenêtre s'affiche et le code n'apparaît pas Mais (il y a tjrs un mais... :S ) si l'utilisateur click sur le bouton d'arrêt d'exécution, ça plante en bloquant sur l'USF.

Donc, vu qu'il ne s'agit pour la majorité des utilisateurs que d'une appli de visu, je pense que je vais opter pour le mot de passe sauf si quelqu'un m'apporte la solution miracle (mais je pense comme josé que cela n'est pas possible)

Merci à vous deux et bonne soirée
 

Climaudo

XLDnaute Occasionnel
re

Tu crois pas si bien dire, il y aura des St cyrien qui seront susceptibles de l'utiliser !!! ;)

C'est une appli qui sera mise en réseau et donc accessible à plus de 7 000 pompiers. Donc je préfère assurer toutes les possibilités dont celle d'avoir des personnes connaissant le VBA et peut-être d'autres assez bête pour volontairement (il y en a partout même chez nous) modifier les données, ou tout simplement involontairement.

C'est juste que je suppose toutes les possibilités
 

Climaudo

XLDnaute Occasionnel
Dis-moi, ça ressemble plutôt aux calendriers de la poste ou des éboueurs avec les petits chats :p
Merci d'avance et bonne soirée

PS : j'suis pas sûr que ce soit forcèment toujours bien qu'ils en sortent de St Cyr, en tout cas certains on les y renverrait bien !! ;)

Message édité par: climaudo, à: 24/03/2006 20:34
 

Hervé

XLDnaute Barbatruc
bonsoir climaudo, josé

une idée (enfin, je sais meme pas si cela en es une)

peut etre en utilisant enablecancelkey, qui permet d'intercepter le ctrl+pause.

je ne sais pas comment le gérer avec un usf, peut etre dans une activate.

DidierMdF, nous a montrer l'autre jour comment utiliser cette méthode mais pas pour un usf, mais je n'arrive pas a remettre la main sur le post.

salut
 

Hervé

XLDnaute Barbatruc
re :)

apparement ce type de code fonctionnerait.

Private Sub UserForm_Activate()
Application.EnableCancelKey = xlDisabled
End Sub

par contre, il me semble que l'utilisation de ceci est dangereux.

et que l'appli à interet à etre blindé.

rappel de l'aide :

Soyez prudent lorsque vous utilisez cette propriété. En effet, si vous utilisez la constante xlDisabled, vous ne pouvez pas interrompre une boucle ou toute autre partie du code dont l'exécution se poursuit indéfiniment. Si vous utilisez la constante xlErrorHandler et que votre gestionnaire d'erreurs se termine toujours par l'instruction Resume, il est impossible d'interrompre du code dont l'exécution se poursuit indéfiniment.


salut
 

Climaudo

XLDnaute Occasionnel
bonsoir Hervé

Je viens de faire une recherche sur le forum avec enablecancelkey et je pense avoir retrouvé ce post de DidierMdF qui semble correspondre à ce que je souhaites

Lien supprimé

Je vais de ce pas essayer en prenant en compte ses conseils et lire l'aide en ligne VBA

Merci bcp de ta suggestion

je vous tiens au courant

Bonne soirée

Edition :

leger telescopage mais ça a l'air d'être la solution

Message édité par: climaudo, à: 24/03/2006 20:53
 

Climaudo

XLDnaute Occasionnel
Re à vous 3, et aux autres

Donc après avoir bien lu l'aide en ligne, le post de DidierMdF et les conseils d'Hervé et de José, j'en arrive à cette solution :

1 - à la dernière fermeture de l'appli, affecter aux feuilles source la propriété Visible = xlSheetVeryHidden (pour contourner le problème de sécurité des macros et l'utilisation du Shift à l'ouverture expliqués par Didier dans son post et auxquels je n'avais pas pensé et donc si refus des macros les feuilles ne sont pas visibles) ;

2 - bloquer l'utilisation de la combinaison Ctrl+Pause à l'ouverture pour empêcher son utilisation par les utilisateurs ;

3 - réactiver l'utilisation du Ctrl+Pause à partir de l'usf de configuration uniquement accessible par mot de passe ;

4 - réactiver également à la sortie même si cela est fait par défaut par Excel :

5 - protéger le projet VBA par un code.


Merci de me donner votre avis sur cette 'stratégie' ( :eek:hmy: le vilain mot qui me rapelle les stages déguisés en vert militaire :p ) qui me semble être raisonnable sans risquer de tout planter.


Pour la forme et les Xldiens éventuellement intéressés par cette fonction, je joins mon fichier test de la fonction EnableCancelKey au cas où.


Merci de vos suggestions et bonne soirée. [file name=utilisation_enablecancelkey.zip size=14172]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/utilisation_enablecancelkey.zip[/file]
 

Pièces jointes

  • utilisation_enablecancelkey.zip
    13.8 KB · Affichages: 37

Climaudo

XLDnaute Occasionnel
Bonjour José, Staple, Hervé, le forum

J'avais intégré une sauvegarde en sortie d'application mais en effet je vais peut-être en rajouter une à l'entrée afin d'assurer au max.

Pour Hervé, c'est vrai qu'il en 'vend' un paquet de posts mais c'est pour notre plus grand plaisir. Quelle mémoire, on dirait qu'aucun fil n'arrive à lui échapper ;)

Merci José et bon week-end
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Climaudo, Jmps, Hervé

pour un petit truc en plus sur ce post interressant, plutôt que de désactiver l'interruption utilisateur, on peut la rediriger sur la routine de gestion d'erreur en cours. Je n'ai pas essayé dans ce cas précis mais cela pourrait être interessant.

A+

la ligne d'instruction
Application.EnableCancelKey = xlErrorHandler
 

Climaudo

XLDnaute Occasionnel
Bonjour Yeahou

En effet, c'est la solution que j'ai retenu de manière à avoir un message d'information à l'utilisateur comme dans l'exemple que j'ai joint.
Cela me paraît moins radical que l'annuler même si l'effet est identique.

bonne soirée
 

Statistiques des forums

Discussions
312 373
Messages
2 087 719
Membres
103 654
dernier inscrit
kingdz2022