IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Comment annuler la fermeture d'un formulaire?


Sujet :

Access

  1. #1
    Provisoirement toléré Avatar de charleshbo
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 222
    Points : 125
    Points
    125
    Par défaut Comment annuler la fermeture d'un formulaire?
    Comment faire dans la méthode Form_Close() pour annuler la fermeture du formulaire? (Qui a été faite par un Docmd.Close ou en cliquant sur le petit "X")

  2. #2
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Evénement sur libération (Form_Unload(Cancel As Integer))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cancel = true 'Annule la fermeture

  3. #3
    Membre actif Avatar de ActionAccess
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 213
    Points
    213
    Par défaut
    Bonjour,

    Il est possible d'annuler la fermeture d'un formulaire en passant par l'évènement "sur libération".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Unload(Cancel As Integer)
    If MsgBox("Voulez-vous vraiment sortir?", vbYesNo) = vbNo Then
    Cancel = True
    End If
    End Sub
    Cette instruction sera appelée directement si tu cliques sur la croix. Par contre, si tu tentes de sortir avec un DoCmd.Close, une erreur se produit. Il conviendra donc d'intercepter l'erreur comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Fermer_Click()
    On Error GoTo GestionErreur
    DoCmd.Close
    GestionErreur:
    End Sub
    Bon courage

  4. #4
    Provisoirement toléré Avatar de charleshbo
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 222
    Points : 125
    Points
    125
    Par défaut
    Est-ce que je pourrais avoir distinctement la meme opération dans le Form_Close et dans le Form_Unload sans que mon message d'erreur soit dupliqué?

    Parce que si l'utilisateur, dans mon formulaire, clique sur "Annuler", cela appelera un Docmd.Close et donc la méthode Form_Close. Mais si l'utilisateur a entrer des données et qu'il quitte autrement que par "Ok" ou "Annuler", c'est cela qui cause probleme.

    Est-ce que ça pourrait être bon que j'appele la méthode Form_Unload directement par ma fonction Click du bouton annuler? Comme cela il y aura une seule procédure.. Est-ce possible?

  5. #5
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    J'ai essayé, ça fonctionne pas.
    Dans l'évênement On_Click de ton bouton tu peux simuler l'appuie sur la croix de fermeture de la fenêtre.
    Dans un module de code j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Const WM_CLOSE As Long = &H10
    Public Declare Function SendMessage Lib "User32.dll" Alias "SendMessageA" _
           (ByVal hWnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Et dans le code du bonton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub BoutonFermer_Click()
    Dim RetVal As Long
    RetVal = SendMessage(Me.hWnd, WM_CLOSE, 0, 0)
    End Sub
    Moi ça fonctionne avec W98/Access2000. A vérifier sur d'autres plateformes.

    Sinon la proposition de ActionAccess marche impécable. Tu dois juste intercepter et ignorer l'erreur quand tu annule l'action Unload.

    A+

  6. #6
    Provisoirement toléré Avatar de charleshbo
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 222
    Points : 125
    Points
    125
    Par défaut
    Peut-être que si je désactiverais le bouton "X", j'aurais seulement a m'occuper du Docmd.Close?

    Est-ce que ça pourrait être une bonne solution?

  7. #7
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Il y a aussi cette technique à adapter à un formulaire (ici le cas porte sur l'appli access)

    http://www.developpez.net/forums/vie...669516#2669516

  8. #8
    Provisoirement toléré Avatar de charleshbo
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 222
    Points : 125
    Points
    125
    Par défaut
    Non, ce n'est pas exactement de la manière que je souhaite l'exploiter. Ce n'est pas grave, je me suis trouvé une solution.

Discussions similaires

  1. [AC-2007] Annuler la fermeture d'un formulaire de saisie
    Par pierrequimousse dans le forum VBA Access
    Réponses: 4
    Dernier message: 13/01/2010, 09h27
  2. Comment annuler la fermeture avec la croix ?
    Par Nico128 dans le forum WinDev
    Réponses: 2
    Dernier message: 02/03/2008, 11h36
  3. Comment interdire la fermeture d'un formulaire ?
    Par Cvbdev dans le forum Windows Forms
    Réponses: 9
    Dernier message: 29/06/2007, 19h18
  4. Réponses: 23
    Dernier message: 02/05/2006, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo