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

VBA Access Discussion :

Automation Excel - Processus Xl reste actif


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Automation Excel - Processus Xl reste actif
    Bonjour j'ai suivi les tuto et faq pour exporter une requête acess dans Excel. Jusque là pas de soucis. Le problème est qu'après je souhaite mettre en forme mon fichier Excel.

    La première fois que lance ma macro pas de souci, Access exporte la requête et met en forme le fichier Excel. Mais si je relance ma macro immédiatement, il plante.

    J'ai pu identifié la cause: Exel reste actif à la fin de ma macro dans le gestionnaire des taches. Dès lors ma macro plante lorsque je la relance à l'instruction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With oSht.Range(Cells(1, 1), Cells(nbmission + 1, w)).Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
    End With
    Apparement c'est le fait d'utiliser l'objet Range qui fait planter=>
    Erreur d'écéution 1004 : la méthode 'Cells' de l'objet '_Global' a échoué

    Si je supprime cette instruction , je n'ai pas de problèmes, je peux lancer ma macro autant de fois d'affilée, ca ne plante pas et dans le gestionnaire des taches je constate que Excel a, à la fin de ma macro, disparu.

    C'est un peu embêtant. Pour le moment la seule solution pour contourner ce problème c'est de ne pas utiliser l'objet Range mais ca signifie que je dois mettre en forme mes cellules une par une au moyen deux boucles et cela ralenti considérablement ma macro.


    Je précise que la fin de ma macro se termine bien par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set oSht = Nothing
    oWbk.Save
    oWbk.Close
    Set oWbk = Nothing
    oAppExcel.Quit
    Set oAppExcel = Nothing
    MAis apparement ca ne suffit pas pour fermer de manière stricte Excel.

    Quelqu'un aurait des idées pour m'aider? Une instruction qui force Excel à fermer à la fin de ma macro?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut Sans certitude ...
    Bonsoir,

    Il me semble avoir vu dans un post qu'il fallait éviter d'utiliser With ... End With quand on pilote une application par automation.

    Par ailleurs, il n'y a pas d'objet précédent la propriété Cells.
    Or cette propriété existe pour les objets Application, Worksheet, Range.
    VB a surement une méthode de résolution pour cas, mais ça ne coûte rien d'être explicite.
    Tester :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With oSht.Range(oSht.Cells(1, 1), oSht.Cells(nbmission + 1, w)).Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
    End With
    Eventuellement passer par un objet Excel.Range intermédiare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim rg As Excel.Range
     
    Set rg = oSht.Range(oSht.Cells(1, 1), oSht.Cells(nbmission + 1, w))
    rg.Borders(xlEdgeLeft).LineStyle = xlContinuous
    rg.Borders(xlEdgeLeft).Weight = xlThin
    rg.Borders(xlEdgeLeft).ColorIndex = xlAutomatic
    A+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Grand merci,
    Ce n'est pas le With qui posait problème mais bien l'objet précédent la propriété Cells)

    Ca marche impec maintenant

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

Discussions similaires

  1. [XL-2007] Lors de la fermeture d'Excel le processus reste actif
    Par courriervirtuel dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 30/03/2017, 17h48
  2. [XL-2007] Processus Excel.exe qui reste actif
    Par Neowile dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 16/02/2012, 15h50
  3. Processus Excel.exe qui reste actif
    Par siuol dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 18/04/2011, 19h26
  4. Réponses: 4
    Dernier message: 15/04/2011, 19h46
  5. Automation Excel
    Par cgo dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 19/03/2003, 15h03

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