Enlever EXCEL.exe dans le processus [Résolu]

Signaler
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
-
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
-
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

Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
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
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
Tu dois avoir une méthode close ou un truc du genre pour ton objet xl
Messages postés
201
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
10 mai 2016

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
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
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).
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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" />(
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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" />(
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
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
Messages postés
201
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
10 mai 2016

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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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" />


(
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
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