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 :

Processus ne se fermant pas !


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur en Automatisme
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur en Automatisme
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Par défaut Processus ne se fermant pas !
    Bonjour, je reviens vers vous car j'ai le problème suivant avec mon code :

    Le processus EXCEL.EXE reste ouvert après l’exécution du code, des idées ?

    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
    Imports System.Data.SqlClient
    Imports xls = Microsoft.Office.Interop.Excel
     
    Module Module1
     
        Sub Main()
     
            Dim xlApp As New xls.Application
            Dim xlBook As xls.Workbook
            Dim xlSheet As xls.Worksheet
     
            'Configuration de la connection SQL + Requete   
            Dim Connexion As New SqlConnection("Data Source=localhost;Initial Catalog=bdd_name;User Id=sa;Password=159753;")
            Dim Requete As String = "SELECT * FROM Table_test"
     
            'Configuration du fichier Excel ainsi que de la Worksheet à modifier
            xlBook = xlApp.Workbooks.Open("C:\Users\toto\Desktop\Classeur1.xlsx")
            xlSheet = xlBook.Worksheets("test")
     
            'Connexion à la BDD
            Connexion.Open()
     
            Dim Commande As New SqlCommand(Requete, Connexion)
            Dim Adaptateur As New SqlDataAdapter(Commande)
            Dim MonDataSet As New DataSet
     
            Try
                'Récupération des données dans un DataSet
                Adaptateur.Fill(MonDataSet, "test")
            Catch ex As Exception
                'Fermeture de la connection en cas d'erreur           
                Console.WriteLine(ex.Message)
                Commande.Dispose()
                Connexion.Close()
            End Try
     
            'Fermeture de la connection
            Commande.Dispose()
            Connexion.Close()
     
            'Ajout du dataset dans le fichier Excel
            Dim RowInd As Int16 = 1
            Dim ColInd As Int16 = 1
     
            xlSheet.Range("A1", "Z5000").Value = ""
     
            For ColInd = 0 To 4
                For Each Ligne As DataRow In MonDataSet.Tables("Alarms").Rows()
                    xlSheet.Cells(RowInd, ColInd + 1).Value = Ligne(ColInd).ToString
                    RowInd += 1
                Next
                RowInd = 1
            Next
            'Sauvegarde du fichier Excel et fermeture de la connection
            xlApp.DisplayAlerts = False
            xlSheet.SaveAs("C:\Users\toto\Desktop\Classeur1.xlsx")
            xlBook.Close(False)
            xlApp.Quit()
            xlApp.DisplayAlerts = True
     
            ReleaseObject(xlApp)
            ReleaseObject(xlBook)
            ReleaseObject(xlSheet)
     
            xlApp = Nothing
            xlBook = Nothing
            xlSheet = Nothing
        End Sub
     
     
        Private Sub ReleaseObject(ByVal obj As Object)
            Try
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
                obj = Nothing
            Catch ex As Exception
                obj = Nothing
            Finally
                GC.Collect()
            End Try
        End Sub
    End Module

  2. #2
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Bonjour essaye pour fermer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlApp.ActiveWorkbook.Close()
    ou enlève False dans ta Ligne comme suit


  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur en Automatisme
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur en Automatisme
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Par défaut
    Merci pour ta réponse, mais même résultat dans les deux cas, le processus reste actif.

  4. #4
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Ce que je demande va être bête mais je prefere demander car cela m'est deja arrivé par le passé.
    As tu bien killer tous tes processus avant de refaire un essai. En faisant de multiples essais il arrive d'oublier de les tuer avec CTRL ALT SUPP.
    BOn vous etes pas tous des alcoolos comme moi mais bon sais t on jamais.

    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
     
            xlApp.DisplayAlerts = False
            xlSheet.SaveAs("C:\Users\toto\Desktop\Classeur1.xlsx")
     
            xlApp.DisplayAlerts = True
     
            ReleaseObject(xlApp)
            ReleaseObject(xlBook)
            ReleaseObject(xlSheet)
     
            xlApp = Nothing
            xlBook = Nothing
            xlSheet = Nothing
            xlBook.Close()
            xlApp.Quit()
    Je mets toujours la fermeture à la fin sinon ca sous entends qu'il rouvre une instance d'application. Si tu n'as qu'un Workbook ouvert et que tu as fais un savesAS le fait de fermer le workbook tue egalement l'APPlication en tout cas c'est le cas avec excel 2010.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur en Automatisme
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur en Automatisme
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Par défaut
    Effectivement ça aurait pu mais non, j'ai bien vérifié. J'ai même tenté de voir si sur un autre PC ça faisait pareil, et même résultat.

    J'ai tenté de les mettre à la fin mais en faisant ça, j'ai des erreurs lors de l’exécution si je ne met pas les lignes suivantes en commentaire, et en faisant ça le résultat est toujours le même.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     ReleaseObject(xlApp)
    ReleaseObject(xlBook)
    ReleaseObject(xlSheet)
     
    xlApp = Nothing
    xlBook = Nothing
    xlSheet = Nothing

  6. #6
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Pour ma part pour fermer une appli excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     ' sauvegarde des fichiers sous un autre nom et ferme les instances excel
            RichTextBox1.Text = RichTextBox1.Text & vbCrLf & "Sauvegarde des fichiers"
            APPxls.DisplayAlerts = False
            Appxls2.DisplayAlerts = False
            APPxls.ActiveWorkbook.SaveAs("Zodiacmodifié" & DTE & ".xls", FileFormat:=56)
            Appxls2.ActiveWorkbook.SaveAs("Clippermodifié" & DTE & ".xls", FileFormat:=56)
            RichTextBox1.Text = RichTextBox1.Text & vbCrLf & " Fermeture des fichiers"
            APPxls.ActiveWorkbook.Close()
            Appxls2.ActiveWorkbook.Close()
            RichTextBox1.Text = RichTextBox1.Text & vbCrLf & " Travail terminé"
    Bon je suis peut être et voir certainement un peu bourrin mais ca fonctionne dans ce cas il y avait 2 classeurs et donc 2 apps excel qui tournaient.

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

Discussions similaires

  1. Cerveau : Le nombre de processus paralléles ne dépasserait pas 60
    Par Amine Horseman dans le forum Actualités
    Réponses: 9
    Dernier message: 13/11/2014, 13h51
  2. [PowerShell] stopper un processus qui ne répend pas
    Par cesar333 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 19/09/2011, 20h17
  3. Un processus qui se ferme pas ?
    Par real_achilles dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/11/2009, 14h15
  4. Tuer un processus (Excel pour ne pas le citer)
    Par PsykotropyK dans le forum Access
    Réponses: 11
    Dernier message: 11/10/2006, 10h05

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