Rendre invisible une instance d'access [Résolu]

Phalalis 83 Messages postés mardi 7 juin 2005Date d'inscription 19 février 2012 Dernière intervention - 23 mars 2006 à 11:13 - Dernière réponse : cocotille 1 Messages postés mercredi 11 janvier 2006Date d'inscription 24 mars 2006 Dernière intervention
- 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.
Afficher la suite 

7 réponses

Meilleure réponse
Phalalis 83 Messages postés mardi 7 juin 2005Date d'inscription 19 février 2012 Dernière intervention - 24 mars 2006 à 16:20
3
Merci
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.

Merci Phalalis 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Meilleure réponse
cocotille 1 Messages postés mercredi 11 janvier 2006Date d'inscription 24 mars 2006 Dernière intervention - 24 mars 2006 à 16:50
3
Merci
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)

Merci cocotille 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Tuning Max 316 Messages postés mercredi 15 juin 2005Date d'inscription 31 août 2006 Dernière intervention - 24 mars 2006 à 09:42
1
Merci
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
Phalalis 83 Messages postés mardi 7 juin 2005Date d'inscription 19 février 2012 Dernière intervention - 23 mars 2006 à 16:27
0
Merci
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.
Tuning Max 316 Messages postés mercredi 15 juin 2005Date d'inscription 31 août 2006 Dernière intervention - 23 mars 2006 à 17:02
0
Merci
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
Phalalis 83 Messages postés mardi 7 juin 2005Date d'inscription 19 février 2012 Dernière intervention - 23 mars 2006 à 17:16
0
Merci
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.
Tuning Max 316 Messages postés mercredi 15 juin 2005Date d'inscription 31 août 2006 Dernière intervention - 24 mars 2006 à 09:56
0
Merci
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.