-----Message d'origine-----
Salut,
Sauf erreur tu dois invoquer le destructeur en faisant un
MyExcelObj = nothing
Je ne suis pas sur que ca marche en dot net demande
vbdotnet
@+
LJ
journaux
http://www.ezlogic.mc
http://info.mmei.fr
http://www.associationjdouce.com
Sites
www.samfet-group.com
www.artappointment.com
www.mmei.fr
www.universamaman.com
www.emma-antonucci.net
www.hellodito.com
www.crazymaster.com
www.hotelsurleweb.com
"Fred Del" a écrit dans le message de
news:274901c47e10$fa359a90$
Bonjour à tous et toutes,
Je développe actuellement un outil, en VB.Net, permettant
de générer des fichiers excel. J'utilise pour cela l'Excel
Application. Je ne peux pas utiliser OWC ou autre
composant du meme genre car ils ne m'offrent pas
suffisament d'option de mise en page.
Mon probleme est de terminer le processus excel.exe. En
effet il reste dans la liste process de la machine alors
que mon appli est terminée et que les objets ont été
détruits.
Si quelqu'un a une solution merci d avance !!!!
Ptit Frédo deviendra grand .... un jour ;-)
.
-----Message d'origine-----
Salut,
Sauf erreur tu dois invoquer le destructeur en faisant un
MyExcelObj = nothing
Je ne suis pas sur que ca marche en dot net demande
vbdotnet
@+
LJ
journaux
http://www.ezlogic.mc
http://info.mmei.fr
http://www.associationjdouce.com
Sites
www.samfet-group.com
www.artappointment.com
www.mmei.fr
www.universamaman.com
www.emma-antonucci.net
www.hellodito.com
www.crazymaster.com
www.hotelsurleweb.com
"Fred Del" <fdeligne@eto.fr> a écrit dans le message de
news:274901c47e10$fa359a90$a301280a@phx.gbl...
Bonjour à tous et toutes,
Je développe actuellement un outil, en VB.Net, permettant
de générer des fichiers excel. J'utilise pour cela l'Excel
Application. Je ne peux pas utiliser OWC ou autre
composant du meme genre car ils ne m'offrent pas
suffisament d'option de mise en page.
Mon probleme est de terminer le processus excel.exe. En
effet il reste dans la liste process de la machine alors
que mon appli est terminée et que les objets ont été
détruits.
Si quelqu'un a une solution merci d avance !!!!
Ptit Frédo deviendra grand .... un jour ;-)
.
-----Message d'origine-----
Salut,
Sauf erreur tu dois invoquer le destructeur en faisant un
MyExcelObj = nothing
Je ne suis pas sur que ca marche en dot net demande
vbdotnet
@+
LJ
journaux
http://www.ezlogic.mc
http://info.mmei.fr
http://www.associationjdouce.com
Sites
www.samfet-group.com
www.artappointment.com
www.mmei.fr
www.universamaman.com
www.emma-antonucci.net
www.hellodito.com
www.crazymaster.com
www.hotelsurleweb.com
"Fred Del" a écrit dans le message de
news:274901c47e10$fa359a90$
Bonjour à tous et toutes,
Je développe actuellement un outil, en VB.Net, permettant
de générer des fichiers excel. J'utilise pour cela l'Excel
Application. Je ne peux pas utiliser OWC ou autre
composant du meme genre car ils ne m'offrent pas
suffisament d'option de mise en page.
Mon probleme est de terminer le processus excel.exe. En
effet il reste dans la liste process de la machine alors
que mon appli est terminée et que les objets ont été
détruits.
Si quelqu'un a une solution merci d avance !!!!
Ptit Frédo deviendra grand .... un jour ;-)
.
Oui oui la commande fonctionne sous VN.Net mais elle est
pas suffisante malheureusement !! et le processus reste
quand meme :( en bref ca tue l objet mais pas le
processus !
Oui oui la commande fonctionne sous VN.Net mais elle est
pas suffisante malheureusement !! et le processus reste
quand meme :( en bref ca tue l objet mais pas le
processus !
Oui oui la commande fonctionne sous VN.Net mais elle est
pas suffisante malheureusement !! et le processus reste
quand meme :( en bref ca tue l objet mais pas le
processus !
Salut Fred,
Tu as écrit :
> Oui oui la commande fonctionne sous VN.Net mais elle est
> pas suffisante malheureusement !! et le processus reste
> quand meme :( en bref ca tue l objet mais pas le
> processus !
En .Net, mettre la référence de ton object "Excel Application" à Nothing
décrémente pas le compteur de références de l'objet COM. Or tant que
n'est pas égal à zéro, l'objet COM ne se détruira pas. (avec COM c'est
qui est responsable de sa durée de vie, il garde donc un compteur de
références interne pour savoir si il y'a encore quelqu'un qui lui accède ;
.Net on a un Garbage Collector chargé de détruire les objets, plus besoin
compteur de références, donc quand tu affectes Nothing à une référence, le
ne décrémente pas le compteur de référence, il s'en réfère plutôt au GC
de reprendre l'objet).
La solution à ce problème est de faire sois-même la décrémentation du
de référence. Cela se fait grâce à la méthode partagée suivante :
Marshal.ReleaseComObject(MyComObj)
où MyComObj est ton objet COM :-)
Bonne journée :-p
--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Salut Fred,
Tu as écrit :
> Oui oui la commande fonctionne sous VN.Net mais elle est
> pas suffisante malheureusement !! et le processus reste
> quand meme :( en bref ca tue l objet mais pas le
> processus !
En .Net, mettre la référence de ton object "Excel Application" à Nothing
décrémente pas le compteur de références de l'objet COM. Or tant que
n'est pas égal à zéro, l'objet COM ne se détruira pas. (avec COM c'est
qui est responsable de sa durée de vie, il garde donc un compteur de
références interne pour savoir si il y'a encore quelqu'un qui lui accède ;
.Net on a un Garbage Collector chargé de détruire les objets, plus besoin
compteur de références, donc quand tu affectes Nothing à une référence, le
ne décrémente pas le compteur de référence, il s'en réfère plutôt au GC
de reprendre l'objet).
La solution à ce problème est de faire sois-même la décrémentation du
de référence. Cela se fait grâce à la méthode partagée suivante :
Marshal.ReleaseComObject(MyComObj)
où MyComObj est ton objet COM :-)
Bonne journée :-p
--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger : alexispierre@hotmail.com
FAQ Visual Basic : http://faq.vb.free.fr/
Salut Fred,
Tu as écrit :
> Oui oui la commande fonctionne sous VN.Net mais elle est
> pas suffisante malheureusement !! et le processus reste
> quand meme :( en bref ca tue l objet mais pas le
> processus !
En .Net, mettre la référence de ton object "Excel Application" à Nothing
décrémente pas le compteur de références de l'objet COM. Or tant que
n'est pas égal à zéro, l'objet COM ne se détruira pas. (avec COM c'est
qui est responsable de sa durée de vie, il garde donc un compteur de
références interne pour savoir si il y'a encore quelqu'un qui lui accède ;
.Net on a un Garbage Collector chargé de détruire les objets, plus besoin
compteur de références, donc quand tu affectes Nothing à une référence, le
ne décrémente pas le compteur de référence, il s'en réfère plutôt au GC
de reprendre l'objet).
La solution à ce problème est de faire sois-même la décrémentation du
de référence. Cela se fait grâce à la méthode partagée suivante :
Marshal.ReleaseComObject(MyComObj)
où MyComObj est ton objet COM :-)
Bonne journée :-p
--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Comm j'aimerais être intel y gens comme ca...
Comm j'aimerais être intel y gens comme ca...
Comm j'aimerais être intel y gens comme ca...
Salut Laurent,
Tu as écrit :
> Comm j'aimerais être intel y gens comme ca...
Faut pas croire tu sais, je l'ai pas "sucé de mon puce" comme on dit par
(ça veut dire que cette explication ne m'est pas venue comme ça). J'ai
simplement lu ça dans un livre .Net et dans la doc de Microsoft... ;-)
--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Salut Laurent,
Tu as écrit :
> Comm j'aimerais être intel y gens comme ca...
Faut pas croire tu sais, je l'ai pas "sucé de mon puce" comme on dit par
(ça veut dire que cette explication ne m'est pas venue comme ça). J'ai
simplement lu ça dans un livre .Net et dans la doc de Microsoft... ;-)
--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger : alexispierre@hotmail.com
FAQ Visual Basic : http://faq.vb.free.fr/
Salut Laurent,
Tu as écrit :
> Comm j'aimerais être intel y gens comme ca...
Faut pas croire tu sais, je l'ai pas "sucé de mon puce" comme on dit par
(ça veut dire que cette explication ne m'est pas venue comme ça). J'ai
simplement lu ça dans un livre .Net et dans la doc de Microsoft... ;-)
--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
-----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
Do
Set PrevInstance = Nothing
On Error Resume Next
Set PrevInstance = GetObject
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)
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",
Screen.MousePointer = vbNormal: Resume out
Else
End
End If
out:
End Sub
"Yann" a écrit dans le message
news:33b601c47eae$093fc540$
Bonjour,
J'ai un problème similaire 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 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
.
-----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
Do
Set PrevInstance = Nothing
On Error Resume Next
Set PrevInstance = GetObject
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)
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",
Screen.MousePointer = vbNormal: Resume out
Else
End
End If
out:
End Sub
"Yann" <yann.thiebaut@np.ge.cum> a écrit dans le message
news:33b601c47eae$093fc540$a401280a@phx.gbl...
Bonjour,
J'ai un problème similaire 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 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:=False
appex2.Quit
Set exl2 = Nothing
Set appex2 = Nothing
Merci d'avance pour votre aide.
Cordialement.
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
Do
Set PrevInstance = Nothing
On Error Resume Next
Set PrevInstance = GetObject
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)
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",
Screen.MousePointer = vbNormal: Resume out
Else
End
End If
out:
End Sub
"Yann" a écrit dans le message
news:33b601c47eae$093fc540$
Bonjour,
J'ai un problème similaire 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 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
.
-----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
Do
Set PrevInstance = Nothing
On Error Resume Next
Set PrevInstance = GetObject
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)
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",
Screen.MousePointer = vbNormal: Resume out
Else
End
End If
out:
End Sub
"Yann" a écrit dans le message
news:33b601c47eae$093fc540$
Bonjour,
J'ai un problème similaire 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 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
.
-----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
Do
Set PrevInstance = Nothing
On Error Resume Next
Set PrevInstance = GetObject
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)
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",
Screen.MousePointer = vbNormal: Resume out
Else
End
End If
out:
End Sub
"Yann" <yann.thiebaut@np.ge.cum> a écrit dans le message
news:33b601c47eae$093fc540$a401280a@phx.gbl...
Bonjour,
J'ai un problème similaire 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 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
.
-----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
Do
Set PrevInstance = Nothing
On Error Resume Next
Set PrevInstance = GetObject
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)
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",
Screen.MousePointer = vbNormal: Resume out
Else
End
End If
out:
End Sub
"Yann" a écrit dans le message
news:33b601c47eae$093fc540$
Bonjour,
J'ai un problème similaire 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 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
.