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 :

[Formulaire] Rouvrir le dernier formulaire ouvert avant le formulaire actuel


Sujet :

IHM

  1. #1
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut [Formulaire] Rouvrir le dernier formulaire ouvert avant le formulaire actuel
    Bonjour,

    Après avoir fouillé, je n'ai pas trouvé le moyen de faire la chose suivante : je m'explique.

    J'ai plusieurs formulaires. Je bascule de l'un à l'autre avec des boutons de bascule. Il y a plusieurs solutions pour ouvrir chaque formulaire. Par exemple :

    Soit 3 formulaires A, B et C.

    Pour ouvrir C, je peux passer par A ou par B. Quand C est ouvert, A et B doivent être fermés.

    Voici ma question : une fois que C est ouvert (et donc A et B fermés), comment puis-je procéder pour que le dernier formulaire avant l'ouverture de C se rouvre (et que C se ferme), que ce soit A ou B ?

    De la sorte, mon bouton de bascule Précédent aurait davantage de sens. Or, DoCmd.OpenForm m'oblige à spécifier le nom d'un formulaire. Y a-t-il un mot permettant de rouvrir le dernier ouvert ?

    Espérant que ma question est assez claire,
    Et vous remerciant,

    Stéphanie.

  2. #2
    Expert confirmé
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Par défaut
    Bonjour,

    Après avoir fouillé, je n'ai pas trouvé le moyen de faire la chose suivante
    Regarde ici

    Domi2

  3. #3
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 133
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    C'est assez simple...
    Dans un module, tu déclares un variable publique ou dans une classe, une propriété (recommandé)

    Ta variable ou ta propriété prend la valeur du nom du formulaire au moment de l'ouverture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Form_Load()
        gv_strLastFormName=Me.Name
    End Sub
    • Quand A se ferme gv_strLastFormName = "A"
    • Quand B se ferme gv_strLastFormName = "B"
    • Quand C s'ouvrre gv_strLastFormName = "A" ou "B" selon le cas


    Sur le Click du bouton Fermer de C, tu poses alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.Close acForm, Me.Name
    DoCmd.OpenForm gv_strLastFormName, acNormal
    Voilà...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  4. #4
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut
    Merci Domi 2, mais en fait, je ne comprends pas bien ce qu'il faut que j'en fasse.
    Je ne sais pas si je comprends bien :

    Est-ce que du coup, l'utilisateur doit inscrire le nom du formulaire qu'il veut rouvrir dans la MsgBox ?

  5. #5
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut
    Merci Argyronet (tu as vu je t'ai mis une majuscule, tu la mérites bien !)

    Je vais essayer ça et je donne des nouvelles

  6. #6
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut
    Bonjour,

    C'est assez simple...
    Dans un module, tu déclares un variable publique ou dans une classe, une propriété (recommandé)

    Ta variable ou ta propriété prend la valeur du nom du formulaire au moment de l'ouverture :

    Code :

    Private Sub Form_Load()
    gv_strLastFormName=Me.Name
    End SubQuand A se ferme gv_strLastFormName = "A"
    Quand B se ferme gv_strLastFormName = "B"
    Quand C s'ouvrre gv_strLastFormName = "A" ou "B" selon le cas

    Sur le Click du bouton Fermer de C, tu poses alors

    Code :
    DoCmd.Close acForm, Me.Name
    DoCmd.OpenForm gv_strLastFormName, acNormal
    Voilà...

    Argy
    j'ai donc fait ce que tu m'as dit, mais j'ai un message d'erreur qui me demande de spécifier le nom du formulaire

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Mets le code que tu as écrit.

    Starec

  8. #8
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut
    Rebonjour Starec,

    Dans un module que j'ai appelé OuvertureFormulairePrecedent, j'ai mis le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Load()
        gv_strLastFormName = Me.Name
    End Sub
    Et dans la propriété sur Clic du bouton de bascule Precedent de mon formulaire qui s'appelle Aide, j'ai mis celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Precedent_Click()
    DoCmd.Close acForm, Me.Name
    DoCmd.OpenForm gv_strLastFormName, acNormal
    End Sub
    En bref, j'ai fait ce que m'a dit Argy, mais ça ne marche pas et j'ai ce fameux message d'erreur qui apparait :

    "Erreur d'exécution '2494' : l'action ou la méthode requiert un argument 'Nom formulaire'.

    vois-tu ce qui se passe ?
    Merci

  9. #9
    Membre émérite Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    849
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2005
    Messages : 849
    Par défaut
    Salut,
    as tu déclaré la variable gv_strLastFormName comme publique dans un module ?

  10. #10
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut
    Bonjour M'sieur Jean-Paul,

    C'est une bonne question ! En fait je ne connais pas bien les modules, et je me disais que justement, la procédure ne trouvait pas le dernier formulaire car il y avait peut-être un pb de lien avec le module... Du coup, je suis en train de chercher comment on fait pour déclarer une variable publique dans la FAQ, et aussi ce que cela veut dire

  11. #11
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 133
    Billets dans le blog
    5
    Par défaut
    Hummm,

    Bon, dans ton projet, depuis Visual Basic Editor tu insères un nouveau module depuis le menu Insertion.
    Dans ce module tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public gv_strLastFormName As String
    Tu enregsitres le module sous basDeclarations

    Ensuite, tu appliques le code que je t'ai donné.

    N.B. Une variable publique est une variable visible par l'ensemble de tes objets...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  12. #12
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut
    En fait, je ne comprend pas grand chose...

    J'ai trouvé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Variable privée représentant la marque, on ne peut pas y accéder depuis l'extérieur
    Private m_Marque As String
    ... mais je ne comprends pas ce que cela veut dire, je ne sais pas ce qu'est Marque, et je ne sais pas non plus où il faut que j'insère cette ligne de code si elle est correcte (au début de mon module OuvertureFormulairePrecedent, dans un autre module,...).

  13. #13
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut
    Merci Argy,

    J'essaie ta solution

  14. #14
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut


    J'ai fait ce que tu m'as dit, Argy, j'ai tjrs le même message. Du coup j'ai même essayé en mettant tout dans le même module, et ça ne marche pas non plus... Access requiert un nom de formulaire avec son erreur 2494.
    C'est à croire que la procédure ne capte tjrs pas la déclaration de la variable comme étant publique

  15. #15
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut
    Pourtant, je pense que j'ai compris ce qu'il fallait faire :

    Déclarer la variable publique qui dit que le nom du formulaire à ouvrir est le dernier à avoir été fermé, pour que la procédure sur clic de mon bouton de bascule puisse se référer à ce module et ouvrir le bon formulaire, c'est bien ça ?

  16. #16
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut
    Re,

    Voilà maintenant où j'en suis :

    J'ai créé un module nommé "basDeclarations". il contient le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Compare Database
    Public gv_strLastFormName As String
    J'ai créé un autre module nommé OuvertureFormulairePrecedent, il contient le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Load()
        gv_strLastFormName = Me.Name
    End Sub
    Enfin, dans mon formulaire nommé Aide, j'ai un bouton de bascule nommé "Precedent". Dans l'événement Sur Clic, j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Precedent_Click()
    DoCmd.Close acForm, Me.Name
    DoCmd.OpenForm gv_strLastFormName, acNormal
    End Sub
    Malheureusement, j'ai toujours cette erreur 2494, et je ne vois pas du tout pourquoi ça ne marche pas

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par The_Super_Steph
    Re,

    J'ai créé un autre module nommé OuvertureFormulairePrecedent, il contient le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Load()
        gv_strLastFormName = Me.Name
    End Sub
    Ce code doit être mis dans un formulaire et non dans un module

    Starec

  18. #18
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut
    Ok Starec, je n'avais pas compris qu'il fallait le mettre dans un formulaire alors qu'il y a écrit Form load... toutes mes excuses

    cela dit, maintenant, il m'ouvre en permanence le formulaire Aide, et non celui qui était ouvert avant (c'est quand même mieux que ce que c'était, mais ce n'est pas encore ça!)

    Encore toutes mes excuses

  19. #19
    Membre éclairé
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Par défaut
    Je viens d'essayer un truc : j'ai inversé l'ouverture et la fermeture (pour que le dernier ouvert ne soit pas Aide), ça donne cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Precedent_Click()
    DoCmd.OpenForm gv_strLastFormName, acNormal
    DoCmd.Close acForm, Me.Name
    End Sub
    Je crois qu'en fait, c'est le formulaire Aide qu'il me rouvre lorsque les 2 phrases sont dans l'autre sens, mais dans ce sens-là, ça ne marche pas non plus. En fait, du coup, lorsque je clique sur mon bouton Précédent, le formulaire Aide se ferme, et aucun ne s'ouvre alors.

  20. #20
    Membre émérite Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    849
    Détails du profil
    Informations personnelles :
    Âge : 69

    Informations forums :
    Inscription : Février 2005
    Messages : 849
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Load()
        gv_strLastFormName = Me.Name
    End Sub
    ce code doit être mis sur TOUS tes formulaire de façon à récupérer le nom du formulaire appelant

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Savoir quel formulaire a ouvert un autre formulaire
    Par Dafbau dans le forum Access
    Réponses: 7
    Dernier message: 30/09/2006, 12h44
  2. Tester si un onglet est ouvert dans un formulaire
    Par dfournier dans le forum Access
    Réponses: 4
    Dernier message: 20/07/2006, 16h13
  3. Script objet avant methode formulaire?
    Par le_gueux dans le forum 4D
    Réponses: 17
    Dernier message: 17/07/2006, 15h46
  4. Réponses: 6
    Dernier message: 04/07/2006, 12h07
  5. Réponses: 7
    Dernier message: 11/02/2006, 15h32

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