Empêcher à un utilisateur de cliquer sur la croix d'un formulaire

Résolu
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 - 23 juil. 2004 à 12:35
cs_Biname Messages postés 2 Date d'inscription jeudi 18 mars 2004 Statut Membre Dernière intervention 27 octobre 2004 - 27 oct. 2004 à 13:59
Bonjour à tous,

je suis en train de réaliser des formulaires sous Access, et j'essaye d'implémenter un code pour empêcher l'utilisateur de fermer mon formulaire et/ou fermer access, en cliquant sur les croix.

j'ai mis le code suivant, dans mon code VB :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox "Impossible de fermer en cliquant sur la croix."
Cancel = True
End If
End Sub

mais je peux quand même fermer le formulaire avec les croix, et de plus, même en mettant un MsgBox au début de ma procédure, rien ne se passe.

Comment faire pour réaliser ceci ? Est ce que j'utilise la bonne méthode pour l'utilisation de Queryclose ?

Merci par avance

Slyv

11 réponses

el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
23 juil. 2004 à 16:13
C'est bon je pense que j'ai trouvé,

tu ouvre ton formulaire en mode création,

tu cliques droit dans le gris sour ton formulaire pour ouvrir les propriétés de la form.
Ensuite dans l'onglet format tu as tout ce qu'il faut pour paramétrer ton affichage.

ps : je vais te filer les n° car moi c'est access en allemand donc ca va pas te parler bcp :)

12 éme propriété -> minmax... -> oui -> tu as les bouton minimiser, agrandir, -> non, il ne sont pas là !
13 ème propriété -> fermer qqch -> oui , tu peux fermer, -> non, la croix est disabled comme je le disais précédemment

:)

Si, c'est la solution que tu voulais, n'oublie pas d'accepter la réponse pour indiquer que le sujet est clos :)

++
Syl20
ps : un sylvain en aide forcément un autre :)
1
MarTiUS_Will Messages postés 36 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 28 septembre 2004
23 juil. 2004 à 13:01
Bonjour,
Je n'ai pas Acces d'instaler mais, regarde si il n'y aurait pas l'événement Unload a la place...

Private Sub UserForm_Unload()
0
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 1
23 juil. 2004 à 14:06
Bonjour,

L'événement UserForm_Unload n'existe pas. Je peux utiliser l'événement Form_Unload, mais cet événement ne prend que cancel en paramètre et je ne peux donc pas utiliser le CloseMode :(
0
MarTiUS_Will Messages postés 36 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 28 septembre 2004
23 juil. 2004 à 14:19
Mais tu dit que ton msgbox ne marche pas..
Est tu sur que cet événement est relier a la fermeture de la form ?
Car pour moi il s'agirais de la fermeture d'un query quelquonque (Requete) Donc le cancel cancelerai ta demande de fermer le query....

Essai avec ceci et redonne moi des nouvelle
Private Sub Form_Unload(Cancel As Integer)
Cancel = True
End Sub

Et tu pourais m'expliquer la différence entre Form et UserForm ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 1
23 juil. 2004 à 14:37
En spécifiant le bout de code que tu m'as donné avec l'événement unload, je ne peux pas fermer le formulaire, ce qui est normal vu que j'ai mis le paramètre cancel à true ;)

Donc ça marche mais c pas tout à fait ce que je veux faire ...

En faite, sur mon formulaire, j'ai 2 boutons :

Le premier qui a comme objectif de fermer access : DoCmd.Quit
Le second qui a comme objectif de fermer access : DoCmd.Close

Mais en faite, je souhaite exécuter une fonction de test avant d'effectuer l'action, de fermeture du formulaire ou de access.

En gros, je clique sur le bouton, la fonction de test me retourne un message d'erreur éventuel. Si y'a un message d'erreur, je n'effectue pas le quittage d'access ou la fermeture du formulaire, sinon je le fais.

