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 :

Processus Excel.exe qui reste actif


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Processus Excel.exe qui reste actif
    Bonjour,

    Je me connecte à une base de données HF C/S à partir d'Excel. Je lis simplement le contenu du recordset dont les données proviennent d'une simple requête. Tout fonctionne bien mais quand je quitte Excel, le processus Excel.exe reste actif.
    Beaucoup dise de tuer le processus mais comment tuer le processus Excel quand on est dans Excel...?
    Quelqu'un a-t-il déjà rencontré ce problème?

    Merci d'avance

    Voici ce que je fais :

    Dans déclaration du module1, j’ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Connexion_A As New ADODB.Connection
    Public Recordset_A As New ADODB.Recordset
    Dans Workbook_Open, j’ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Connexion_A.Open "DRIVER={HyperFileSQL};ANA=D:\Mes Projets\Axx\Axx.wdd;Server Name=192.168.0.1;Server Port=4900;Database=Axx;UID=admin;PWDXX="
        Recordset_A.CursorLocation = adUseClient
        Recordset_A.ActiveConnection = Connexion_A
        Recordset_A.Source = "select * from Articles "
        Recordset_A.Open , , adOpenStatic, adLockOptimistic, adCmdText
    Copie du contenu du recordset dans une feuille …
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Recordset_A.Close
        Connexion_A.Close
        Set Recordset_A = Nothing
        Set Connexion_A = Nothing

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut,une méthode brutale qui ferme toutes les sessions ouvertes d'Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option Explicit
     
    Sub Kill()
    Dim RetVal As Long
        '   Parametres Taskkill
        '   http://technet.microsoft.com/en-us/library/bb491009.aspx
        RetVal = Shell("Taskkill /im Excel.exe /f", 0)
    End Sub

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Salut,

    merci de ton aide mais c'est un peu trop radical car mes collègues travaillent beaucoup avec Excel et si ils perdent des informations parce qu'ils n'ont pas enregistrer leurs fichiers, je suis mort

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salut,une méthode brutale qui ferme toutes les sessions ouvertes d'Excel
    Merci kiki29,

    cela fait longtemps que je cherche cette technique en version "courte".

  5. #5
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re,il faut passer sans doute par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Declare Function GetCurrentProcessId Lib "kernel32" () As Long

  6. #6
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Citation Envoyé par Neowile Voir le message
    Tout fonctionne bien mais quand je quitte Excel, le processus Excel.exe reste actif.
    Tu quittes excel comment?

    PGZ

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Simplement par le menu Fichier->Quitter

  8. #8
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re,à tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
     
    Declare Function GetCurrentProcessId Lib "kernel32" () As Long
     
    Sub KillPID()
    Dim RetVal As Long
    Dim iPid As Long
     
        '   Parametres Taskkill
        '   http://technet.microsoft.com/en-us/library/bb491009.aspx
        iPid = GetCurrentProcessId
        RetVal = Shell("Taskkill /pid " & iPid & " /f", 0)
    End Sub
    Pour avoir un message de confirmation pour sauvegarde avant fermeture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub KillPID_Msg()
    Dim RetVal As Long
    Dim iPid As Long
     
        '   Parametres Taskkill
        '   http://technet.microsoft.com/en-us/library/bb491009.aspx
        iPid = GetCurrentProcessId
        RetVal = Shell("Taskkill /pid " & iPid)
     
    End Sub

  9. #9
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Kiki29,

    juste une remarque.

    Peut-être que l'utilisation du nom Kill devrait évitée vu la méthode du même nom.

    -----Edit---
    je vois que tu viens d'y penser. merci.

  10. #10
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Arff,pas fait de [F5], oui effectivement ,on ne sait jamais avec ce genre de voisinage de mots réservés

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    si j'enlève le "/f" de taskkill, le processus ne se ferme pas.

    J'appelle la fonction KillID dans beforeclose. C'est correcte?

  12. #12
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re,voir le lien proposé plus haut

  13. #13
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re,

    Citation Envoyé par Neowile Voir le message
    Simplement par le menu Fichier->Quitter
    Dans ton projet VBA, tu ne crées pas quelque part une application Excel?

    PGZ

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Non j'ai vraiment rien comme code mise à part celui cité ci-dessus...
    Si je n'exécute pas ma macro contenant ADODB, mon fichier Excel se ferme normalement et le processus aussi.
    Le problème vient de ceci pour moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Recordset_A.Close
        Connexion_A.Close
        Set Recordset_A = Nothing
        Set Connexion_A = Nothing

  15. #15
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re,

    Comme tu n'utilises pas de Command, cela me semble une façon très correcte de fermer le jeu d'enregistrements et la connection.

    Perso, j'utilise souvent ADODB et je n'ai jamais vu cela.

    Comme cela, en aveugle, je sèche.

    Saurais-tu faire un classeur simplifié avec le pb?

    PGZ

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Après plusieurs tests, j'en conclus que le problème vient d'une incompatibilité entre la commande OPEN et le driver HyperfileSQL.
    J'ai bon essayé ces 2 simples codes, je le même problème! De plus, le problème survient même quand la connexion échoue!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim cn
     
     Set cn = CreateObject("ADODB.connection")
     cn.Open "FILEDSN=A.dsn"
     
    cn.Close
    Set cn = Nothing
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Connexion_A As New ADODB.Connection
     
    Sub Ouvre_DB_test()
     
    Connexion_A.Open "DRIVER={HyperFileSQL};ANA=D:\Mes Projets\A\A.wdd;Server Name=192.168.0.201;Server Port=4900;Database=A;UID=admin;PWDXX="
     
    Connexion_A.Close
     
    Set Connexion_A = Nothing
     
    MsgBox (Connexion_A.State)
     
    End Sub

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjour
    tu a dis que tes colegues se servait de l'application exel
    donc ca n'est pas peut etre pas toi le probleme

    peut etre que générer un nouvelle application quand tu ouvre ton fichier en la nomant avec un variable et a la fermeture ne s'occuper que de cette occurence

    j'ai lu ca quelque part dans la faq je ne sais plus ou mais ca y est c'est sur

    au plaisir

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Je voulais dire que si d'autres fichiers excel sont ouvert dans la même "session" (PID) d'excel, ils seront fermés d'office par le Taskkill.
    Merci quand même

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Nothing n'a aucun effet
    Je me permet de relancer la discussion car je n'ai toujours pas de solution.

    Je suis certain que la connexion se ferme bien. Par contre, le Nothing n'a aucun effet!
    Avec le test ci-dessous, il ne m'affiche pas le message "ok"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Connexion_A.Close
    Set Connexion_A = Nothing
    If Connexion_A Is Nothing Then
    MsgBox ("ok")
    end if

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Toujours pas trouvé de solution?
    Merci

Discussions similaires

  1. Application Excel - Tuer le processus EXCEL.EXE?
    Par xVINCEx dans le forum VB.NET
    Réponses: 21
    Dernier message: 18/04/2012, 10h43
  2. Processus Excel.exe qui reste actif
    Par siuol dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 18/04/2011, 19h26
  3. Réponses: 4
    Dernier message: 15/04/2011, 19h46
  4. Processus EXCEL;exe actif apres fermeture
    Par jamescook dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/10/2007, 11h49
  5. [Access] Processus cmd.exe qui ne se ferment pas
    Par bitou_77 dans le forum Access
    Réponses: 2
    Dernier message: 30/08/2006, 18h55

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