Rendre invisible une instance d'access

Résolu
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 - 23 mars 2006 à 11:13
cocotille Messages postés 1 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 24 mars 2006 - 24 mars 2006 à 16:50
Bonjour a tous,
Actuellement je crée une instance d'access, pour appeler un mde, comme ceci :
Set Shel = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.GetFile(chemin & "\base.mde")
Shel.Run f1.ShortPath
La base qui est appeler detient une macro autoexec qui fait l'ouverture d'un formulaire en independant et modale.
J'aurai voulu avoir a l'ecran que le formulaire (qui est pas tres grand) en rendant acces invisible.
Je ne suis pas sur qu'en faisant application.visible = false ca marche surtout que je voudrait rendre l'instance invisible a partir du programme appelant.
Je sais pas si j'ai eté clair.

7 réponses

Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
24 mars 2006 à 16:20
Bon on a trouvé une solution qui fait ce qu'on veut aussi bien sur access 2003 que sur son runtime.
cette solution n'est peut etre pas tres propre mais fonctionne. Par contre je n'ai pas essayer ta solution, desolé.
la voici
Dim BD
'déclaration d'API
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
'dans mon code
BD = FindWindow(vbNullString, "Micromatique_majgigax")
Call ShowWindow(BD, 0)
' Micromatique_majgigax correspond au nom de l'application mis dans les options de démarrage.
Voila ca me cache tout sauf mon formulaire.
En tout cas merci grandement de m'avoir repondu.
3
cocotille Messages postés 1 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 24 mars 2006
24 mars 2006 à 16:50
Bonjour à tous
Petite précision sur le code accepté ci-dessus :
Objectif : Prog1 doit lancer Prog2
Dans Prog1 :
Set Shel = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.GetFile(chemin & "\base.mde")
Shel.Run f1.ShortPath
Dans Prog2 :
Dim BD
'déclaration d'API
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
'dans mon code
Function MasquerAcc()
BD = FindWindow(vbNullString, "Micromatique_majgigax")
Call ShowWindow(BD, 0)
End Function
' Micromatique_majgigax correspond au nom de l'application mis dans les options de démarrage.
Création d'une macro Autoexec qui appel la fonction MasquerAcc()
ATTENTION : cela ne fonctionne qu'avec des formulaires Indépendants et Modal (désolé je n'ai pas essayé l'un sans l'autre)
3
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
24 mars 2006 à 09:42
Oui et la méthode que je t'ai donnée devrait fonctionner, il te suffit de de rajouter à ta macro l'execution du code "Hidedb" par exemple et de mettre dans un module une fonction "Hidedb" contenant les paramêtres que tu souhaite
quelque chose du genre:

Function Hidedb()
Dim cmb As CommandBar, mnu As MenuBar
'Masque toutes les barres de commande visible (sauf menubar obligatoire)
For Each cmb In Application.CommandBars
With cmb If .Visible True And Not .Index 4 Then cmb.Visible = False
End With
Next cmb
' Après avoir créé un menu sans rien dedans, tu l'affecte à ton formulaire
Forms![Mon Formulaire].MenuBar = "Nom de mon menu"
' Minimize la fenêtre database.
DoCmd.SelectObject acForm, "Menu Général ", True
DoCmd.Minimize
DoCmd.RunCommand acCmdWindowHide
End Function
1
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
23 mars 2006 à 16:27
Bon apres du multiple recherche, je suis toujours pas avancer. Tout les codes me disent d'utiliser Access.Application, or cet commande n'est pas reconnu par un runtime (et oui mon prog va fonctionner sous un runtime)
J'ai donc changer d'optique et essayer de le faire avec l'api shellexecute comme ceci
ret = ShellExecute(0&, vbNullString, che & "\bdtest.mdb", "", vbNullString, 0)
Mais le dernier paramétre n'a apparement pas d'influence (que je mette 0 ,1 ou 7 il m'ouvre toujours mon formulaires et la base)
Je ne sait plus comment faire.
Merci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
23 mars 2006 à 17:02
Bonjour, je ne suis pas sûr d'avoir compris ta question. Pour ma part à l'ouverture de mes applications Access, j'affiche un formulaire de menu général dans lequel je rajoute une ou deux commande vb pour réduire ou masquer la fenêtre "base de données"

DoCmd.Minimize
DoCmd.RunCommand acCmdWindowHide

Sinon peut tu développer un peu plus, je verrais ce que je peux faire
0
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
23 mars 2006 à 17:16
Le souci c'est que j'ouvre une application a partir d'une autre instance d'access. Ensuite une fois que l'application est lancé, une macro s'execute qui m'ouvre un formulaire et deroule le code qui va avec.
En fait il me faudrait l'equivalent de application.visible=false, ce qui fait que access (menu, fond, barre d'etat,...) n'est pas visible alors que mon prog tourne avec seulement mon formulaire en visible.
J'espere avoir mieux expliqué, sinon dis moi sur quoi ca peche.
0
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
24 mars 2006 à 09:56
Juste une petite modification à apporter sur la fin du code concernant le masquage de la barre de menu. Je l'ai écrit un peu vite sans trop regarder. Après je me suis souvenu avoir déjà fait quelque chose du genre pour une de mes appli.

Function Hidedb()
Dim cmb As CommandBar, oldMnubar, newMnubar
'Masque toutes les barres de commande visible (sauf menubar obligatoire)
For Each cmb In Application.CommandBars
With cmb If .Visible True And Not .Index 4 Then cmb.Visible = False
End With
Next cmb
' Masque la barre de menus active et la remplacer par une barre de menus provisoire ancrée le long du côté droit de la fenêtre de l'application et protégée par l'utilisateur
Set oldMnubar = CommandBars.ActiveMenuBar
Set newMnubar = CommandBars.Add _
(Name:="NewMnu", Position:=msoBarRight, _
MenuBar:=True, temporary:=True)
With newMnubar
.Visible = True
.Protection = msoBarNoMove
End With
' Minimize la fenêtre database.
DoCmd.SelectObject acForm, "Menu Général ", True
DoCmd.Minimize
DoCmd.RunCommand acCmdWindowHide
End Function
End Function
0
Rejoignez-nous