Comme je ne sais pas récupérer le déclenchement d'un événement, je souhaites donc pour cela bloquer purement et simplement les clics sur les croix, et ensuite, faire mon code dans mes 2 boutons de la façon suivante :

private sub quitterAccess_Click()
récupération du résultat de la fonction de test
si résultat positif, alors quitter access, sinon afficher un message
end sub

et même principe pour la fermeture du formulaire.

donc en faite, ça serait pas l'événement unload puisque j'ai une action différente selon ce que je veux faire.

Enfin, je ne connais pas la différence entre Form et UserForm, je commence à peine le VB et je n'ai pas encore vu ce point

Slyv
0
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
23 juil. 2004 à 14:43
Il existe pas un moyen de disable la croix ?

elle devient un peu grise, et plus rouge. Je crois que j'ai déjà vu ca. C'est-ce que tu cherches ou tu veux absolument qu'elle soit enabled et que ca marque "fermeture impossible !" ? ? ?

++
sylvain
0
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 1
23 juil. 2004 à 14:47
Non j'ai pas besoin du message ;)

Si elle est disable tout le temps, c bon.

L'essentiel étant qu'on puisse pas les cliquer, ou que si on les clique, ça rappel l'utilisateur à l'ordre ;)

++

Slyv
0
MarTiUS_Will Messages postés 36 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 28 septembre 2004
23 juil. 2004 à 14:59
si jamais tu ne pouvais pas disabler la croix...

Public Function TestFin() As Boolean
'Ici tu place ton code et a la fin tu dit si c'est True ou false
'TestFin = True
'TestFin = False
End Function

Private Sub quitterAccess_Click()
If TestFin = True then
DoCmd.Quit
DoCmd.Close
Else
MsgBox "Ton Message d'erreur"
End If
end sub
0
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 1
25 juil. 2004 à 11:28
Salut,

Déjà désolé pour le temps de réponse à ton message el_teedee.

En faite, je développe une application VB / Access au boulot, donc une fois que je suis sorti des murs de la boîte, je fais autre chose, et en l'occurence là, c'était le week end :) c toujours d'ailleurs, lol.

J'ai quand même tester ta solution, et oui la solution que tu me donnes me convient parfaitement !!!!!

En mode pleine écran, le formulaire n'a plus la jolie croix (disparu :p), et si l'utilisateur réduit le formulaire, la croix est puement et simplement disabled :) donc c super cool !!! ^^

Maintenant, j'espère que demain, quand je retournerais sur mon ACCESS 97, ce sera la même chose (chez moi j'ai Access 2003).

Merci à toi, et merci à vous tous pour vos réponses :)

Slyv
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
20 sept. 2004 à 10:00
Pour faire disparaitre les croix des formulaires sous Access, il suffit d'aller dans les propriété du formulaire et de mettre "non" à "Bouton Fermer". Ainsi le bouton est disabler :)
Par contre, je pense qu'il n'est pas possible d'empêcher l'utilisateur de fermer Access, tout ce que je vois comme solution serait de faire un formulaire en fenêtre indépendante qui chevauche le formulaire d'Access et donc le cacherait. Mais bon...
TBBUIM
0
cs_Biname Messages postés 2 Date d'inscription jeudi 18 mars 2004 Statut Membre Dernière intervention 27 octobre 2004
27 oct. 2004 à 13:59
Salut,

Tu peux faire un copier coller de ce qui suit.... ca fonctionne tres bien.

Tu dois tout dabord créer un module dans lequel tu places le code suivant
-------------------------------------------------------------------------

Option Compare Database

Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Const SC_CLOSE = &HF060&
Public Const MF_BYCOMMAND = &H0&

Public Sub DesacFermeture()
Dim hSysMenu As Long

hSysMenu = GetSystemMenu(Application.hWndAccessApp, False)
RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND

End Sub

Ensuite, a l'ouverture de ton formulaire ou de ta bd tu appels ta fonction en tapant
---------------------------------------------------------------------------

'Appel de la fonction désactivant la croix de fermeture
DesacFermeture
0
Rejoignez-nous