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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Par défaut Processus Excel.exe qui reste actif
    Bonjour

    j'ai le même problème que dans cette discussion depuis mon passage en exel 2007 sur tout classeur où j'ajoute simplement un menu personnalisé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        With Application.CommandBars(1)
            Set TransMenu = .Controls.Add(Type:=msoControlPopup)
        End With
     
    TransMenu.Caption = "Automatismes"
    Avez vous résolu ce problème ?

    Cordialement

  2. #2
    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
    Billets dans le blog
    8
    Par défaut heu!...
    bonjour


    le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TransMenu.Caption = "Automatismes"
    dois se trouver dans la boucle with end with et non pas a l'exterieur de la boucle sinon tuest obligé de l'ecrire comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.commanbar(1).TransMenu.Caption = "Automatismes"
    voili voilou

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre averti
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Par défaut
    bonsoir

    sur votre conseil,

    J'ai intégré le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TransMenu.Caption = "Automatismes"
    dans le with

    à noté qu'il fonctionnait sans problème en dehors...

    Toutefois mon problème persiste.

    Le processus EXCEL met 54 secondes à disparaître après la sortie d'EXCEL, avec une utilisation mémoire qui fluctue énormément.

    72 000 Ko classeur ouvert.

    il monte, après fermeture à 104 000 Ko avant de disparaître...

    Si je retire le code de création de menu; ce problème disparaît !
    et ce que depuis le passage de XP-2003 à 2007...

    cordialement

  4. #4
    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
    Billets dans le blog
    8
    Par défaut re
    bonsoir

    ca n'est pas" transmenu" mais ".transmenu"

    au plaisir

    en tout cas avant a l'exterieur il est impossible que ca fonctionnais ou alors il manque une bonne partie du code ou il y avais peut etre des variable globale

    alors la sans le code au complet il sera difficile de t'aider


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    pgz
    pgz est déconnecté
    Expert confirmé 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 : 72
    Localisation : France

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

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

    Je crois que tu te trompes car Transmenu doit être une variable objet.

    Pour siuol, tu libères bien toutes tes variables objets?

    Cdlt,

    PGZ

  6. #6
    Membre averti
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Par défaut
    Le problème n'est pas au niveau du fonctionnement, mais de la libération du processus.

    Je suis donc reparti d'un nouveau classeur vide, XXX.xlsm

    j'y ai mis ce 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Option Explicit
    Dim maBar As CommandBarPopup
     
     
    Private Sub Workbook_Open()
        ajouter_mon_menu
    End Sub
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        supprimer_mon_menu
    End Sub
     
     
    Sub ajouter_mon_menu()
        Set maBar = Application.CommandBars("Worksheet Menu Bar").Controls.Add(msoControlPopup, , , , True)
        maBar.Caption = "Mon Menu"
        With maBar.Controls.Add(msoControlButton)
        .Caption = "Sub 1"
        .OnAction = "M1"
        End With
        With maBar.Controls.Add(msoControlButton)
        .Caption = "Sub 2"
        .OnAction = "M2"
        End With
    End Sub
     
     
    Sub supprimer_mon_menu()
        Application.CommandBars("Worksheet Menu Bar").Controls("Mon Menu").Delete
    End Sub
    tout fonctionne bien mais le processus reste toujours actif un 60taine de secondes... empêchant de ré ouvrir un autre classeur.


    Que doit-je libérer explicitement de plus ?

    à noter que si j'utilise l'option : temporary:=True lors de la création du menu, et que je vide le Workbook_BeforeClose, le problème persiste...

    merci éventuellement de tester ce code...


    cordialement

    Louis

  7. #7
    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
    Billets dans le blog
    8
    Par défaut heu!!..
    bonsoir

    l'ajout et la reinitialisation de la commandbar est instantanée comme ceci:

    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
     
    Sub ajouter_mon_menu()
     'on declare les variables object pour la commandbar
    Dim Cpop1 As CommandBarPopup
    Dim Cbut As CommandBarButton
     
    'on determine le nom de la barre que l'on veux modifier
    Set MaBarre = Application.CommandBars("Worksheet Menu Bar")
     
    'on ajoute le popup
    With MaBarre
    Set Cpop1 = .Controls.Add(msoControlPopup, , , , True)
        Cpop1.Caption = "Mon Menu"
    End With
     
     'ôn ajoute le premier bouton au popup
    Set Cbut = Cpop1.Controls.Add(msoControlButton)
    'donc avec ce premier bouton
    With Cbut
        .Caption = "Sub 1"
        .OnAction = "M1"
        .FaceId = le numero de l'id (l'icone de ton choix tu trouvera ca dans la faq) 
    End With
     
    'ôn ajoute le deuxieme bouton au popup
    Set Cbut = Cpop1.Controls.Add(msoControlButton)
      'donc avec ce deuxieme bouton bouton
    With Cbut
         .Caption = "Sub 2"
        .OnAction = "M2"
    End With
    End Sub
     
     
    Sub supprimer_mon_menu()
    Application.CommandBars("Worksheet Menu Bar").Reset
    End Sub
     
    Sub m1()
    MsgBox "vous avez cliqué sur le premier bouton"
    End Sub
     
    Sub m2()
    MsgBox "vous avez cliqué sur le deuxieme  bouton"
    End Sub
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre averti
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Par défaut
    Bonjour

    Je pensais que vous m'aviez sauvé lorsque j'ai vu votre RESET à la place de mon DELETE sur le CommandBars("Worksheet Menu Bar")...

    mais après des dizaines de tests infructueux, j'ai fini par copier/coller votre code en y ajoutant : dim MaBarre As CommandBar qui semblait manquer.


    Le problème reste entier; tout fonctionne mais le Processus excel reste actif après fermeture ...

    Même si je lance la sub de suppression à la main plutot que dans le BeforeClose

    Même si je supprime le menu à la main...

    AU fait.. comment doit on déclarer l'obljet CommandBars ?
    à quel endroit ?

    J'ai fait plusieurs test en vain.


    Merci pour vos aides

    Louis

  9. #9
    pgz
    pgz est déconnecté
    Expert confirmé 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 : 72
    Localisation : France

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

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

    Citation Envoyé par siuol Voir le message
    merci éventuellement de tester ce code...
    Sur XL 2007, j'ai testé ton code, en ajoutant 2 sub M1 et M2 dans un module standard.
    Tout fonctionne et après fermeture, je n'ai aucun processus Xl en cours d'exécution.

    Apparemment le pb est lié à la configuration de ta machine. A moins qu'il y ait d'autres modules que tu n'as pas donnés.

    Cordialement,

    PGZ

  10. #10
    Membre averti
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Par défaut
    Merci beaucoup pour ce test PGZ

    je vais essayer de le tester autre part car sur plusieurs postes de mon réseau, le comportement est le même

    encore merci

    Louis

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. [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. 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