OVH Cloud OVH Cloud

Terminer un processus excel

6 réponses
Avatar
Yann
Bonjour,

J'ai un probl=E8me pour terminer un processus excel avec mon=20
application en VB.
J'ouvre un fichier excel pour faire des calculs, mais=20
lorsque je veux fermer la liaison, le processus ne se=20
termine pas toujours (parfois =E7a marche, parfois non) et=20
reste donc dans le gestionnaire des t=E2ches.


J'ouvre notamment avec :

Set appex2 =3D CreateObject("excel.Application")
Set exl2 =3D appex2.Workbooks.Open(nomfich2, 0,=20
True, , , , , , , , False)


En gros je fais pour fermer :=20

Set appex2 =3D GetObject(, "excel.Application")
exl2.Close SaveChanges:=3DFalse
appex2.Quit
Set exl2 =3D Nothing
Set appex2 =3D Nothing

Merci d'avance pour votre aide.
Cordialement.
Yann

6 réponses

Avatar
RAVAILLE James
Bonjour,

Tu as essayé en remplaçant la méthode GetObject par CreateObject ?

A+.
James.
--------------------------

"Yann" a écrit :

Bonjour,

J'ai un problème pour terminer un processus excel avec mon
application en VB.
J'ouvre un fichier excel pour faire des calculs, mais
lorsque je veux fermer la liaison, le processus ne se
termine pas toujours (parfois ça marche, parfois non) et
reste donc dans le gestionnaire des tâches.


J'ouvre notamment avec :

Set appex2 = CreateObject("excel.Application")
Set exl2 = appex2.Workbooks.Open(nomfich2, 0,
True, , , , , , , , False)


En gros je fais pour fermer :

Set appex2 = GetObject(, "excel.Application")
exl2.Close SaveChanges:úlse
appex2.Quit
Set exl2 = Nothing
Set appex2 = Nothing

Merci d'avance pour votre aide.
Cordialement.
Yann



Avatar
papou
Bonjour Yann
Si j'en crois ton message, tu redéfinis la variable (Set appex2 GetObject(, "excel.Application") pour la fermeture du processus ?
Si c'est le case c'est inutile, il te suffit d'utiliser ta première variable
(Set appex2 = CreateObject("excel.Application")) pour fermer Excel :
appex2.Quit

Ou je n'ai pas tout compris ?
Cordialement
Pascal

"Yann" a écrit dans le message de
news:307001c47eae$d88bb3e0$
Bonjour,

J'ai un problème pour terminer un processus excel avec mon
application en VB.
J'ouvre un fichier excel pour faire des calculs, mais
lorsque je veux fermer la liaison, le processus ne se
termine pas toujours (parfois ça marche, parfois non) et
reste donc dans le gestionnaire des tâches.


J'ouvre notamment avec :

Set appex2 = CreateObject("excel.Application")
Set exl2 = appex2.Workbooks.Open(nomfich2, 0,
True, , , , , , , , False)


En gros je fais pour fermer :

Set appex2 = GetObject(, "excel.Application")
exl2.Close SaveChanges:úlse
appex2.Quit
Set exl2 = Nothing
Set appex2 = Nothing

Merci d'avance pour votre aide.
Cordialement.
Yann
Avatar
Laurent Jordi \(www.ezlogic.mc\)
Je vous ai mis une réponse dans l'autre branche de la discussion

LJ


"papou" <cestpasbonprobin@çanonpluscg44_fr> a écrit dans le message de
news:u0$
Bonjour Yann
Si j'en crois ton message, tu redéfinis la variable (Set appex2 > GetObject(, "excel.Application") pour la fermeture du processus ?
Si c'est le case c'est inutile, il te suffit d'utiliser ta première


variable
(Set appex2 = CreateObject("excel.Application")) pour fermer Excel :
appex2.Quit

Ou je n'ai pas tout compris ?
Cordialement
Pascal

"Yann" a écrit dans le message de
news:307001c47eae$d88bb3e0$
Bonjour,

J'ai un problème pour terminer un processus excel avec mon
application en VB.
J'ouvre un fichier excel pour faire des calculs, mais
lorsque je veux fermer la liaison, le processus ne se
termine pas toujours (parfois ça marche, parfois non) et
reste donc dans le gestionnaire des tâches.


J'ouvre notamment avec :

Set appex2 = CreateObject("excel.Application")
Set exl2 = appex2.Workbooks.Open(nomfich2, 0,
True, , , , , , , , False)


En gros je fais pour fermer :

Set appex2 = GetObject(, "excel.Application")
exl2.Close SaveChanges:úlse
appex2.Quit
Set exl2 = Nothing
Set appex2 = Nothing

