Fermer access a partir d'excel

bonjourc Messages postés 47 Date d'inscription mardi 19 mars 2013 Statut Membre Dernière intervention 23 mars 2013 - 16 sept. 2010 à 18:36
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 18 sept. 2010 à 23:00
Bonjour.

J'ouvre Access pour lancer une requete. Le soucis, c'est que apres, Access reste ouvert. Le fichier se ferme, mais il y a encore existe encore en tant que processus (Ctrl+Alt+Suppr). Le probleme se manifeste ^m si je ne lance aucun traitement. Par contre, si j'appuie sur le "mode création", Access se ferme bien.
Voici mon code.


Private Sub dddd()
Dim Db As dataBase
Dim Tb As TableDef
Dim Col As Integer
Dim str_titre As Variant
Dim esp As Workspace
Dim dbData As dataBase, TableData As TableDef, TableCree As TableDef
Dim qRytest As DAO.QueryDef

Set esp = DBEngine.Workspaces(0)
Set dbData = esp.OpenDatabase("D:\Documents\test.mdb")
Set qRytest = dbData.QueryDefs("Regroupement")
'qRytest.Execute
qRytest.Close
Set qRytest = Nothing
dbData.Close
Set dbData = Nothing
esp.Close
Set esp = Nothing

end sub

Et j'ai essayer pas mal de chose. Je mets ma requete, peut etre y a-t-il un autre moyen de l'executer en fermant mieux access.


Le vrai voyage, c'est d'y aller. Une fois arrivé, le voyage est fini. Aujourd'hui les gens commencent par la fin.

8 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
16 sept. 2010 à 22:37
Bonsoir
Où as tu marqué
dim MyAcApp as New Access.Application
MyAcApp.OpenCurrentDatabase "C:\mydatabase.mdb"
0
bonjourc Messages postés 47 Date d'inscription mardi 19 mars 2013 Statut Membre Dernière intervention 23 mars 2013
17 sept. 2010 à 10:11
Nulle part.

Merci beaucoup ;
j'aurais mis bcp de tps à le trouver tout seul.


Le vrai voyage, c'est d'y aller. Une fois arrivé, le voyage est fini. Aujourd'hui les gens commencent par la fin.
0
bonjourc Messages postés 47 Date d'inscription mardi 19 mars 2013 Statut Membre Dernière intervention 23 mars 2013
17 sept. 2010 à 10:23
Private Sub dddd()
Dim dbData As dataBase, TableData As TableDef
Dim dbaccess As New Access.Application

Set dbData = DBEngine.Workspaces(0).OpenDatabase ("D:\Documents\S806349\XL\Automatisation\Fichier_txt\test.mdb")
Set qRytest = dbData.QueryDefs("Regroupement")

dbData.Close
Set dbData = Nothing
dbaccess.Quit
Set dbaccess = Nothing
end sub
Le vrai voyage, c'est d'y aller. Une fois arrivé, le voyage est fini. Aujourd'hui les gens commencent par la fin.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
17 sept. 2010 à 15:39
Salut
As tu compris ce qui c'est passé ?
0

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

Posez votre question
bonjourc Messages postés 47 Date d'inscription mardi 19 mars 2013 Statut Membre Dernière intervention 23 mars 2013
17 sept. 2010 à 16:18
Oui et non.

j'ouvre un database pour pouvoir lancer ma requete, je n'y arrive pas a partir d'un "Access.Application".
Voici le code du module


Option Explicit
Private dbData As dataBase
Private TableData As TableDef
Private qRytest As DAO.QueryDef
Private dbaccess As New Access.Application

Public Sub Open_Base(str_chemin As String)
Set dbData = DBEngine.Workspaces(0).OpenDatabase(str_chemin)
End Sub

Public Sub Lance_Requete(str_Req As String)
Set qRytest = dbData.QueryDefs(str_Req)
qRytest.Execute
End Sub

Private Sub Class_Terminate()
dbData.Close
Set dbData = Nothing
'l'application reste dans le gestionnaire des taches. Nean,moins, on peut recréer un objet de ce type,
'et une fois que le traitement est fini, MsAccess disparait du gestionnaire eds tache. Je ne sais
'pas si c'est un prob de rafraichissement ou quoi, c'est pas tres propre, mais ca ne gene pas.
dbaccess.Quit
Set dbaccess = Nothing
End Sub

Public Function existe_table() As Boolean
'existe_table = True
Dim Bl_trouve As Boolean
Dim Db As dataBase
Dim Tb As TableDef
Dim Col As Integer

Bl_trouve = False
For Each Tb In dbData.TableDefs
If "rr" = Tb.Name Then
Bl_trouve = True
Exit For
End If
Next Tb
existe_table = Bl_trouve
existe_table = True
End Function



Le vrai voyage, c'est d'y aller. Une fois arrivé, le voyage est fini. Aujourd'hui les gens commencent par la fin.
0
bonjourc Messages postés 47 Date d'inscription mardi 19 mars 2013 Statut Membre Dernière intervention 23 mars 2013
17 sept. 2010 à 16:18
Si possible, comment mettre mon code dans une fenetre code (pour que les mots clé soit en couleur, etc...


Le vrai voyage, c'est d'y aller. Une fois arrivé, le voyage est fini. Aujourd'hui les gens commencent par la fin.
0
bonjourc Messages postés 47 Date d'inscription mardi 19 mars 2013 Statut Membre Dernière intervention 23 mars 2013
17 sept. 2010 à 16:32
Option Explicit 
Private dbData As dataBase 
Private TableData As TableDef 
Private qRytest As DAO.QueryDef 
Private dbaccess As New Access.Application 

Public Sub Open_Base(str_chemin As String) 
Set dbData = DBEngine.Workspaces(0).OpenDatabase(str_chemin) 
End Sub 

Public Sub Lance_Requete(str_Req As String) 
Set qRytest = dbData.QueryDefs(str_Req) 
qRytest.Execute 
End Sub 

Private Sub Class_Terminate() 
dbData.Close 
Set dbData = Nothing 
'l'application reste dans le gestionnaire des taches. Nean,moins, on peut recréer un objet de ce type, 
'et une fois que le traitement est fini, MsAccess disparait du gestionnaire eds tache. Je ne sais 
'pas si c'est un prob de rafraichissement ou quoi, c'est pas tres propre, mais ca ne gene pas. 
dbaccess.Quit 
Set dbaccess = Nothing 
End Sub 

Public Function existe_table() As Boolean 
'existe_table = True 
Dim Bl_trouve As Boolean 
Dim Db As dataBase 
Dim Tb As TableDef 
Dim Col As Integer 

Bl_trouve = False 
For Each Tb In dbData.TableDefs 
If "rr" = Tb.Name Then 
Bl_trouve = True 
Exit For 
End If 
Next Tb 
existe_table = Bl_trouve 
End Function 


(trouvé)

Le vrai voyage, c'est d'y aller. Une fois arrivé, le voyage est fini. Aujourd'hui les gens commencent par la fin.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
18 sept. 2010 à 23:00
Salut
selon ton code modifié
Private dbaccess As New Access.Application
ne sert à rien puisque tu ne l'utilises pas
il faudrait peut etre écrire
Set dbData = dbaccess.OpenCurrentDatabase(str_chemin) à la place de
Set dbData = DBEngine.Workspaces(0).OpenDatabase(str_chemin)
tout d'abord il faut cocher dans le tableau des
réferences Microsoft Access xx object library
enfin je ne suis pas sur que ma réponse est la
bonne
verifies si l'application se ferme bien et n'apparait plus dans le task manager
0
Rejoignez-nous