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 averti
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    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.
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

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

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

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

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

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  3. #3
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    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 123
    Points : 12 172
    Points
    12 172
    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
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    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 ?
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    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
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    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
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

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

    Mets le code que tu as écrit.

    Starec

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    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
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

  9. #9
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Salut,
    as tu déclaré la variable gv_strLastFormName comme publique dans un module ?
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    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
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

  11. #11
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    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 123
    Points : 12 172
    Points
    12 172
    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
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    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,...).
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

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

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

    J'essaie ta solution
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    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
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    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 ?
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    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
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

  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 averti
    Avatar de The_Super_Steph
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    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
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 445
    Points : 359
    Points
    359
    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.
    Blonde, d'origine belge et gauchère... et alors !
    "N'est stupide que la stupidité"

    Quand il n'y a pas de solution, c'est qu'il n'y a pas de problème

    (\ _ /)
    (='.'=)
    Voici Lapinou, le lapin crétin-Rasta. Aidez le à conquérir le monde
    (")-(") en le reproduisant !

  20. #20
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    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
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

+ 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