Bonjour à tous,

J'utilise la sympathique fonction suivante (trouvée ici même sur le site) qui permet de trouver et de fermer un programme existant depuis une macro excel :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Function EnumCallback(ByVal app_hWnd As Long, ByVal param As Long) As Long
   Dim buf As String * 256
   Dim Titre As String
   Dim Longueur As Long
   'Récupère le titre de la fenêtre
   Longueur = GetWindowText(app_hWnd, buf, Len(buf))
   Titre = Left$(buf, Longueur)
   'Vérifie si le titre de la fenêtre correspond au nom recherché
   If InStr(Titre, AppCible) <> 0 Then
       'Ferme la fenêtre
      SendMessage app_hWnd, WM_CLOSE, 0, 0
   End If
   'Poursuit l'énumération
   EnumCallback = 1
End Function
Cela marche lorsque je fais fermer une fenêtre comme un document pdf dont je connais le titre.

Mais cela ne marche plus lorsque la fenêtre que je veux faire fermer demande une confirmation de sauvegarde, cela reste en attente sur la boîte de dialogue de confirmation.

Exemple : Je veux faire fermer une fenêtre de messagerie Outlook que je ne doit pas envoyer ; j'appelle donc la fonction avec le titre de la fenêtre de la messagerie (ex: Message pour Mr...) et cela m'affiche une boite de dialogue Outlook qui me demande : voulez vous enregistrer les modifications ? et je dois répondre à la main par oui ou par non.

J'ai essayé avec SendMessage app_hWnd, WM_DESTROY, 0, 0 mais c'est pire car tout se fige.

Existe-il un SendMessage quelquechose, qui ferme sans confirmation ?

Merci beaucoup de votre aide...

J'aime beaucoup ce forum mais c'est la première fois que je pose une question car je croyais être plus débrouillard que cela... comme quoi.