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

VBA Access Discussion :

Attendre la fermeture d'un formulaire pour continuer le code [AC-2007]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Attendre la fermeture d'un formulaire pour continuer le code
    Bonjour à tous,

    Je souhaite interrompre l'exécution du code d'un formulaire A en attendant qu'un autre formulaire B soit fermé, sans ouvrir le second formulaire B comme un dialog (pour des raisons de présentation et d'ergonomie).
    Pourriez-vous m'indiquer la marche à suivre pour arriver à mes fins. J'ai trouvé ce code dans le forum, mais il est question ici d'un Query et non pas d'un formulaire... Et je ne sais pas l'adapter.

    Citation Envoyé par Arkham46 Voir le message
    Bjr,

    Fait sur Access 97 :

    Code à mettre dans un module : 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
     
    Option Compare Database
    Option Explicit
     
    Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
        (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _
        (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
        (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Const GW_CHILD = 5
    Private Const GW_HWNDNEXT = 2
     
    ' Recherche l'identifiant de la query nommée pQueryName
    ' Si la query n'est pas ouverte, la fonction renvoie 0
    Public Function GetQueryWindow(pQueryName As String) As Long
        Dim lHwnd As Long
        Dim lRet As Long
        Dim lClassName As String
        Dim lWindowText As String
        lHwnd = GetWindow(FindWindowEx(Application.hWndAccessApp, 0&, "MdiClient", vbNullString), GW_CHILD)
        Do While lHwnd
            lClassName = Space(255)
            lRet = GetClassName(lHwnd, lClassName, 255)
            lClassName = Left(lClassName, lRet)
            If lClassName = "oQry" Then
                lWindowText = Space(255)
                lRet = GetWindowText(lHwnd, lWindowText, 255)
                lWindowText = Left(lWindowText, lRet)
                If Left(lWindowText, Len(pQueryName)) = pQueryName Then
                    GetQueryWindow = lHwnd
                    Exit Do
                End If
            End If
            lHwnd = GetWindow(lHwnd, GW_HWNDNEXT)
        Loop
    End Function

    Code ouvre une query et attend qu'elle soit refermée : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub MonBouton_Click()
        DoCmd.OpenQuery "MaQuery", acViewDesign, acEdit
        While GetQueryWindow("MaQuery") <> 0
            DoEvents
        Wend
        MsgBox "La query a été fermée"
    End Sub
    Ceci pourrait être la solution si quelqu'un peut l'adapter à un formulaire.
    Par avance merci de vous intéresser à ce petit exercice matinal et bonne journée à tous.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Voici un bout de code tout simple qui fait cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function AttendreForm(prmNomForm As String)
        'Boucle d'attente d'un formulaire ouvert
        'Parfois le mode dialogue ne fonctionne pas et il faut le simuler.
     
        Do While CurrentProject.AllForms(prmNomForm).IsLoaded
            DoEvents
        Loop
    End Function
    À appeler après l'ouverture du form prmNomForm.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Effectivement !
    C'était très simple, ça marche très bien et je n'y avais pas pensé.
    Merci de ton aide.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Mon code est plus simple mais en Access 97, CurrentProject n'existait pas.

    Aucune honte a avoir.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Attendre la fin d'un callback pour continuer
    Par yous18 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 02/12/2013, 15h01
  2. Attendre la fin d'un callback pour continuer
    Par Tgaud dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/02/2013, 14h06
  3. Attendre la fermeture d'une JFrame pour faire reste des instructions
    Par rock in the air dans le forum Agents de placement/Fenêtres
    Réponses: 13
    Dernier message: 16/05/2008, 12h05
  4. Attendre l'execution d'une commande pour continuer
    Par sculpteur dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 27/09/2007, 15h46
  5. Attendre l'appui d'une touche pour continuer le programma
    Par Kcyril dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 05/04/2007, 15h11

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