Enlever EXCEL.exe dans le processus

Résolu
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 8 août 2007 à 16:02
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 12 août 2007 à 09:22
bonjour
dans une form je fait appel à excel dont voila le code
Private Sub excel_Click() 'envoi vers EXCEL


'********Déclaration de l'pplication excel aprés avoir réferencer la dll de excel********
Dim xl As excel.Application
Dim mafeuil As excel.Worksheet
Set xl = CreateObject("excel.application")
'********Ouvrire le classeur excel maintenance **********'
xl.Workbooks.Open App.Path & "\BD\centre.xls"
'********Déclarer vers la feuil sur laquel on va travailler******'
Set mafeuil = xl.Worksheets("fiche")
excel.Enabled = False
envoi des données
xl.Visible = True
Set mafeuil = Nothing
Set xl = Nothing
End Sub
mais quand je ferme cette fenetre j'ai toujours EXCEL.exe dans le processus,donc je ne peut lpus faire appel à mon fichier excel pour envoyer d'autres données.
c'est quand je quitte mon programme que je n'est plus de EXCEL.exe dans le processus
que faut il faire pour enlever EXCEL.exe dans le processus quand je ferme ma fenetre,sans fermer mon prgramme
merci
petchy

11 réponses

cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
12 août 2007 à 09:22
Re
j'ai trouvé,j'ai modifié le code et ça à l'air de fonctionné

Private Sub excelBP_Click() 'envoi vers EXCEL
Set xl = CreateObject("excel.application")
With xl
.Visible = True
.Workbooks.Open App.Path & "\BD\centre.xls" classeur excel
.Range("E3").Value = Label2(2).Caption
End With
Set xl = Nothing
End Sub

merci à tous et bon dimanche
petchy
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
8 août 2007 à 16:33
Tu dois avoir une méthode close ou un truc du genre pour ton objet xl
0
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016
8 août 2007 à 17:03
yep

normal tu crées deux objets excel : dim xl et un autre avec createobject, c'est comme si tu faisais :

sub tacpaf()
Dim xl As New Excel.Application
xl.Visible = True
end sub

Ce qui me crée un nouveau processus excel.exe, celui de tacpaf
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
8 août 2007 à 17:19
c'est pas tout à fait exact etniqs :
l'instruction : Dim xl As New Excel.Application ne créer pas un nouvel objet excel, ca ne fait que déclarer une variable (en l'occurence xl) qui doit être de type Excel.Application, mais ne crée pas l'instance.

Par contre, tu as tout à fait raison pour le As New (qui lui crée une instance dès qu'on utilise la variable), qui est plus prudent que le CreateObject (le createObject ne devrait être utilisé qu'en lateBinding).
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
8 août 2007 à 23:14
Bien vu DKS ^^  CreateObject à proscrire dans cette situation.

La méthode à utiliser pour fermer l'appli, c'est Quit (Close est la méthode pour ne fermer que le classeur) :

xl.Quit

Par contre pour enregistrer les modifications apportées au classeur, il faut d'abord référencer ton classeur et l'enregistrer (xlBook.Save ou xlBook.Close True)

@++

<hr width="100%" size="2" />(
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
9 août 2007 à 05:36
Re
merci pour vos conseils,donc voila se qui me reste
Dim xl As New excel.Application
'********Ouvrire le classeur excel  **********'
xl.Workbooks.Open App.Path & "\BD\centre.xls"

xl.Visible = True
Set xl = Nothing
mais c'est toujours pareil,j'ai encore EXCEL.exe dans le processus .
par contre si je met xl.quit ça me ferme l'application EXCEL,mais se n'est pas se que je veut,car dans le fichier Excel il y à des boutons pour
imprimer,enregistrer et quitter qui servent pour l'utilisateur.
dans le bouton quitter de Excel j'ai mis
Application.DisplayAlerts = False
Application.Quit
mais ça ne change rien
bonne journée
petchy
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 août 2007 à 23:09
t'es marrant, quand même !!
Tu veux garder l'application Excel, mais supprimer le processus.
Impossible.
Soit tu gardes, soit tu fermes Excel

@++

<hr width="100%" size="2" />(
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
10 août 2007 à 05:30
salut Mortalino
se n'est pas se que je voulais dire.
je veux supprimer excel du processus quand l'utilisateur fermeras excel et pour l'instant se n'est pas le cas.
si je met xl.quit dans le code dés que excel s'ouvre il me demande d'enregistrer et il se ferme aprés.
je voudrais qu'il reste ouvert, que l'utilisateur fasse se qu'il doit faire et aprés quand il ferme Excel,que je n'est plus EXCEL.exe dans le processus
merci
@ plus
petchy
0
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016
10 août 2007 à 18:42
ayé, j'ai compris, ....

faut que t'utilises le shell, donc.
quand l'utilisateur veut partir, tu fais un timer de qqs secondes et tu balances la fin du process de excel par une command shell

coïto ergo sum
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
12 août 2007 à 06:28
Salut Petchy !

rassure moi sur un point, t'es bien en VB6 ? (et pas VBA, donc )


Sinon, normalement, en faisant xl As New Excel.Application, dès que tu utilises la variables objet xl pour la 1ere fois, le processus Excel se crée, ensuite, à toi de ne pas utiliser xl.Quit pour laisser l'utilisateur travailler dessus.
Et lui, quand il appuiera sur la croix, Excel va lui proposer d'enregistrer, ensuite, il se ferme et le processus se tue.

@++





<hr width="100%" size="2" />


(
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
12 août 2007 à 07:27
bonjour
je suis bien en VB6,et sur la feuille excel j'ai un bouton Quitter et son code est :
Application.DisplayAlerts = False
Application.Quit
j'ai remarqué  ,si je ne met pas l'intruction pour envoyer vers excel (en vert),ça fonctionne correctement Excel n'est plus dans le processus.
Mais si je met l'instruction,la Excel reste dans le processus ,je ne comprends pas,auriez vous une idée.?

Private Sub excelBP_Click() 'envoi vers EXCEL


'********Déclaration de l'pplication excel aprés avoir réferencer la dll de excel********
Dim xl As New excel.Application


'********Ouvrire le classeur excel  **********'
xl.Workbooks.Open App.Path & "\BD\centre.xls"
'********Déclarer vers la feuil sur laquel on va travailler******'


 
excelBP.Enabled = False
Range("E3").Value = Label2(2).Caption
xl.Visible = True
Set xl = Nothing
End Sub
merci
petchy
0
Rejoignez-nous