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 :

Process Excel qui s'empile


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut Process Excel qui s'empile
    Bonjour,

    Que ce passe t'il?

    Dans mon application je charge trois classeur Excel un après l'autre, le nombre de processus s'empile dans mon gestionnaire de tâche. je croyais que s'était parce que je suis en multithread mais je fait passer le nombre de thread à un et ça s'empile tout de même. puis lorsque j'arrêtre le déboggage les processus s'efface un après l'autre.

    j'ai essayé quelques tentatives mais en vain.

    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
     
    Dim xlApp As New Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    xlWorkBook = xlApp.Workbooks.Open("MaFeuille1.CSV")
                xlWorkSheet = xlWorkBook.Worksheets(1)
                If Not xlWorkSheet.UsedRange.Rows.Count = 0 Then
                    Col = xlWorkSheet.UsedRange.Columns.Count
                    Ligne = xlWorkSheet.UsedRange.Rows.Count
     
    'Code de traitement...
     
    'Fermeture de la feuille1
    xlWorkBook.Close(False)
                xlApp.Quit()
     
    'Ouverture de la feuille2
    xlWorkBook = xlApp.Workbooks.Open("MaFeuille2.CSV")
                xlWorkSheet = xlWorkBook.Worksheets(1)
                If Not xlWorkSheet.UsedRange.Rows.Count = 0 Then
                    Col = xlWorkSheet.UsedRange.Columns.Count
                    Ligne = xlWorkSheet.UsedRange.Rows.Count
     
    'Code de traitement...
     
    'Fermeture de la feuille2
    xlWorkBook.Close(False)
                xlApp.Quit()
    'etc.
    'Fermeture et destruction de l'object com
     
    releaseObject(xlWorkSheet)
    releaseObject(xlWorkBook)
    releaseObject(xlApp)
    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()
                GC.WaitForPendingFinalizers()
            End Try
        End Sub
    Merci de vos suggestions

    Mario

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    Il semble qu'ouvrir un fichier CSV avec "File.ReadAllLines" marche aussi, j'essai dans ce sens la ... à bientôt

  3. #3
    Membre éclairé Avatar de Khalyss
    Homme Profil pro
    Développeur .NET et Web
    Inscrit en
    Septembre 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET et Web
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2010
    Messages : 47
    Par défaut
    Salut. Premièrement je n'arrive pas a comprend comment tu peut ouvrir ton deuxième classeur alors que tu ferme l'application :

    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
     
    Dim xlApp As New Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    ...
    ...
     
    'Fermeture de la feuille1
    xlWorkBook.Close(False)
                xlApp.Quit()
     
    'Ouverture de la feuille2
    xlWorkBook = xlApp.Workbooks.Open("MaFeuille2.CSV")
                xlWorkSheet = xlWorkBook.Worksheets(1)
                If Not xlWorkSheet.UsedRange.Rows.Count = 0 Then
                    Col = xlWorkSheet.UsedRange.Columns.Count
                    Ligne = xlWorkSheet.UsedRange.Rows.Count
    Regarde ce lien, il peut t'être utile sur la libération des ressources d'un automation office : http://dotnet.developpez.com/faq/csh...DotNETOffice11

    C'est en C#mais tu devrais comprendre.

    Cordialement,
    JLN

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    Merci beaucoup pour ta réponse,

    Premièrement je n'arrive pas a comprend comment tu peut ouvrir ton deuxième classeur alors que tu ferme l'application :
    Je sais pas trop, je vais étudier la question.

    Merci aussi pour ton bout de code j'essayerai de le modifier au besoin

    merci encore

  5. #5
    Membre éclairé Avatar de Khalyss
    Homme Profil pro
    Développeur .NET et Web
    Inscrit en
    Septembre 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET et Web
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2010
    Messages : 47
    Par défaut
    Après le comportement d'Excel ne me choque pas, concrètement si tu veux ouvrir deux fichiers, tu ouvre deux instances d'Excel.

    Rien d'illogique dans le comportement, ci ce n'est que le processus devrait se fermer après chaque traitement d'un de tes classeurs.

    Si tu trouve la solution, poste là, ça m'intéresse et ça pourrait en intéresser d'autres. Et n'oublie pas d'utiliser le bouton

    Cordialement.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    Je suis aussi curieux de savoir ce qui ce passe... mais comme j'ai dit plustôt pour l'instant j'utilise "File.ReadAllLines" pour évité d'utiliser excel et je t'avoue que c'est drôlement plus rapide alors je vais poursuivre mon développement dans ce sens la.

    Merci beaucoup de ton aide et désolé de ne pas pousser plus à fond dans la recherche de la solution au niveau des processus d'excel.

    bonne journée

    Mario

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonsoir,

    Citation Envoyé par Khalyss Voir le message
    Si tu trouve la solution, poste là, ça m'intéresse et ça pourrait en intéresser d'autres.
    Le sujet de la fermeture du processus d'Excel est fortement traité sur le forum ainsi que sa lenteur
    Voici une discussion traitant de la fermeture de l'Excel et de sa lenteur, cette discussion a été créée en 2005 et a continué jusqu'en 2012, c'est pour dire

    Et mieux, j'ai trouvé en deuxième résultat une discussion que Mario Rousson avait ouverte sur les problèmes de fermeture de processus d'Excel renvoyant sur le précédent lien, perte de mémoire?

    Pour :
    Citation Envoyé par Khalyss Voir le message
    Et n'oublie pas d'utiliser le bouton
    En allant voir sur le profil de mario-rousson on peut voir qu'il a bien comprit l'utilisation de ce bouton
    Donc pas besoin de lui rappeler

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

Discussions similaires

  1. [VBA-E+SQL] Message d'erreur et excel qui plante
    Par Deejoh dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/02/2006, 16h28
  2. Macro excel qui ferme tous les fichiers .xls
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/01/2006, 20h21
  3. Arreter le process Excel
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 03/10/2005, 11h47
  4. [D7-EXCEL2000] Formule dans cellule Excel qui ne se calcule pas
    Par Albertolino dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 09/09/2003, 14h18

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