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 :

Bloquer le code tant qu'un formulaire est ouvert ?


Sujet :

IHM

  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut Bloquer le code tant qu'un formulaire est ouvert ?
    Bonjour à tous et merci de votre temps et de votre aide.

    J'aimerai que mon code VBA s'arréte tant qu'un formulaire est ouvert. Actuellement je procède avec la boucle suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    do
       doevents
    while currentproject.allforms("NomMonFormulaire").isloaded
    Ça marche mais je trouve pas ça très propre.

    J'ai essayé de jouer avec les propriétés Modale et PopUp du form appelé mais même si j'obtiens bien que le form reste ouvert le code aprés le doCmd.OpenForm s'exécute quand même.

    J'ai aussi essayé avec le mode dialog du doCmd sans plus de résultat.

    Exemple de code que j'aimerai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    docmd.OpenForm "NomDuFormAAttendre",,,,,acDialog
    msgbox "Vous avez fini d'utiliser le formulaire"
    A+

  2. #2
    Membre expérimenté
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Points : 1 598
    Points
    1 598
    Par défaut
    hello marot_r, content de te voir
    c'est bizare, j'ai eut le même problème en sens inverse, mon code ne voulait pas continuer tant aue je n'avais pas fermé le formulaire qui était ouvert en mode dialog, et comme j'avais besoin de faire référence à une zone de texte de ce formulaire, j'ai utilisé une bricole qui peut t'être utile
    j'ai terminé le code de l'objet appelant juste après l'ouverture du formulaire et j'ai transféré le reste de code dans l'objet appelé (sur bouton ou sur sortie) ce qui fait que je n'ai pas de code en suspens pendant que j'utilise le formulaire appelé.

    En espérant aider

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Merci Simplfi, te souviens-tu des paramétrages de ton formulaires qui bloquait ton code ?

    A+

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonsoir,
    Citation Envoyé par marot_r Voir le message
    Exemple de code que j'aimerai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    docmd.OpenForm "NomDuFormAAttendre",,,,,acDialog
    msgbox "Vous avez fini d'utiliser le formulaire"
    En quoi code ne convient pas ???

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Citation Envoyé par nico84 Voir le message
    Bonsoir,

    En quoi code ne convient pas ???
    Le message s'affiche alors que le formulaire en mode dialog est encore ouvert. J'aimerai que ce message ne s'affiche qu'aprés que l'utilisateur ai fermé le formulaire en mode dialog.

    A+

  6. #6
    Membre expérimenté
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Points : 1 598
    Points
    1 598
    Par défaut
    hello
    voilà avec quoi j'ouvre le formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Dupliquer_Click()
        DoCmd.OpenForm "Numéro_moyen", , , , , acDialog, "DupliquerProcess"
    End Sub
    juste pour dire qu'il n'y a rien d'exeptionnel, l'openargs est juste là pour indiquer à ce nouveau formulaire l'origine de son appel et agir en conséquence

    le code que j'avais mis à la suite de l'openform ci-dessus a été déplacé dans le bouton OK
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Form_Load()
    Select Case OpenArgs
        Case "moyens_prod"
            Nouv_N°_moy = DMax("N°moyen_prod", "Moyens_Prod", "N°moyen_prod < 1000") + 1
            DoCmd.MoveSize 8000, 4000
        Case "process"
            Nouv_N°_moy = DMax("N°moyen_prod", "Moyens_Prod") + 1
            DoCmd.MoveSize 8000, 4000
        Case "DupliquerProcess"
            Nouv_N°_moy = DMax("N°moyen_prod", "Moyens_Prod") + 1
            DoCmd.MoveSize 8000, 4000
        Case Else
    End Select
    End Sub
     
    Private Sub OK_Click()
    On Error GoTo Fin
    Select Case OpenArgs
        Case "moyens_prod"
            DoCmd.SetWarnings False
            DoCmd.OpenQuery "Ajoute_moyen"
            DoCmd.SetWarnings True
            Forms!moyens_prod.Filter = "N°moyen_prod = " & Nouv_N°_moy
        Case "process"
            DoCmd.SetWarnings False
            DoCmd.OpenQuery "Ajoute_process"
            DoCmd.SetWarnings True
            Forms!process.Filter = "N°moyen_prod = " & Nouv_N°_moy
        Case "DupliquerProcess"
            DoCmd.SetWarnings False
            DoCmd.OpenQuery "Duplique_process"
            DoCmd.SetWarnings True
            Forms!process.Filter = "N°moyen_prod = " & Nouv_N°_moy
        Case Else
    End Select
    Fin:
    DoCmd.Close
    End Sub
    Avec l'image permettant de voir les paramètres du formulaire ouvert en mode dialog

    Voilà ce que je peux en dire, en espérant aider

  7. #7
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Bonjour,

    Pour executer du code lorsque le formulaire se ferme, il faut le placer sur l'évènement Close du formulaire en question. Ce code s'executera à la fermeture du formulaire.

  8. #8
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Le message s'affiche alors que le formulaire en mode dialog est encore ouvert. J'aimerai que ce message ne s'affiche qu'aprés que l'utilisateur ai fermé le formulaire en mode dialog.
    Chez moi c'est ce que fait AcDialog
    Je suis en version 2000 et la fenêtre appelée est modale=oui, indépendante=oui

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Merci, à vous, je vais faire des tests plus poussés ce week-end. Je vous reviens là dessus.

  10. #10
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Citation Envoyé par Tonioyo Voir le message
    Bonjour,

    Pour executer du code lorsque le formulaire se ferme, il faut le placer sur l'évènement Close du formulaire en question. Ce code s'executera à la fermeture du formulaire.
    Merci de l'idée mais cela ne convient pas à mon traitement réel.

    Dans mon application mon formulaire appelé n'a aucune idée de ce qui se passe quand on le ferme et c'est comme cela que je le souhaite car ce formulaire peut-être appelé de diverses manières.

    A+

  11. #11
    Membre expérimenté
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Points : 1 598
    Points
    1 598
    Par défaut
    Hello
    Citation Envoyé par marot_r Voir le message
    Dans mon application mon formulaire appelé n'a aucune idée de ce qui se passe quand on le ferme et c'est comme cela que je le souhaite car ce formulaire peut-être appelé de diverses manières.
    c'est pour ça que dans le code que j'ai passé au dessus, j'utilise un openargs pour l'appel du formulaire et que je m'en sert à l'ouverture du formulaire et pour le bouton OK qui sert de fermeture

    Bon, peut être que dans ton cas, si les appels sont trop variés, ça peut devenir fastidieux

  12. #12
    Membre confirmé Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Points : 518
    Points
    518
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Merci de l'idée mais cela ne convient pas à mon traitement réel.

    Dans mon application mon formulaire appelé n'a aucune idée de ce qui se passe quand on le ferme et c'est comme cela que je le souhaite car ce formulaire peut-être appelé de diverses manières.

    A+
    Bah moi je voyait la chose suivante: sur la fermeture du formulaire lever un évènement (par exemple Err.raise) qui serra ensuite "capté", non ?

  13. #13
    ARO
    ARO est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 74
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Si j'ai bien compris ton problème.

    Il faut bien appeler le formulaire avec l'option AcDialog se qui va arrêter le déroulement du code.

    Sur le formulaire appelé, sur le bouton de sortie tu fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.Visible = false
    Le code va reprendre mais tu va pouvoir récupérer des informations de ton formulaire appélé puisqu'il est toujours chargé.

    Il ne reste plus qu'a fermer le formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.Close acForm, "MonFormulaireAppelé"
    Alain

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 047
    Points : 1 042
    Points
    1 042
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Citation:
    Envoyé par marot_r  
    Le message s'affiche alors que le formulaire en mode dialog est encore ouvert. J'aimerai que ce message ne s'affiche qu'aprés que l'utilisateur ai fermé le formulaire en mode dialog.
    Chez moi c'est ce que fait AcDialog 
    Je suis en version 2000 et la fenêtre appelée est modale=oui, indépendante=ou
    Il semble y avoir un problème ailleurs car cela fait normalement ce que tu veux avec le acdialog

    Bonne journée

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/07/2010, 14h40
  2. Réponses: 3
    Dernier message: 30/08/2007, 12h58
  3. Vérifier si un formulaire est ouvert
    Par codial dans le forum Delphi
    Réponses: 2
    Dernier message: 02/03/2007, 15h52
  4. [Formulaires] Tester si un formulaire est ouvert
    Par Ithilien dans le forum IHM
    Réponses: 2
    Dernier message: 10/01/2007, 16h28
  5. Vérifier qu'un formulaire est ouvert
    Par com800 dans le forum WinDev
    Réponses: 2
    Dernier message: 07/04/2005, 20h27

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