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

Macros et VBA Excel Discussion :

probleme fermeture application excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 57
    Points : 43
    Points
    43
    Par défaut probleme fermeture application excel
    Bonjour,
    J'ouvre une application Excel avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xlApp=New Excel.Application
    Dans mon gestionnaire des taches windows, j'ai bien le processus EXCEL qui apparait.
    Ensuite, je ferme l'application en faisant :
    Dans mon gestionnaire, le processus EXCEL disparait. Jusque là tout va bien.
    Mais voilà mon problème : après l'ouverture d'excel, j'ouvre un classeur avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xlModele = xlApp.Workbooks.Open(FileName:=Fichier_modele, UpdateLinks:=0)
    Après, je veux fermer l'application de la même façon que précédemment. Mais malgré ça, le processus EXCEL reste actif. Que dois-je faire pour le décharger ?

  2. #2
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 155
    Points : 111
    Points
    111
    Par défaut
    Salut,

    sinon essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    xlapp.activeworkbook.save 'si tu veux sauver le fichier
    xlapp.activeworkbook.close true
    set xlmodele=nothing
    xlapp.quit
    set xlapp=nothing

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    OK, ça marche après l'ouverture du classeur. Mais j'ai encore un problème de fermeture qui persiste. Voici mon code :

    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
    Set xlApp = New Excel.Application
    Set xlModele = xlApp.Workbooks.Open(FileName:=Fichier_modele, UpdateLinks:=0)
    xlModele.Activate
            
    bMemo = xlApp.DisplayAlerts
    xlApp.DisplayAlerts = False
    On Error Resume Next
    For Each MySheet In xlModele.Worksheets
      MySheet.Unprotect ""
    Next
    xlApp.DisplayAlerts = bMemo
    On Error GoTo 0
            
    xlApp.ActiveWorkbook.Close True
    Set xlModele = Nothing
    Set MySheet = Nothing
    xlApp.Quit
    Set xlApp = Nothing
    Si je met ce code en gras avant le "for each", l'application se ferme bien, mais si je le met après comme ici, l'application ne se ferme pas ??

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et si avant tes lignes en gras tu palce :

  5. #5
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 155
    Points : 111
    Points
    111
    Par défaut
    Il ne te manque pas un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set mysheet=xlmodele.worksheets(1)
    ?

    et avant jne sais pas si t'a fais les déclarations suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set xlapp        as excel.application
              set xlmodel     as excel.workbook
              set mysheet    as excel.worksheet
    essaie t'introduire ça dans ton code et test le à nouveau

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    Après plusieurs essais, je me suis rendu compte que c'est le for..each qui à l'origine de mon problème. En effet, avec le code suivant mon application excel est bien désactivée (les déclarations sont OK) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Set xlApp = New Excel.Application
    Set xlModele = xlApp.Workbooks.Open(FileName:=Fichier_modele,   UpdateLinks:=0)
    Set MySheet = xlModele.Worksheets(1)
     
    bMemo = xlApp.DisplayAlerts
    xlApp.DisplayAlerts = False
    MySheet.Unprotect ""
    xlApp.DisplayAlerts = bMemo
     
    xlModele.Close True
    Set MySheet = Nothing
    Set xlModele = Nothing
    xlApp.Quit
    Set xlApp = Nothing
    Mon objectif est de déprotéger toutes les feuilles du classeur, ce que je veux faire avec un for...each. Mais apparemment si j'utilise cette méthode je ne peux plus fermer mon application après. Quelqu'un a une idée ?

  7. #7
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 155
    Points : 111
    Points
    111
    Par défaut erratum
    pour tout à l'heure, à la place des Set, c'est Dim

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim xlapp        as excel.application
    Dim xlmodel as excel.workbook
    Dim mysheet as excel.worksheet
    Désolé pour l'erreur

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    J'ai trouvé une solution pour mon problème avec le for each : je l'ai remplacé par un simple for...next en itérant sur le nombre de worksheets.

    Par contre nouveau problème du même ordre (les déclarations sont OK):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set xlApp = New Excel.Application
    Set xlModele = xlApp.Workbooks.Open(FileName:=Fichier_modele, UpdateLinks:=0)
    Set CellName = xlModele.Names(1)
     
    bMemo = Range(CellName).Worksheet.ProtectContents
     
    xlModele.Close False
    Set MySheet = Nothing
    Set xlModele = Nothing
    xlApp.Quit
    Set xlApp = Nothing
    Ici cest la propriété Range(CellName).Worksheet.ProtectContents qui pose problème mais je ne sais pas pourquoi. Il doit y avoir une sorte de création d'objet temporaire qui fait que la fermeture de l'application est impossible par la suite. Une idée ?

  9. #9
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 155
    Points : 111
    Points
    111
    Par défaut
    Salut,

    je ne comprend pas pourquoi tu ne déclares pas tes objets comme suit:

    Citation Envoyé par romrai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim xlapp        as excel.application
    Dim xlmodel as excel.workbook
    Dim mysheet as excel.worksheet
    parce que ce que t'a fait c les définir (avec le set), mais tu ne les a pas déclaré. jne sais pas si le problème vient de là, mais ce serait bien de le faire tout de même

Discussions similaires

  1. Probleme à fermeture application
    Par timotep dans le forum Windows Forms
    Réponses: 7
    Dernier message: 16/01/2008, 12h30
  2. Réponses: 1
    Dernier message: 26/04/2006, 14h54
  3. [VBA-E]Fermeture Application Excel
    Par malloc_92 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/04/2006, 11h46
  4. [VB6] Probleme fermeture application
    Par h82kev dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/03/2006, 13h18
  5. probleme de fermeture d'excel
    Par passie dans le forum Access
    Réponses: 2
    Dernier message: 08/11/2005, 19h34

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