Y'a quelqu'un pour m'aider ???????

ftmike Messages postés 6 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 20 septembre 2005 - 20 sept. 2005 à 14:17
ftmike Messages postés 6 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 20 septembre 2005 - 20 sept. 2005 à 15:20
Bonjour, je suis dans une impasse totale, je ne comprends plus. Aidez-moi s'il vous plait !!!

Voilà, j'ai réaliser une base access et je l'ouvre par le biais d'un formulaire qui lors de son chargement masque la fenêtre principale du logiciel Access pour ne rendre visible que le formaulaire, en VB, cela donne cela :

Private Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

Private Sub Form_Load()
Dim nCmdShow As Long
Dim loX As Long
Dim loForm As Form
bWindowHidden = False
nCmdShow = SW_HIDE
loX = apiShowWindow(hWndAccessApp, nCmdShow)
bWindowHidden = True
End Sub

Jusqu'ici tout va bien ... mais bien entendu il me faut gérer le retour à la normale c'est à dire ré-afficher la fenêtre principale d'access avec l'affichage de la fenêtre de base de donnée + les barres d'outils intégrées ainsi que la barre de menu. Et c'est là que le bas blesse !!!

En fait, j'ai créé un formulaire administrateur au sein duquel un bouton doit me permettre de basculer sur l'affichage classique (base de donnée + barres d'outils + barre de menu) seulement je parviens uniquement à ré-afficher la fenêtre principale du logiciel access ainsi que la fenêtre de base de donnée. Afin d'effectuer la maintenance de ma base, il est vraiment indispensable que je ré-affiche également les barres d'outils et la barre de menu.

Pour l'instant, j'ai créé un module qui doit me gérer le retour à un affichage classique :

Option Compare Database
Option Explicit


Global Const SW_HIDE = 0
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWMAXIMIZED = 3


Public bWindowHidden As Boolean


Private Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long


Function fSetAccessWindow(nCmdShow As Long)
Dim loX As Long
Dim loForm As Form


On Error Resume Next
Set loForm = Screen.ActiveForm
If Err <> 0 Then 'no Activeform
Error (Error$)
If nCmdShow = SW_HIDE Then
MsgBox "Cannot hide Access unless " _
& "a form is on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)
Err.Clear

End If
Else If nCmdShow SW_SHOWMINIMIZED And loForm.Modal True Then
MsgBox "Cannot minimize Access with " _
& (loForm.Caption + " ") _
& "form on screen"

ElseIf nCmdShow = SW_HIDE And loForm.PopUp <> True Then
MsgBox "Cannot hide Access with " _
& (loForm.Caption + " ") _
& "form on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)

End If
End If
fSetAccessWindow = (loX <> 0)

End Function

Et j'utilise ce module par le biais d'une commande sur click intégrée dans mon formulaire d'administration :

Private Sub CacheAccessWindow_Click()
On Error GoTo Err_CacheAccessWindow_Click

bWindowHidden = True
fSetAccessWindow (SW_SHOWMAXIMIZED)
bWindowHidden = False


DoCmd.SelectObject acTable, , True

Exit_CacheAccessWindow_Click:
Exit Sub


Err_CacheAccessWindow_Click:
MsgBox Err.Description
Resume Exit_CacheAccessWindow_Click

End Sub

Résultat, au final, tout marche à l'exception de l'affichage de la barre de menu et des barres d'outils d'origine !!!

Ah ! Ah ! Ah ! Ah ! Ah ! Ah ! Ah ! Ah !, Ca m'énerve, ça fait des plombes que je cherche et je crois avoir atteint la limite de mes compétences ... Aidez-moi s'il vous plait.

D'avance merci.

3 réponses

Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
20 sept. 2005 à 15:00
Je ne suis pas sûr d'avoir bien compris ton problème, mais sinon volà pour l'affichage des barres d'outils:

DoCmd.ShowToolbar "Nom_de_la_Barre", acToolbarYes

pour l'affichage des menus :

Set MenuBar = CommandBars.Add(Name:="Nom_de_la_Barre_de_menu", Position:=msoBarRight, MenuBar:=True)
With MenuBar
.Protection = msoBarNoMove
.Visible = True
End With
0
ftmike Messages postés 6 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 20 septembre 2005
20 sept. 2005 à 15:15
En fait, il doit y avoir un bin's dans ma programmation car lorsque j'essaie de ré-afficher la barre d'outils avec une commande du type :

DoCmd.ShowToolbar "Nom_de_la_Barre", acToolbarYes


Cela ne fonctionne pas et rien ne s'affiche, donc je pense que mon problème vient de la manière dont je masque la fenêtre principale d'access qui doit empêcher le ré-affichage des barres à postériori ...

J'espère avoir préciser mon souci et je te remercie de tenter de m'aider à le résoudre.
0
ftmike Messages postés 6 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 20 septembre 2005
20 sept. 2005 à 15:20
De plus lorsque j'essaie d'insérer :

Set MenuBar = CommandBars.Add(Name:="Nom_de_la_Barre_de_menu", Position:=msoBarRight, MenuBar:=True)
With MenuBar
.Protection = msoBarNoMove
.Visible = True
End With

dans ma commande de ré-affichage d'access qui donne alors :

Private Sub CacheAccessWindow_Click()
On Error GoTo Err_CacheAccessWindow_Click

bWindowHidden = True
fSetAccessWindow (SW_SHOWMAXIMIZED)
bWindowHidden = False


DoCmd.SelectObject acTable, , True

Set MenuBar = CommandBars.Add(Name:="Nom_de_la_Barre_de_menu", Position:=msoBarRight, MenuBar:=True)
With MenuBar
.Protection = msoBarNoMove
.Visible = True
End With

Exit_CacheAccessWindow_Click:
Exit Sub


Err_CacheAccessWindow_Click:
MsgBox Err.Description
Resume Exit_CacheAccessWindow_Click

End Sub


Alors le déboggeur m'indique : "Utilisation incorrecte de la propriété", je ne sais plus quoi faire ........
0
Rejoignez-nous