salut

voila je fait des manip dans un fichier excel via la macro suivante qui marche tres bien (la manipulation des cellule se fait bien)

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
16
17
18
'ouverture du cahier
        xlApp = New Excel.ApplicationClass
        xlWorkBook = xlApp.Workbooks.Open(fichier)
        xlWorkSheet = xlWorkBook.ActiveSheet
 
 
        For Each cell In xlWorkSheet.Cells.Range("check1").Value
 
            If cell = "" Then
 
                xlWorkBook.Close() 'Fermeture d'Excel
                xlApp.DisplayAlerts = True 'remet l'alerte  oui=True   non=False
                'objExcel.Application.Visible=True 'remet la visibilité
                xlApp.Quit()
 
                xlApp = Nothing
                xlWorkBook = Nothing
                xlWorkSheet = Nothing
La macro marche parfaitement mais le processus EXCEL.EXE reste en mémoire.
alors après pas mal de recherche , j'ai essayé la solution suivante mais rien ne marche le processus reste

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Sub kill_process(ByVal proc)
        Dim p() As Process
        Dim r As Process
        p = Process.GetProcessesByName(proc) 'on fournit le nom du process en parametre
        For Each r In p 'puis on les kill tous
            r.CloseMainWindow()
        Next
    End Sub
j'ai fait aussi d'autre essai avec GC.collect ....

au final je m'apercois que quand je ferme mon form (le formulaire qui declenche ma macro excel) les processus se ferme.
donc ce qoit etre le form qui bloque la fermeture d'excel proprement.

Donc si je ne peux pas fermer excel proprement mon programme ne sert a rien

donc si qqun a une solution ???

Merci d'avance

bonne journée