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

Contribuez Discussion :

[FAQ] Ouvrir un formulaire sans ouvrir Access


Sujet :

Contribuez

  1. #1
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut [FAQ] Ouvrir un formulaire sans ouvrir Access
    à tous,

    Voilà une astuce que les merveilleux modo Access m'on fait découvrir aujourd'hui afin d'ouvrir un formulaire sans pour autant ouvrir Access.
    Je trouve cette astuce très pratique et ça m'étonne fort qu'elle ne soit pas dans la FAQ donc voici une solution :

    Avant tout : Attention lorsque vous rendez la fenêtre Access invisible, vous n'y aurais plus du tout accès donc si vous souhaitez modifier le code ce n'est plus possible donc faîtes une sauvegarde avant la manip' (du moins moi je n'arrive plus à accéder au code donc si quelqu'un de plus expérimenté pouvais confirmer ceci ).

    Pour commencer, il faut que vous rendiez la fenêtre de votre formulaire indépendante et modale via les propriétés du formulaire.
    Puis dans le code de votre formulaire, il faut rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Form_Load()
        'Ouverture du formualire sans la fenêtre principale Access
        ShowWindow Application.hWndAccessApp, 0
    End Sub
     
    Private Sub Form_Close()
        'fermeture d'Access lors de la fermeture du formulaire
        Application.Quit
    End Sub
    Application.Quit sert à fermer Access automatiquement lors de la fermeture du formulaire sinon le processus MSACCESS.EXE tourne toujours.

    En espérant que ça pourra éviter des galères à certains

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Il ne faut pas avoir des données ultra importantes lorsqu'on joue avec ce genre de manipulation.
    En tous les cas un complément genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Compare Database
    'Appel API et constante pour masquage et affichage
    Const SW_HIDE = 0 ' Masquer
    Const SW_NORMAL = 1 ' Restaurer- afficher
    Private Declare Function ShowWindow Lib "user32" _
    (ByVal hwnd As Long, ByVal FHCmdShow As Long) As Long
    sera le bienvenue et pour avoir accés à la base sur un bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShowWindow Application.hWndAccessApp, 1
    Cordialement
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  3. #3
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut
    Citation Envoyé par francishop
    Il ne faut pas avoir des données ultra importantes lorsqu'on joue avec ce genre de manipulation.
    Bè typiquement dans mon projet j'ai scindé la base et l'appli donc même dans le cas où tu ne peux plus ouvrir Access et modifier ton appli, tu pourras modifier ta page et y avoir accès (c'est un plus au MDE en fait).

  4. #4
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 573
    Points : 258
    Points
    258
    Par défaut
    bonjour j'ai essayé votre méthode qui est effectivement super esthétique...

    par contre les etat ne sont plus visible. Existe t'il un moyen de visualiser quand meme les états..

    merci

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 103
    Points : 68
    Points
    68
    Par défaut
    bonjour,
    en essayant cette méthode un msg d'erreur apparait

    Erreur de compilation :
    Sub ou Fonction non définie

    ou ShowWindow est surligné ds le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Form_Load()
        'Ouverture du formualire sans la fenêtre principale Access
        ShowWindow Application.hWndAccessApp, 0
    End Sub
    une idée ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 103
    Points : 68
    Points
    68
    Par défaut
    C'est ok,
    j'avais oublié de copier ce code ds un module...

  7. #7
    Inscrit
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    992
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 992
    Points : 217
    Points
    217
    Par défaut
    Juste une Question est ce que aprés la création du module et l'intégration du Code, le rendu ça sera ça : http://access.developpez.com/faq/?pa...ce#AffBarrMenu

    si c'est le Cas, ça vaut peut être la peinne de passer sans code ?..?

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Voilà je suis tout nouveau dans access et votre sujet m'intéresse bcp. Ton code doit être mis dans la partie du formulaire que l'on affiche dès le début c'est bien cela? C'est bien dans une procédure évènementielle?

    Comme Domik j'ai eu la même erreur. Alors j'ai rajouté le bout de code qu'il manquait mais j'ai toujours un problème.

    Peut être je ne place pas le code au bon endroit. Si vous pouviez me guider ça serait super sympa.

    Merci

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 103
    Points : 68
    Points
    68
    Par défaut
    Bonjour Bastien95,
    le code qu'il me manquait , est à copier dans un module : c'est celui ci

    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
    'Déclaration API
     Const SW_HIDE = 0             'Hide the window.
      Const SW_MAXIMIZE = 3         'Maximize the window.
      Const SW_MINIMIZE = 6         'Minimize the window.
      Const SW_RESTORE = 9          'Restore the window (not maximized nor minimized).
      Const SW_SHOW = 5             'Show the window.
      Const SW_SHOWMAXIMIZED = 3    'Show the window maximized.
      Const SW_SHOWMINIMIZED = 2    'Show the window minimized.
      Const SW_SHOWMINNOACTIVE = 7  'Show the window minimized but do not activate it.
      Const SW_SHOWNA = 8           'Show the window in its current state but do not activate it.
      Const SW_SHOWNOACTIVATE = 4   'Show the window in its most recent size and position but do not activate it.
      Const SW_SHOWNORMAL = 1       'Show the window and activate it (as usual).
     
      Public Declare Function ShowWindow Lib "User32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
     
     
    'minimise la fenetre access et active le formulaire
    Function Fenetre_Modale(pForm As Form)
      ShowWindow Application.hWndAccessApp, SW_HIDE
      ShowWindow pForm.hWnd, SW_SHOWNORMAL
      ShowWindow Application.hWndAccessApp, SW_SHOWMINNOACTIVE
    End Function

  10. #10
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci d'avoir répondu aussi rapidement. Je vais tester de suite. Mais il faut bien mettre le code dans la partie évênementielle de mon formulaire, c'est bien ça?

  11. #11
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Donc voilà j'ai rajouté tout le code que tu m'as donné. Ce code je l'ai mis dans le fichier où il y a toute les procédures évênementielles de mon formulaire. Mon formulaire s'appelle Form_Menu et pour la procédure évênementielle load je fais appel à la fonction Fenetre_Modale Forms![Form_Menu].

    Malheureusement, j'ai toujours un souci. Forcément je dois mal placer mon code, je ne vois que ça.

  12. #12
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Voilà après quelques heures de persévérence j'ai enfin réussi.

    Merci pour ton aide.

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai eu le même problème que Bastien95. Cependant, je n'ai pas réussi à le régler ... je n'arrive pas à coller le code de la bonne façon pour qu'il fonctionne et access me retourne toujours un message d'erreur. J'ai ajouter le code à la fin des procédures événementielles de mon menu principal.

    Si quelqu'un pourrait m'aider, ce serait très aprécié.

    Merci

    P.S. Je suis plutôt débutant avec le VBA

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 103
    Points : 68
    Points
    68
    Par défaut
    le code est à copier dans un module

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai toujours un problème avec ce code !

    J'ai copier le code qui devait se retrouver dans un module dans un nouveau module -> Module 1

    Puis j'ai ajouter les deux prpocédures Form_Load et Form_Close à la fin des procédures du menu principal.

    L'orsque j'ouvre mon fichier il n'y a plus rien du tout qui s'affiche mais le processus MSACCESS.EXE tourne.

    Je ne sais plus du tout quoi esseyer !
    Merci de m'aider.

  16. #16
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 91
    Points : 60
    Points
    60
    Par défaut
    Désolé de ressortir les vieux dossiers
    Ce code fonctionne parfaitement bien sur mon formulaire principal, dès son ouverture.

    Or, sur ce même formulaire principal, j'ai un bouton qui m'fait :
    -Fermer mon formulaire principal
    -Ouvrir un formulaire secondaire.

    Et ce formulaire secondaire ne s'ouvre jamais (Excepté si j'enlève le code ShowWindow....), je n'ai pas de messages d'erreur, mais bon, si vous aviez une idée.

    Un semi-développeur en détresse

    Guillaume.

  17. #17
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Bonjour, guillome,
    J'espère que tu n'as pas laissé ça dans le code de ton formulaire n° 1 :
    Citation Envoyé par trotters213 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Close()
        'fermeture d'Access lors de la fermeture du formulaire
        Application.Quit
    End Sub
    Application.Quit sert à fermer Access automatiquement lors de la fermeture du formulaire sinon le processus MSACCESS.EXE tourne toujours.
    sinon, c'est sûr : dès que le 1er se ferme, il ferme Access complètement !
    Il y a plusieurs solutions pour gérer la circulation entre les formulaires :
    + simple :soit tu ne quitte pas en fermant le 1er, mais seulement lorsque l'utilisateur clique sur un bouton 'Quitter',
    + subtil : soit tu maintiens le code d'origine, mais tu ne fermes jamais le 1er formulaire : tu le rrends juste invisible, jusqu'au moment de quitter...
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  18. #18
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 91
    Points : 60
    Points
    60
    Par défaut
    Bonjour Papy Turbo,

    Oui j'ai pris soin d'enlever :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Close()
        'fermeture d'Access lors de la fermeture du formulaire
        Application.Quit
    End Sub
    Hélas, le problème c'était que mon deuxième formulaire ne s'ouvrait pas. malgré avoir enlevé le code ci-dessus ; Je reste dans l'application Access, mais sans avoir de formulaires ouverts.

    Je choisirais ta solution la plus subtile, car il ne faut pas que j'affiche mes deux formulaires en même temps.
    Tu rends ton formulaire invisible grâce à un code VBA quelconque ou directement dans une propriété ? Si une solution déjà pré-faite existe, je suis preneur

    En l'occurrence, ce serait rendre le premier formulaire invisible, mais aussi afficher le second !

    Car si j'enlève ma commande "ShowWindow Application.hWndAccessApp", mon bouton retrouve son état initial (A savoir fermé le formulaire et ouvrir le deuxième) et fonctionne très bien.

    Guillaume.

  19. #19
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Bonjour, Guillaume,

    Formulaire qui ne s'ouvre pas :
    - D'abord, vérifie bien que TOUS les formulaires sont modaux + indépendants :
    il faut que vous rendiez la fenêtre de votre formulaire indépendante et modale via les propriétés du formulaire.
    - S'il ne s'ouvre toujours pas, mets nous le code du bouton.

    Formulaire invisible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms("NomDuFormulaire").Visible = False
    Pour le réafficher, un simple Docmd.Open acForm,... le fera très bien, qu'il soit déjà ouvert (invisible) ou pas.

    Sur le principe de ce mécanisme pour cacher Access, je te suggère une astuce de débogage :
    - Tant que tu travailles dessus, remplace la commande ShowWindow, par un simple 'APPlication Minimize':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Form_Load()
         'Ouverture du formualire sans la fenêtre principale Access
         'ShowWindow Application.hWndAccessApp, 0
         DoCmd.RunCommand acCmdAppMinimize
    End Sub
    Access ne sera pas visible à l'écran, mais accessible sur la barre de tâche : si un de tes formulaires n'est pas visible, clique sur Access et vérifie s'il n'est pas ouvert là dedans. Si oui, ça veut dire que le formulaire n'est pas modal, ou pas indépendant.
    Ce mode est + pratique pour déboguer. Tu rétabliras la commande ShowWindow au moment de livrer à ton client/utilisateur...
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/07/2008, 09h34
  2. Ouvrir un formulaire sans ouvrir Access
    Par limon336 dans le forum IHM
    Réponses: 17
    Dernier message: 01/06/2008, 15h33
  3. ouvrir un formulaire sans ouvrir access
    Par trotters213 dans le forum Access
    Réponses: 14
    Dernier message: 25/07/2007, 22h42
  4. ouvrir un formulaire sans ouvrir access
    Par Vincent623 dans le forum IHM
    Réponses: 25
    Dernier message: 28/12/2006, 09h34
  5. Réponses: 2
    Dernier message: 18/10/2005, 10h54

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