Fermeture de fenêtre fille MDI

docsteff Messages postés 9 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 14 février 2008 - 6 sept. 2007 à 12:42
docsteff Messages postés 9 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 14 février 2008 - 6 sept. 2007 à 14:48
 Bonjour,

J'aimerais à partir d'une application VB6 fermer une fenêtre fille d'un processus Excel. En effet on peut lancer plusieurs fenêtres filles (WorkBook) dans une application Excel. Je souhaite donc en fermer une en connaissant son titre (sans message de confirmation qui demande si on veut enregistrer les modifications) sans fermer le processus Excel si celui ci contient d'autres fenêtres.

J'arrive à récupérer le handle du processus Excel et celui de toutes ces fenêtres filles (API EnumChildWindows)
J'arrive à envoyer un message pour fermer la fenêtre (Postmessage hdleMdiChild,WM_Close,0,0) mais celui ci demande une confirmation d'enregistrement. J'ai également essayé avec
 - Postmessage hdleMdi,WM_MDIDESTROY,hdleMdiChild,0
 - DestroyWindow hdleMdiChild
 - WMI
 - j'ai essayé un SendKeys pour valider automatiquement la confirmation mais en vain

Mais là je suis à cours d'idée
Merci de votre aide



Stéphane

2 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
6 sept. 2007 à 13:13
Salut,
Comment as tu ouvert ces différentes feuilles depuis VB6?
Si tu as piloter Excel depuis VB6: Chaque Feuille (WorkBook) appartient à la collection WorkBooks de l'objet Excel.Application pour fermer un WorkBook il te suffit de faire .Close de l'objet WorkBook approprié. Pour éviter d'avoir la demande de confiramtion Place la propriété DisplayAlerts de l'objet Excel.Application à False

Voilà j'espère que cela pourra t'aider.

@+: Ju£i?n
Pensez: Réponse acceptée
docsteff Messages postés 9 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 14 février 2008 1
6 sept. 2007 à 14:48
merci de ta réponse

mais malheureusement ce n'est pas si simple car Excel n'est pas lancé depuis mon appli VB6.
je ne maitrise par les processus Excel, ils sont lancés indépendamment de mon application.
c'est la raison pour laquelle j'utilise les api (GetDesktopWindow,GetWindow, EnumChildWindow...) pour trouver ma fenetre fille excel.
Rejoignez-nous