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

IHM Discussion :

Activer/désactiver la croix de fermeture Access


Sujet :

IHM

  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut Activer/désactiver la croix de fermeture Access
    Bonjour à tous,

    J'utilise le code suivant pour activer ou désactiver la croix rouge en haut et à droite de la fenêtre Access.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Option Explicit
    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&
    Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
     
    Public Sub DesacFermeture()
    'Désactive la croix rouge en haut et à droite de la fenêtre Access
    Dim hSysMenu As Long
     
    hSysMenu = GetSystemMenu(Application.hWndAccessApp, False)
    RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
     
    End Sub
     
     
    Public Sub ReactiveFermeture()
    'Réactive la croix rouge en haut et à gauche de la fenêtre Access
    Dim hSysMenu As Long
    hSysMenu = GetSystemMenu(Application.hWndAccessApp, True)
    DrawMenuBar hSysMenu
     
    End Sub
    Lorsque je l'utilisais en XP ou Vista et Office 2003, pas de problème.
    Actuellement, je suis en Seven 64 bits et Office 2007 et là aussi, pas de problème.

    Mais sur les PC de mon travail, nous sommes en XP et Office 2007, et là, ce code ne fonctionne plus.

    Quelqu'un aurait il une idée de l'origine de ce problème ?

    Cordialement

    Christophe

  2. #2
    Membre actif Avatar de Pittouti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2012
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 246
    Points : 257
    Points
    257
    Par défaut
    Bonjour,

    tu le désactive définitivement ?!

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonsoir,

    Merci de t'interresser à mon problème.

    Donc, non, je le désactive à l'ouverture de mon application et je le réactive à la fermeture d'Access.

    Cordialement

    Christophe

  4. #4
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonsoir à tous,

    Après maintes recherches, j'ai découvert que ce problème était connu.

    J'ai donc cherché et testé une tartine de codes mais, à première vue, il ne semble pas y avoir de solution à ce problème.

    Peut être qu'un SP Office peut remédier à ce problème mais je n'en suis pas sur.

    Si quelqu'un a la solution miracle, je suis preneur.

    Cordialement

    Christophe

  5. #5
    Membre actif Avatar de Pittouti
    Homme Profil pro
    Consultant SAP
    Inscrit en
    Avril 2012
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SAP
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 246
    Points : 257
    Points
    257
    Par défaut
    Désolé pour la question !!! mais pourquoi cette usine à gaz ?

  6. #6
    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 759
    Points
    7 759
    Par défaut
    Bonjour,

    Pour contrôler la fermeture d'Access, il y a une autre technique qui consiste à ouvrir un formulaire en mode caché.
    Dans le module de code du formulaire tu mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Dim bAppQuit As Boolean
     
    Public Sub AutoriserFermeture()
    bAppQuit = True
    End Sub
     
    Public Sub InterdireFermeture()
    bAppQuit = False
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
    If bAppQuit = False Then
       If MsgBox("Confirmer", vbYesNo, "Fermeture de l'application") = vbNo Then Cancel = True
    End If
    End Sub
    La variable bAppQuit sert à valider la fermeture du formulaire.
    Si on empêche le formulaire de se fermer avec Cancel = True dans l'événement «Sur libération», on empêche Access de se fermer.

    La sub publique AutoriserFermeture() permet de modifier la variable bAppQuit pour autoriser la fermeture.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms("Nom du formulaire").AutoriserFermeture
    Ça n'est pas exactement ce que tu recherches, mais fonctionnellement ça devrait répondre à ton besoin.

    A+

  7. #7
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonsoir,

    Merci de ce conseil et soit dit en passant, belle pirouette.

    Je vais voir comment exploiter cette idée mais cela me semble difficile.
    En effet, il arrive que mon application soit sans formulaire ouvert.
    Tout se commande par le ruban pour ouvrir un formulaire qui lui même établit la connexion avec une dorsale.
    Dorsales qui peuvent varier en fonction de ce l'on veut faire (1 douzaine de dorsale).
    De ce fait, lorsque l'utilisateur ferme son projet, tous les formulaires sont également fermés.
    Ensuite, on utilise le ruban pour ouvrir un autre projet qui lui même se connecte à une autre dorsale etc.

    Cela dit, je garde l'idé sous le coude au cas oû je n'aurais pas d'autre solution.

    Merci beaucoup

    Cordialement

    Christophe

  8. #8
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 789
    Points : 1 266
    Points
    1 266
    Par défaut
    Bonjour LedZeppII,

    J'ai finalement appliqué ta méthode et cela fonctionne parfaitement.

    Cela dit, ce processus n'est qu'une pirouette (une de plus, tu me diras ), et elle ne représente pas une finalité pour moi.

    Je ne désespère pas trouver une solution et c'est la raison pour laquelle je vais laisser ouvert ce fil.

    S'il existe une solution, il y a beaucoup de personnes qui vont être ravies de la connaître.

    Cordialement

    Christophe

  9. #9
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Plus de précisions pour un débutant
    Bonjour à vous et j'espère que vous pouvez m'aider même si ce poste est ouvert depuis longtemps.

    J'ai récupéré votre solution ci-dessus. Mais je ne saisi pas bien comment résoudre mon problème. Je m'explique:

    J'ai un form "autoexec" qui est le form principal et le form d'ouverture de mon programme. Toutes les fermetures des autres form redirigent vers le form principal "autoexec". Dans le form "autoexec" se trouve un bouton de fermeture du programme avec un code pour la sauvegarde des tables et l'effacement des sauvegardes de plus de 20 jours.

    Mon code ci-dessous me pose un problème quand je clique sur le bouton fermeture, j'aimerais passé outre le bout de code ci-dessous. J'aimerais que le programme se ferme. J'ai pensé quand donnant le nom du Form"autoexec" dans le "autoriserFermeture()" que cela fonctionnerais, mais non

    Ce qui est aussi étonnant, même si je clique sur le non de la msgbox, le programme se ferme quand même. Le code du bouton lui fonctionne bien.

    Donc voilà mes 2 soucis:
    - Comment faire pour que quand on clique sur le bouton fermeture du programme, le message du code ci-dessous ne s'enclenche pas?
    - Et pourquoi quand je dis non au message "confirmer" le programme se ferme quand même?

    Voilà, mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
    Dim bAppQuit As Boolean
     
    Public Sub AutoriserFermeture()
    Forms![Frm_autoexec].AutoriserFermeture
    bAppQuit = True
    End Sub
     
    Public Sub InterdireFermeture()
    bAppQuit = False
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
    If bAppQuit = False Then
       If MsgBox("Veuillez utiliser le bouton avec la porte pour quitter la fenêtre, sinon vous risquez de perdre certaines données. Voulez-vous tout de même arrêter le programme?", vbYesNo, "Fermeture de l'application") = vbNo Then Cancel = True
    End If
    End Sub
    Merci du soutien que vous apporterez à un débutant

Discussions similaires

  1. [AC-2010] Désactiver le bouton en croix fermeture access
    Par ThieBEN dans le forum VBA Access
    Réponses: 4
    Dernier message: 26/05/2014, 11h05
  2. [XL-2003] Désactiver la croix de fermeture ou des touches
    Par JM741 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/04/2011, 14h07
  3. [IP-2007] Désactiver la croix de fermeture dans un formulaire InfoPath
    Par thom07lamy dans le forum InfoPath
    Réponses: 3
    Dernier message: 24/09/2009, 16h37
  4. [AS 2.0] Désactiver la croix de fermeture.
    Par TRUNKS-SSJ7 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 07/06/2009, 20h52

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