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
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Points : 23
    Points
    23
    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
    Points : 12 068
    Points
    12 068
    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

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Points : 23
    Points
    23
    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
    Points : 12 068
    Points
    12 068
    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

  5. #5
    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 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 à l'essai
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Points : 23
    Points
    23
    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
    Points : 12 068
    Points
    12 068
    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

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Points : 23
    Points
    23
    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 é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 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 à l'essai
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Points : 23
    Points
    23
    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

  11. #11
    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
    a bon! je comprend mieux


    si ton fichier est en resaux il est peut etre normal que ca prenne un peu de temps

    sinon

    il a peut etre une solution


    pour cela il faut repondre a plusieurs questions

    a quel moment tu a besoins de cet commandbars supplementaire?


    a quel momment tu n'en a plus besoins ?

    regarde un exemple:

    dans cet exemple le menu supplementaire sera present l'orsque que le sheet(2) est activé

    code du sheet(2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Activate()
    ajouter_mon_menu
    End Sub
     
    Private Sub Worksheet_Deactivate()
    supprimer_mon_menu
    End Sub
    et le code dans un module standard

    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
    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 = 100 '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

    mais a mon avis si vraiment ca persiste soit c'est le probleme d'acces en resaux soit c'est ailleur qu'il faut chercher


    au plaisir

  12. #12
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Bonjour

    après quelques nouvelles investigations,

    sur 4 de mes 20 postes du domaines,

    2 posent problème
    2 ne posent PAS problème !!

    les références VbaObject sont les mêmes sur les 4 postes...

    Il faudrait donc que je compare les Options et options avancées d'Excel sur ces postes...

    à priori il s'agirait du fichier : Excel12.pip

    situé dans : C:\Documents and Settings\moi\Application Data\Microsoft\Office

    non?

    Connaissez vous un moyen de le faire sans ouvrir Excel en local ?

    Merci

    Louis

    Bonsoir,
    n'ayant pas réussi à trouver comment lister les options d'excel,

    je les ai "toutes" comparées à l'eil entre 2 postes

    Je n'est pas trouvé de différence

    pourtant le comportement d'excel est bien différent entre ces 2 postes...

    Je rappelle ici le problème :

    si j'ajoute un menu par macro dans un classeur xslm, quand je quitte Excel, son processus reste actif pendant près d'une minute, empêchant toute réouverture de classeur...

    merci pour vos pistes

    Louis

  13. #13
    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
    bonsoir

    a mon avis il est difficile de comparer vraiment ce fichier sur plusieur becannes

    a moins que ces machines aient le meme materiel instalé et les meme mises a jour et encore


    cela dis je pense pas que ca vienne de ton menu plutot ta librairie(VB) installée sur tes becannes enfin a mon avis

    a tu essayé de réinstaller dans deux becannes la meme version d'office

    en déinstallant office

    il faut netoyer manuellement la base de registre


    a part ca je vois pas



    au plaisir

  14. #14
    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

    il me viens une idée
    peut être pourrais tu sauver ton fichier au format "xls(excell 200 et 2003)compatible avec 2007

    en général j'ai moins de problème en xls

    au plaisir

  15. #15
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Bonsoir et merci de continuer à t' intéresser à mon problème,

    tous mes postes ont la même version d'office.

    j'en suis à 5 postes testés:

    sur 3 pas ce problème sur les 2 qui malheureusement utilisent courrement des classeurs avec menu :problèmes...

    Pour le reste, j'ai déja signalé que ce comportement était propre à EXCEL 2007...
    [xslm] en [.xls] ... pas de soucis

    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