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 :

Comment supprimer Excel en processus d'arrière plan? [Débutant]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Opérateur en microélectonique
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Opérateur en microélectonique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Comment supprimer Excel en processus d'arrière plan?
    Bonjour,

    J'ai écrit un bout de code me permettant d'envoyer une donnée de mon programme vb.net sur Excel.
    Mais lorsque j'arrête mon programme Excel reste en processus d'arrière plan.
    Je pensais pourtant qu'en mettant : l'application, le workbook et le worksheet à 'nothing' (Voir 'Désallocation mémoire') cela me supprimer Excel de la mémoire. Si quelqu'un peut m'aider.

    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
     
     'Déclaration des variables
            Dim Application_Excel As Excel.Application 'Application Excel
            Dim Classeur_Excel As Excel.Workbook 'Classeur Excel
            Dim Feuille_Excel As Excel.Worksheet 'Feuille Excel
            Dim i As Double = 2  'Variable pour tester si on peut écrire dans la colonne Trajet
     
            'Ouverture de l'application
            Application_Excel = New Excel.Application
            'Ajout d'un classeur car à l'ouverture d'Excel il n'y a aucun classeur d'ouvert
            Classeur_Excel = Application_Excel.Workbooks.Open("C:\Test\test1.xlsx")
            'Récupération de la feuille par défaut
            Feuille_Excel = Classeur_Excel.Worksheets(1)
            While Feuille_Excel.Cells(i, 2).value <> Nothing
                i += 1
            End While
            While Feuille_Excel.Cells(i, 2).value = Nothing
                Feuille_Excel.Cells(i, 2).value = TextBox_trajet_sélectionner.Text
            End While
            Classeur_Excel.Close() 'Fermeture du classeur Excel
            Application_Excel.Quit() 'Fermeture de l'application Excel
     
            'Désallocation mémoire
            Feuille_Excel = Nothing
            Classeur_Excel = Nothing
            Application_Excel = Nothing
    Merci

    Buzz

  2. #2
    Membre confirmé

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Points : 574
    Points
    574
    Par défaut
    Il faut demander explicitement la fermeture de l'application.

    D'une manière générale, mettre des variables à nothing (ou null en C#), cela permet juste de supprimer la référence entre la variable et l'objet. Si celui-ci est toujours utilisé par un processus, il ne sera pas supprimé de la mémoire.

  3. #3
    Candidat au Club
    Homme Profil pro
    Opérateur en microélectonique
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Opérateur en microélectonique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci plume13 pour ta réponse,

    Si je suis le site, en réalité j'avais déjà demander la fermeture de l'application par :
    Classeur_Excel.Close() 'Fermeture du classeur Excel
    Application_Excel.Quit() 'Fermeture de l'application Excel

    qui se trouve juste avant la "désallocation mémoire"

    Cela me ferment toujours pas Excel de mes processus, je reviens à vous savoir si quelqu'un aurait un idée..

    Il y aurait une autre méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim prc As System.Diagnostics.Process() = Process.GetProcesses() 
         ' Obtient tous les processus en cours d'exécution 
     
    For i As Integer = 0 To prc.Length - 1 ' Parcoure tous les processus trouvés 
      If prc(i).ProcessName = "excel.exe" Then ' Vrai si le nom du processus est excel.exe 
        prc(i).Kill() ' Dans ce cas, on tue le processus, donc Excel s'arrête (prévoir d'enregistrer avant) 
      End If 
    Next i
    Mais j'aime pas trop au cas où une autre fenêtre Excel serait ouverte.

    Buzz-fr

  4. #4
    Candidat au Club
    Homme Profil pro
    Opérateur en microélectonique
    Inscrit en
    Décembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Opérateur en microélectonique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    J'ai trouvé pourquoi Excel resté dans les processus...
    Je fermais juste mal mon programme

    Merci quand même et bonne année

  5. #5
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonjour, le problème de ton code est qu'il tuera tous les processus.
    Regarde cette discussion ou le sujet avait été traité de long en large : http://www.developpez.net/forums/d65...sus-excel-exe/

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

Discussions similaires

  1. Comment mettre une grande image en arrière plan sur un site ?
    Par Dsphinx dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 19/07/2009, 12h28
  2. Lancer des processus en arrière plan
    Par momeftah dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 01/05/2007, 18h50
  3. Comment charger un gros script en arrière-plan ?
    Par benj63 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/02/2006, 11h45
  4. Réponses: 1
    Dernier message: 07/02/2006, 00h11
  5. Réponses: 2
    Dernier message: 02/12/2004, 08h33

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