Bonjour,
J'ai une base de données Access en mdb dont j'ai désactivé le bouton shift et la fenêtre de base de données grâce au code suivant que je lance avec une macro Autoexec :
J'ai placé un bouton qui appelle la fonction ShowDbWindow True/False, afin que l'administrateur puisse réaffiché la fenêtre de base de données, ci-après le code :
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 Function DesactiveShift() Dim Dbs As DAO.Database Dim Prp As DAO.Property Set Dbs = CurrentDb() On Error GoTo errProperty Dbs.Properties("AllowByPassKey") = False Dbs.Properties("StartupShowDBWindow") = False okProperty: Set Prp = Nothing Dbs.Close Set Dbs = Nothing Exit Function errProperty: Set Prp = Dbs.CreateProperty("AllowByPassKey", 1, False) Set Prp = Dbs.CreateProperty("StartupShowDBWindow", 1, False) Dbs.Properties.Append Prp Resume okProperty End Function
Mon problème est le suivant, j'arrive effectivement a réaffiché la fenêtre de base de données, mais pas la barre de menu.
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 Option Compare Database Option Explicit Private Declare Function GetClassNameA Lib "user32" (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 ShowWindowAsync Lib "user32" (ByVal hwnd As Long, _ ByVal nCmdShow As Long) As Boolean Private Const GW_HWNDNEXT = 2 Private Const GW_CHILD = 5 Private Const SW_HIDE = 0 Private Const SW_SHOW = 5 Private Function GetClassName(ByVal hwnd As Long) As String Dim lpClassName As String Dim lLen As Long lpClassName = String(255, 32) lLen = GetClassNameA(hwnd, lpClassName, 255) If lLen > 0 Then GetClassName = Left(lpClassName, lLen) End If End Function Public Sub ShowDbWindow(ByVal bCmdShow As Boolean) Dim hWndApp As Long hWndApp = GetWindow(Application.hWndAccessApp, GW_CHILD) Do Until hWndApp = 0 If GetClassName(hWndApp) = "MDIClient" Then Exit Do End If hWndApp = GetWindow(hWndApp, GW_HWNDNEXT) Loop If hWndApp > 0 Then hWndApp = GetWindow(hWndApp, GW_CHILD) Do Until hWndApp = 0 If GetClassName(hWndApp) = "ODb" Then Exit Do End If hWndApp = GetWindow(hWndApp, GW_HWNDNEXT) Loop End If If hWndApp > 0 Then ShowWindowAsync hWndApp, IIf(bCmdShow, SW_SHOW, SW_HIDE) End If End Sub
J'ai déjà essayé :
et :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 For i = 1 To Application.CommandBars.Count DoCmd.ShowToolbar Application.CommandBars.Item(i).Name, acToolbarYes Next
Mais ça ne fonctionne pas quelqu'un peut-il m'aider ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part DoCmd.ShowToolbar "menu bar", acToolbarYes
Merci d'avance.
Partager