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 :

[ACCESS 2003] Fermer la fenêtre des propriétés par le code


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 37
    Points
    37
    Par défaut [ACCESS 2003] Fermer la fenêtre des propriétés par le code
    Bonjour à tous,

    Est il possible de fermer la fenêtre des propriétés lorsque le formulaire est en mode View?

    Si oui comment faire par le code?
    Merci d'avance pour votre aide

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Ce code permet de fermer/ouvrir (alternativement) la fenêtre des propriétés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand acCmdProperties
    (testé avec Access 2000, mais la compatibilité ascendante est assurée).

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    voici une tentative de code pour le cas où on ne sait pas si la fenêtre propriétés est ouverte ou pas.
    Il cherche la présence d'une fenêtre de classe "OArgDlg" crée par le même PID que celui qui a créé la fenêtre d'Access.
    La sub a utiliser est ClosePropWind
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    Option Compare Database
    Option Explicit
     
    Declare Function EnumWindows Lib "User32.dll" _
            (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
     
    Declare Function GetClassName Lib "User32.dll" Alias "GetClassNameA" _
            (ByVal Hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Integer) As Integer
     
    Declare Function GetWindowThreadProcessId Lib "User32.dll" _
            (ByVal Hwnd As Long, ByRef lpdwProcessId As Long) As Long
     
    Declare Function IsWindowVisible Lib "User32.dll" (ByVal Hwnd As Long) As Boolean
     
    Type strucFindWndByPIDClass
        lngPID As Long
        strClass As String
        lngFoundHWnd As Long
    End Type
     
    Dim paramFindWndByPIDClass As strucFindWndByPIDClass
     
    ' EnumWindowsProc call-back function for FindWindowByPIDandClass
    ' Enumère toutes les fenêtres
    Private Function FindWndByPIDClassEnum(ByVal Hwnd As Long, ByVal lParam As Long) As Long
    Dim strSrchClass As String, lngSrchPID As Long
    Dim lngThread As Long, lngPID As Long
    Dim strBuff As String, strClass As String
    Dim RetVal As Long
     
    ' PID et Classe recherchés
    lngSrchPID = paramFindWndByPIDClass.lngPID
    strSrchClass = paramFindWndByPIDClass.strClass
    ' Par défaut on contunie l'énumération
    FindWndByPIDClassEnum = 1
     
    ' On ne s'interesse qu'aux fenêtres visibles
    If IsWindowVisible(Hwnd) Then
        lngThread = GetWindowThreadProcessId(Hwnd, lngPID)
        strClass = String(256, vbNullChar)
        RetVal = GetClassName(Hwnd, strClass, 255)
        strClass = Left(strClass, RetVal)
     
        ' Si fenêtre est de la classe recherchée
        ' et a été créée par le PID recherché, on la ferme
        If lngPID = lngSrchPID And strClass = strSrchClass Then
           ' on arrête l'énumération
           FindWndByPIDClassEnum = 0
           paramFindWndByPIDClass.lngFoundHWnd = Hwnd
        End If
    End If
    End Function
    '____________________________________________
    Private Sub FindWndByPIDClass(lngCreatorPID As Long, strWndClass As String)
     
    paramFindWndByPIDClass.lngPID = lngCreatorPID
    paramFindWndByPIDClass.strClass = strWndClass
    paramFindWndByPIDClass.lngFoundHWnd = 0
     
    EnumWindows AddressOf FindWndByPIDClassEnum, 0
    End Sub
    '____________________________________________
    Sub ClosePropWind()
    Dim lngAccessPID As Long
    ' Récupère le PID de cette instance d'Access
    GetWindowThreadProcessId Application.hWndAccessApp, lngAccessPID
    ' Cherche fenêtre propriétés
    FindWndByPIDClass lngAccessPID, "OArgDlg"
    ' Ferme la fenêtre
    If paramFindWndByPIDClass.lngFoundHWnd <> 0 Then DoCmd.RunCommand acCmdProperties
    End Sub
    A+

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Evidemment... vu comme ça...
    Citation Envoyé par LedZeppII
    voici une tentative de code pour le cas où on ne sait pas si la fenêtre propriétés est ouverte ou pas.
    Il cherche la présence d'une fenêtre de classe "OArgDlg" crée par le même PID que celui qui a créé la fenêtre d'Access. [...]
    A+
    C'est trop beau ! C'est trop fort ! TRRROOOOOPPPPPPP.....

    Bravo


    P.S. Du coup j'ai noté cette discussion 5 étoiles (je voulais en mettre 10, mais je n'ai pas trouvé... )

  5. #5
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Merci =JBO=

    Un grand chapeau bas à toi aussi pour cette solution que je viens de (re)trouver.
    Il me semblait bien avoir déjà vu quelque chose comme ça, mais impossible de le retrouver.

    Du coup j'ai cherché autre chose, inspiré par tout ce que j'ai déjà pû voir sur ce forum.
    J'ai quand même peiné pour trouver le nom de la classe de la fenêtre.

    A+

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    Wow je me connecte et 3 solutions différentes!
    Merci beaucoup Je pensais que je demandais l'impossible comme c'est souvent le cas

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/01/2012, 16h01
  2. [AC-2007] [VBA] Fermer la fenêtre des propriétés
    Par mcdotta dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/04/2010, 10h57
  3. Fermer la fenêtre des propriétés ?
    Par electrosat03 dans le forum Access
    Réponses: 4
    Dernier message: 01/03/2007, 17h01
  4. Réponses: 9
    Dernier message: 19/11/2005, 01h06
  5. ouverture de la fenêtre des propriétés afffichage
    Par Mercilius dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 26/03/2003, 18h07

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