Merci d'avance pour votre aide.
Cordialement.
Yann




Avatar
Yann
Merci beaucoup mais il y a un problème, il fait une
erreur "procédure sub ou function non définie" sur :
GestError (idem avec GetError, j'ai supposé que c'était
plutôt ça)

Merci d'avance.
Yann



-----Message d'origine-----
Votez pour moa je veux être mvp à la place du mvp...

'********************************************************
Public Sub KillXL()
'********************************************************
On Error GoTo LocalError
Dim PrevInstance As Object
Dim Count As Integer

'**** Si XL est en cours d'utilisation -> Fermeture


d'XL
Do
Set PrevInstance = Nothing
On Error Resume Next
Set PrevInstance = GetObject


(, "Excel.application")
On Error GoTo LocalError
If Not PrevInstance Is Nothing Then
'MsgBox "Fermeture d'Excel"
Call QuitExcel(PrevInstance)
End If
Count = Count + 1
If Count = 5 Then Exit Do
Loop

DoEvents
Exit Sub
'******************************************
LocalError:
'******************************************
If GestError(Err, Me.Name, "KillXL", Params.PathLog)


= ResumeOut Then
Screen.MousePointer = vbNormal: Resume out
Else
End
End If
out:
End Sub
'********************************************************
Public Sub QuitExcel(Instance As Object)
'********************************************************
On Error GoTo LocalError
Dim WB As Workbook
If Not Instance Is Nothing Then
On Error Resume Next
Instance.DisplayAlerts = False
For Each WB In Instance.Workbooks
WB.Close
Next
Instance.Quit
On Error GoTo LocalError
Set WB = Nothing
Set Instance = Nothing
End If
Exit Sub
'******************************************
LocalError:
'******************************************
If GestError(Err, Me.Name, "QuitExcel",


Params.PathLog) = ResumeOut Then
Screen.MousePointer = vbNormal: Resume out
Else
End
End If
out:
End Sub


Avatar
Yann
Merci de votre réponse.
Effectivement vous avez raison, il n'y a pas besoin de de
redéfinir la variable au moment de fermer, cependant le
problème ne vient malheureusement pas de là.


-----Message d'origine-----
Bonjour Yann
Si j'en crois ton message, tu redéfinis la variable (Set


appex2 =
GetObject(, "excel.Application") pour la fermeture du


processus ?
Si c'est le case c'est inutile, il te suffit d'utiliser


ta première variable
(Set appex2 = CreateObject("excel.Application")) pour


fermer Excel :
appex2.Quit

Ou je n'ai pas tout compris ?
Cordialement
Pascal

"Yann" a écrit dans le message


de
news:307001c47eae$d88bb3e0$
Bonjour,

J'ai un problème pour terminer un processus excel avec mon
application en VB.
J'ouvre un fichier excel pour faire des calculs, mais
lorsque je veux fermer la liaison, le processus ne se
termine pas toujours (parfois ça marche, parfois non) et
reste donc dans le gestionnaire des tâches.


J'ouvre notamment avec :

Set appex2 = CreateObject("excel.Application")
Set exl2 = appex2.Workbooks.Open(nomfich2, 0,
True, , , , , , , , False)


En gros je fais pour fermer :

Set appex2 = GetObject(, "excel.Application")
exl2.Close SaveChanges:úlse
appex2.Quit
Set exl2 = Nothing
Set appex2 = Nothing

Merci d'avance pour votre aide.
Cordialement.
Yann


.



Avatar
ng
Salut,

Chez moi cela qui(t parafitement le processus :

Dim oExcel As Object
Set oExcel = CreateObject("Excel.Application")
Call oExcel.Quit
Set oExcel = Nothing

Il suffit de s'assurer qu'aucun document n'est ouvert.


Au pire, on pourait tuer le processus via un TerminateProcess()

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Yann a écrit :

Bonjour,

J'ai un problème pour terminer un processus excel avec mon
application en VB.
J'ouvre un fichier excel pour faire des calculs, mais
lorsque je veux fermer la liaison, le processus ne se
termine pas toujours (parfois ça marche, parfois non) et
reste donc dans le gestionnaire des tâches.


J'ouvre notamment avec :

Set appex2 = CreateObject("excel.Application")
Set exl2 = appex2.Workbooks.Open(nomfich2, 0,
True, , , , , , , , False)


En gros je fais pour fermer :

Set appex2 = GetObject(, "excel.Application")
exl2.Close SaveChanges:úlse
appex2.Quit
Set exl2 = Nothing
Set appex2 = Nothing

Merci d'avance pour votre aide.
Cordialement.
Yann