empecher fermeture USF

phlaurent55

Nous a quittés en 2020
Repose en paix
Bonjour à tous,

Voici mon problème: empecher la fermeture d'un Usf
J'ai cherché et trouvé des solutions sur ce forum et notamment certaines qui empêchent l'apparition de la croix dans la coin supérieur gauche.
Jusque là ,tout fonctionne très bien, je n'ai plus de croix dans mon Usf

mais , à l'utilisation, je me suis rendu compte que l'appui simultané sur les touches Alt+F4 provoquaient la fermeture de l'Usf


N'étant pas un as en VB, je me pose la question de savoir si il y aurait moyen de modifier le code ci-dessous
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
End Sub
pour qu'en cas de fermeture par Alt+F4, cela oblige la fermeture complète du classeur et sans sauvegarde si possible


si cela est réalisable, pourriez-vous également m'indiquer l'endroit où mettre le code


Merci d'avance
Philippe
 

noviceAG

XLDnaute Impliqué
Re : empecher fermeture USF

Bonsoir phlaurent55, le Forum,
Voici quelques interdictions possibles, glanées au fil des posts :

interdire l'utilisation de la touche Suprime (Del) dans une feuille Excel.
Application.OnKey "{SUPPR}", ""
et pour rétablir
Application.OnKey "{SUPPR}"

interdire toute utilisation du clavier ?
Sub Test() 'désactive les raccoucis
For i = 65 To 90
Application.OnKey "^{" & i & "}", ""
Next
End Sub

Sub Test2() 'réactive les raccourcis
For i = 65 To 90
Application.OnKey "^{" & i & "}"
Next
End Sub

Sub Test3() 'désactive l'alphabet
For i = 65 To 90 'on doit pouvoir aller de 33 à 126... (a vérifier!)
Application.OnKey "{" & i & "}", ""
Next
End Sub

Sub Test4() 'réactive l'alphabet
For i = 65 To 90
Application.OnKey "{" & i & "}"
Next
End Sub

Sub Test5() 'désactive ...le reste (avec un peu d'imagination)
With Application
.OnKey "{F1}", ""
'...
.OnKey "{F12}", ""
.OnKey "^{F4}", ""
.OnKey "%{F4}", ""
.OnKey "^", ""
.OnKey "%", ""
.OnKey "{HOME}", ""
.OnKey "{FIN}", ""
.OnKey "{SUPPR}", ""
.OnKey "{TAB}", ""
.OnKey "{PGSUIV}", ""
.OnKey "{PGPREC}", ""
End With 'Prévoir la sortie !
End Sub

Interdire toute action sur Excel, c'est possible avec cette propriété Application.Interactive = False

ATTENTION, cette propriété est très dangereuse, ne pas oublier de remettre à True à la fin de la macro. Enregistrer le fichier avant toutes actions sur votre fichier, une erreur dans le code, et plouf c'est l'arrêt par Crtl+Alt+Suppr

Contenu de l'aide de VBA
Cette propriété a la valeur True si Microsoft Excel est en mode interactif. Cette propriété a généralement la valeur True. Si vous lui affectez la valeur False, Microsoft Excel empêchera toute interaction à partir du clavier et de la souris (à l'exception de la saisie dans les boîtes de dialogue affichées par votre code). L'utilisateur ne risque ainsi pas d'entraver l'exécution de la macro qui déplace ou active des objets Microsoft Excel. Type de données Boolean en lecture-écriture.
Cette fonction n'a aucun effet sur environnement Mac.

En espérant que ca te sera profitable
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : empecher fermeture USF

Bonjour , noviceAG, Kjin, le forum

Merci novice pour ta réponse

Je n'ai pas eu le temps de tester, je vais partir au boulot..je reviendrai ce soir sur le fil

si j'ai bien compris
Code:
Sub Test5() 
With Application 
.OnKey "^{F4}", "" 
[COLOR="Red"]que dois-je mettre ici ?[/COLOR]
End With 'Prévoir la sortie !
End Sub

faut-il remplacer la ligne rouge par (UserForm1.Show) pour le faire revenir
ou puis-je mettre autre chose pour fermer le classeur et quitter Excel

Bonne journée à tous
 

Pierrot93

XLDnaute Barbatruc
Re : empecher fermeture USF

Bonjour à tous

essaye comme ceci :

Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = CloseMode = 0
End Sub

mais n'oublie pas de prévoir une porte de sortie...un bouton que tu places sur l'usf, avec les tests adéquats...
Code:
Private Sub CommandButton1_Click()
If tacondition Then Unload Me
End Sub

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : empecher fermeture USF

Re

en relisant, je me dis que je suis sans doute à coté... si tu veux fermer le classeur, sans l'enregistrer, lorsque l'usf est fermé par ALT F4...

Code:
Option Explicit
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then ThisWorkbook.Close False
End Sub

@+
 

job75

XLDnaute Barbatruc
Re : empecher fermeture USF

Bonjour Philippe, le fil, le forum,

Une autre manière en utilisant la macro qui lance l'UserForm :

Code:
Sub Lancer_USF()
1 UserForm1.Show
GoTo 1
End Sub

Dans l'USF un bouton Quitter pour sortir et permettre l'enregistrement du classeur :

Code:
Private Sub CommandButton1_Click() 'Bouton Quitter
Dim mes As Byte
If Not ThisWorkbook.Saved Then mes = MsgBox("Voulez-vous enregistrer les modifications apportées à '" & ThisWorkbook.Name & "' ?", 3)
If mes = 2 Then Exit Sub
If mes = 6 Then ThisWorkbook.Save Else ThisWorkbook.Saved = True
If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End Sub

A+
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : empecher fermeture USF

Re, à tous,

@ Pierrot, ta réponse de 07h43 repond exactement à ce que j'attendais
Maintenant si l'utilisateur ferme l'Usf par Alt+F4 (parce qu'il n'y a pas de croix dans l'Usf) le classeur se fermera irrémédiablement


@Job75, j'ai déjà un bouton dans l'usf qui permet d'activer une procédure qui controle un code d'accès et qui accepte le code et permet l'accès aux feuilles, ou, ferme tout le classeur "sans discussion possible":mad:
Ce que je voulais, c'est empecher la fermeture de l'usf en appuyant sur Alt+F4


@ noviceAG, merci pour tes explications, j'en prends bonne note
tu peux changer ton pseudo en expertAG.................c'est moi le novice

encore Merci à tous
bonne fin de journée
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 132
Membres
103 127
dernier inscrit
willwebdesign