IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Tâches de fond Excel.exe [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Par défaut Tâches de fond Excel.exe
    Bonjour,

    Je me permets de vous déranger concernant une problématique sur la fermeture d'Excel.
    J'essaye de réaliser une application permettant la visualisation de données (via une base PostgreSQL)
    J'ai fait la connexion, affich les différents items dans un datagridview jusque là tout va bien et j'ai créé un bouton pour exporter les données sur Excel.

    L'export se fait bien mais le problème est que l'Excel ne se ferme pas . J'ai essayé pas mal de méthode (close, quit, ..) mais il y a toujours une tâche de fond. J'ai également cherché via la classe Marshal mais la je comprends pas bien l'utilité de cette class.

    J'ai l'impression qu'il doit y avoir un objet_com je ne gères pas pouvez-vous me renseigner s'il vous plait.
    Voilà la déclaration des variables :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
                  App = New xls.Application
                Dim objBook As xls.Workbook
                Dim objBooks As xls.Workbooks
                Dim objSheets As xls.Sheets
                Dim objSheet As xls._Worksheet
                Dim rangea As xls.Range
     
                objBooks = App.Workbooks
                objBook = objBooks.Add
                objSheets = objBook.Worksheets
                objSheet = objSheets(1)
     
    .....
    .....
     
     
     System.Runtime.InteropServices.Marshal.ReleaseComObject(rangea)
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheet)
     
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(objSheets)
                    objBook.Close(False)
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(objBook)
                    objBooks.Close()
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(objBooks)
                    .Quit()
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(App)
     
     
                    GC.Collect()
                    GC.WaitForPendingFinalizers()


    PS : Veuillez être indulgeant avec le code car je me lance en programmation

    Bien à vous

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    La terminaison d'une application XLS peut se faire comme ceci (l'application est XLSAPP et elle travaille avec 2 dossiers) :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     ' ...
            Try                   ' pour sauver le classeur 2  (enlever ce code si un seul classeur)
                XLSAPP.Workbooks(2).Activate()  
                XLSAPP.ActiveWorkbook.Save()   ' enlever cette ligne s'il ne faut pas sauver c e classeur
                XLSAPP.Workbooks.Close()
            Catch
            End Try
            Try                   ' pour sauver le classeur 1
                XLSAPP.Workbooks(1).Activate()
                XLSAPP.ActiveWorkbook.Save()   ' enlever cette ligne s'il ne faut pas sauver c e classeur
                XLSAPP.Workbooks.Close()
            Catch
            End Try
     
            XLSAPP.Quit()      ' quitter l'application
            XLSAPP = Nothing      ' mettre la référence mémoire à la disposition du Garbagecollector 
     
            ' *** Libérer la mémoire des process qui encombrent  *** 
     
            ' ===> Laisser le Garbagecollector faire son boulot
     
            GC.Collect()
            GC.WaitForPendingFinalizers()
     
            ' ===> ou Killer soi-même les process XLS  (perso je préfère, même si cela peut poser problème si d'autres appli. XLS en cours)
            'Dim P As System.Diagnostics.Process  
            'Try
            '    For Each P In System.Diagnostics.Process.GetProcesses
            '        If P.ProcessName.ToUpper Like "*EXCEL*" Then
            '            P.Kill()
            '        End If
            '    Next
            'Catch
            'End Try
     ' ...
    En tout cas, pas besois de marchalls pour ce boutlot.

    J'espère que ceci t'aidera ...

  3. #3
    Membre averti
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Par défaut Tâches de fond Excel.exe
    Bonjour Phil Rob Phil Rob,

    Je te remercie pour cette réponse. Peux-tu me dire s'il est possible de récupérer le dernier PID Excel ouvert pour ne pas kill l'intégralité d'excel.
    Car je vois que l'on peut récupérer l'id.

    Egalement je viens de tester mais le process ne se ferme pas. J'ai vraiment du mal a comprendre celui reste ouvert alors que je vide les objets.

    C'est le Garbagecollector qui permet réalise l'action de fermer le processus ou cette action est effectuée au niveau du app.quit()

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Sub exportexcel(ByVal datagridview1 As DataGridView, ByVal page As String)
     
            App = New xls.Application
     
            With App
     
                Dim objBook As xls.Workbook
                Dim objBooks As xls.Workbooks
                Dim objSheets As xls.Sheets
                Dim objSheet As xls._Worksheet
                Dim rangea As xls.Range
     
                ' Create a new instance of Excel and start a new workbook.
                'App = New xls.Application()
                objBooks = App.Workbooks
                objBook = objBooks.Add
                objSheets = objBook.Worksheets
                objSheet = objSheets(1)
                Try
                    'entête des colonnes
                    For Col_cpt = 0 To datagridview1.ColumnCount - 1
                        .ActiveSheet.cells(1, Col_cpt + 1).value = datagridview1.Columns(Col_cpt).HeaderText
                    Next
                    'permet de générer l'export
                    For Lig_cpt = 0 To datagridview1.Rows.Count - 1
                        For Col_cpt = 0 To datagridview1.ColumnCount - 1
                            If IsNumeric(datagridview1.Item(Col_cpt, Lig_cpt).Value) Then
                                .ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = CDbl(datagridview1.Item(Col_cpt, Lig_cpt).Value)
                            Else
                                .ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = datagridview1.Item(Col_cpt, Lig_cpt).Value
                            End If
                        Next
                    Next
     
                    'permet de faire un trie sur les colonnes
                    If page = "VenteAnnee" Then
                        'rangea = objBook.ActiveSheet.cells("D5").select
                        .ActiveSheet.cells(1, 9).select '--> permet de sélectionner une cellule
                        .ActiveSheet.columns("A:G").select 'permet de selectionner les colonnes
                        objSheet.Range("A1").CurrentRegion.Select() ' selectionne la region active
     
                        'on stock une plage de cellule
                        rangea = objSheet.Range("A:G")
                        'On réalise le sous-total mettre entre accolade la liste de colonne
                        'rangea.Subtotal(1, xls.XlConsolidationFunction.xlSum, TotalList:={5, 6, 7}, True, False, True)
     
                    End If
                    'MessageBox.Show(System.DateTime.Now.ToString())
                    objBook.SaveAs("C:\Users\Downloads\classeur" + System.DateTime.Now.ToString("yyyyMMddHHmmss"))
                    'App.Visible = True
                Catch ex As Exception
                    MessageBox.Show("Error excel" & Chr(10) & Err.Description)
                    objBook.Close()
                    .Quit()
     
                Finally
     
                    objBook.Close()
                    App.Quit()
                    App = Nothing
     
                    GC.Collect()
                    GC.WaitForPendingFinalizers()
     
                End Try
            End With
    end sub
    Je te remercie pour les informations.

    Bien à toi

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour
    Le GC fait le travail si cela n'a pas déjà été fait ... mais on ne sait pas quand il le fera.
    Peut-être que si tu attends 10 minutes tu constateras que ton application est finalement fermée... (je n'y crois pas ).
    Je peux récupérer le PID d'une application lancée avec Process.Start, mais ce n'est pas d'application ici.
    Par ailleurs, le dernier PID n'est pas forcément celui de TON AppXls, un autre XLS a pu être démarré pendant l'exécution du tien.
    Je te propose de mettre en place le Kill de tous les XLS et si cela fonctionne, il sera bien temps de réexaminer ton code en détail.
    Verifie qu'il n'y a pas une question en attente d'une réponse XLS, du genre 《Êtes vous sûr de quitter ?》 ou 《Sauvegarder ... ?》.
    ...

  5. #5
    Membre averti
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Par défaut
    Phil Rob,

    D'accord je pensais que GC.Collect réalisé un forçage sur la mémoire.

    Je viens de faire un test en essayant de saturer la mémoire.
    Je comprends mieux comment fonctionne le GC. J'ai ouvert 15 fichiers et il a effectué un nettoyage au bout d'un moment.
    Question pour les nuls : puisque le rafraichissement de la mémoire n'est pas fait systématiquement via l'appel de GC dans l'application, peut-on estimer que le système gère cette action lui même sans appel du GC (bien sûr on vide chaque objet par un nothing) ? je ne sais pas si je suis très clair .


    Vérifie qu'il n'y a pas une question en attente d'une réponse XLS, du genre 《Êtes vous sûr de quitter ?》 ou 《Sauvegarder ... ?.
    -> Non il n'y a aucun message de l'application xls.

    Le process Kill fonctionne parfaitement en effet.
    Je vais étudier la possibilité de récupérer les id avant le lancement de l'application, et après avoir lancer l'application pour fermer uniquement celui qui vient d'être ouvert.

    Bien à toi

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Très bien ...
    Il faudrait récupérer les Pid XLS juste avant d'activer XLS dans ton appli et juste après... sans doute que tu obtiendras là le PID qui te concerne. Tiens moi au courant, à défaut de faire le test moi même (trop paresseux... ).

  7. #7
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Suite ...

    Paresseux ... oui mais quand même ...

    Voici une solution qui devrait te plaire (3 insertions dans ton code de ce matin) :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    Sub exportexcel(ByVal datagridview1 As DataGridView, ByVal page As String)
     
    ' ******************************
     Dim ProcessXLS As System.Diagnostics.Process
     
    ' ******************************
     
            App = New xls.Application
     
    ' ******************************
            For Each P In System.Diagnostics.Process.GetProcesses
                If P.ProcessName.ToUpper Like "*EXCEL*" Then
                    ProcessXLS = P
                    Exit For
                End If
            Next
     
    ' ******************************
     
            With App
     
                Dim objBook As xls.Workbook
                Dim objBooks As xls.Workbooks
                Dim objSheets As xls.Sheets
                Dim objSheet As xls._Worksheet
                Dim rangea As xls.Range
     
                ' Create a new instance of Excel and start a new workbook.
                'App = New xls.Application()
                objBooks = App.Workbooks
                objBook = objBooks.Add
                objSheets = objBook.Worksheets
                objSheet = objSheets(1)
                Try
                    'entête des colonnes
                    For Col_cpt = 0 To datagridview1.ColumnCount - 1
                        .ActiveSheet.cells(1, Col_cpt + 1).value = datagridview1.Columns(Col_cpt).HeaderText
                    Next
                    'permet de générer l'export
                    For Lig_cpt = 0 To datagridview1.Rows.Count - 1
                        For Col_cpt = 0 To datagridview1.ColumnCount - 1
                            If IsNumeric(datagridview1.Item(Col_cpt, Lig_cpt).Value) Then
                                .ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = CDbl(datagridview1.Item(Col_cpt, Lig_cpt).Value)
                            Else
                                .ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = datagridview1.Item(Col_cpt, Lig_cpt).Value
                            End If
                        Next
                    Next
     
                    'permet de faire un trie sur les colonnes
                    If page = "VenteAnnee" Then
                        'rangea = objBook.ActiveSheet.cells("D5").select
                        .ActiveSheet.cells(1, 9).select '--> permet de sélectionner une cellule
                        .ActiveSheet.columns("A:G").select 'permet de selectionner les colonnes
                        objSheet.Range("A1").CurrentRegion.Select() ' selectionne la region active
     
                        'on stock une plage de cellule
                        rangea = objSheet.Range("A:G")
                        'On réalise le sous-total mettre entre accolade la liste de colonne
                        'rangea.Subtotal(1, xls.XlConsolidationFunction.xlSum, TotalList:={5, 6, 7}, True, False, True)
     
                    End If
                    'MessageBox.Show(System.DateTime.Now.ToString())
                    objBook.SaveAs("C:\Users\Downloads\classeur" + System.DateTime.Now.ToString("yyyyMMddHHmmss"))
                    'App.Visible = True
                Catch ex As Exception
                    MessageBox.Show("Error excel" & Chr(10) & Err.Description)
                    objBook.Close()
                    .Quit()
     
                Finally
     
                    objBook.Close()
                    App.Quit()
                    App = Nothing
     
    ' ******************************
       ProcessXLS.Kill()
     
    ' ******************************
    ' Ces 2 lignes suivantes ne sont plus nécessaires
             '       GC.Collect()                       
             '       GC.WaitForPendingFinalizers()
     
                End Try
            End With
    end sub
    Il semble que System.Diagnostics.Process.GetProcesses restitue les process en commençant par le plus récemment activé. Si c'est bien le cas, le code que je propose donnera toujours le process qui vient juste d'être activé par App = New xls.Application. Si ce n'est pas le cas, il faudra trier les Process pour connaître le plus récent à ce moment.

    ...

  8. #8
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Je n'ai pas répondu à ta question :
    peut-on estimer que le système gère cette action lui même sans appel du GC (bien sûr on vide chaque objet par un nothing) ?
    La réponse est oui, le GC EST l'outil du système qui fait ce travail. Mais le système l'uilise à sa guise "quand il en a le temps". Bien sûr, lorsqu'un programme est fermé il ne faudra pas longtemps pour que le GC libère les ressources occupées par le(s) process de ce programme, mais ce ne sera pas forcément immédiat. L'appel du GC est une opération réalisée dans le but de se signaler au système, pour qu'il fasse le nécessaire.

    Il est particulièrement important d'agir sur ces process lorsqu'on exécute un programme qui n'est jamais arrêté (sur un serveur par exemple, ou simplement parce qu'on n'arrête pas le programme qu'on devrait relancer le lendemain matin ...).

    De plus, GC "contrôle" les tâches dites "managées", c-à-d les tâches des framework du DotNet. Son action sur les tâches des anciennes librairies (p.e. les objets DAO, OLE, les instructions fichiers de VB 5.0, ...) n'est pas garantie.

    Sauf erreur de ma part ...

  9. #9
    Membre averti
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Par défaut Tâches de fond Excel.exe
    Je te remercie pour la réponse sur le GC, cela est beaucoup plus clair dans mon esprit.

    De mon côté, je viens d'essayer de récupérer les process "Excel" pour kill celui que l'on vient d'ouvrir.
    Je pense que sur la boucle on peut faire beaucoup mieux mais j'ai pas encore trouvé la solution.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
        Sub exportexcel(ByVal datagridview1 As DataGridView, ByVal page As String)
            Dim processus() As Process = Process.GetProcessesByName("Excel")
     
            For i = 0 To UBound(processus)
                'MessageBox.Show(processus(i).Id)
            Next
            'MessageBox.Show(processus(Process.GetProcesses.Length))
            'processus = Process.GetProcessesByName("Excel")
     
     
     
     
            App = New xls.Application
     
            With App
     
                Dim objBook As xls.Workbook
                Dim objBooks As xls.Workbooks
                Dim objSheets As xls.Sheets
                Dim objSheet As xls._Worksheet
                Dim rangea As xls.Range
     
                ' Create a new instance of Excel and start a new workbook.
                'App = New xls.Application()
                objBooks = App.Workbooks
                objBook = objBooks.Add
                objSheets = objBook.Worksheets
                objSheet = objSheets(1)
                Try
                    'entête des colonnes
                    For Col_cpt = 0 To datagridview1.ColumnCount - 1
                        .ActiveSheet.cells(1, Col_cpt + 1).value = datagridview1.Columns(Col_cpt).HeaderText
                    Next
                    'permet de générer l'export
                    For Lig_cpt = 0 To datagridview1.Rows.Count - 1
                        For Col_cpt = 0 To datagridview1.ColumnCount - 1
                            If IsNumeric(datagridview1.Item(Col_cpt, Lig_cpt).Value) Then
                                .ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = CDbl(datagridview1.Item(Col_cpt, Lig_cpt).Value)
                            Else
                                .ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = datagridview1.Item(Col_cpt, Lig_cpt).Value
                            End If
                        Next
                    Next
     
                    'permet de faire un trie sur les colonnes
                    If page = "VenteAnnee" Then
                        'rangea = objBook.ActiveSheet.cells("D5").select
                        .ActiveSheet.cells(1, 9).select '--> permet de sélectionner une cellule
                        .ActiveSheet.columns("A:G").select 'permet de selectionner les colonnes
                        objSheet.Range("A1").CurrentRegion.Select() ' selectionne la region active
     
                        'on stock une plage de cellule
                        rangea = objSheet.Range("A:G")
                        'On réalise le sous-total mettre entre accolade la liste de colonne
                        'rangea.Subtotal(1, xls.XlConsolidationFunction.xlSum, TotalList:={5, 6, 7}, True, False, True)
     
                    End If
                    'MessageBox.Show(System.DateTime.Now.ToString())
                    objBook.SaveAs("C:\Users\mmachart\Downloads\classeur" + System.DateTime.Now.ToString("yyyyMMddHHmmss"))
                    'App.Visible = True
                Catch ex As Exception
                    MessageBox.Show("Error excel" & Chr(10) & Err.Description)
                    objBook.Close()
                    .Quit()
     
                Finally
     
                    objBook.Close()
                    App.Quit()
                    App = Nothing
     
                    GC.Collect()
                    GC.WaitForPendingFinalizers()
     
     
                End Try
            End With
     
    'je stocke dans un nouveau tableau les process
            Dim processusdiff() As Process = Process.GetProcessesByName("Excel")
     
    'me permet de vérifier si les process sont bien repris.
            'For ii = 0 To UBound(processusdiff)
                '  MessageBox.Show(processusdiff(ii).Id)
            'Next
     
            For ii = 0 To UBound(processusdiff)
                For iii = 0 To UBound(processus)
                    '  MessageBox.Show(processusdiff(ii).Id & processus(iii).Id)
                    If processusdiff(ii).Id.ToString = processus(iii).Id.ToString Then Exit For
     
                    If processusdiff(ii).Id.ToString <> processus(iii).Id.ToString And iii = UBound(processus).ToString Then
     
                        MessageBox.Show(processusdiff(ii).Id.ToString)
                        processusdiff(ii).Kill()
                    End If
                Next
            Next

  10. #10
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Tu n'as pas vu mon message de 11h50', je t'y proposais une solution par récupération du process xls initié par ton aplli.

    ...

  11. #11
    Membre averti
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2021
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2021
    Messages : 17
    Par défaut Tâches de fond Excel.exe
    Si si j'ai vu ton message mais j'ai essayé de réaliser par moi même dans un 1er temps.
    Je te remercie pour toutes les infos
    .
    Je passe le sujet en résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2016] Excel se lance en tâche de fond..
    Par quaresma dans le forum Excel
    Réponses: 2
    Dernier message: 01/03/2018, 08h44
  2. Application Excel - Tuer le processus EXCEL.EXE?
    Par xVINCEx dans le forum VB.NET
    Réponses: 21
    Dernier message: 18/04/2012, 10h43
  3. [Système] Processus en tâche de fond
    Par yakotey dans le forum Langage
    Réponses: 11
    Dernier message: 09/01/2006, 00h09
  4. executable en "tâche de fond"
    Par jaquet_vincent dans le forum Windows
    Réponses: 5
    Dernier message: 22/10/2004, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo