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 :

Limiter une macro à un classeur


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    mars 2009
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 69
    Points : 34
    Points
    34
    Par défaut Limiter une macro à un classeur
    Bonjour à toutes et tous,

    J'ai besoin de votre aide pour une petite astuce concernant une macro.

    J'ai créé 2 nouveaux boutons dans la barre d'outils Excel et j'ai un petit souci concernant l'apparation de ces boutons sur tout les fichiers Excel ouverts.

    De plus, plusieurs fichiers contienent ces boutons et si j'en ouvre plusieurs cela ajoute 2 boutons à chaque ouverture.

    Donc, comment limiter la macro au classeur actif ?
    J'ai essayé plusieurs trucs mais sans succès.

    Merci d'avance pour votre aide.

    Vincent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    Application.Run "Boutons"
    End Sub
    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
    Private Sub Boutons()
     
        Set barremenu = ThisWorkbook.Application.CommandBars("Worksheet Menu Bar")
        Set mesboutons = barremenu.Controls.Add
        With mesboutons
            .Caption = "DEMARRER LE CALCUL"
            .FaceId = 960
            .Style = msoButtonIconAndCaption
            .OnAction = "Calcul"
            .TooltipText = "Démarrage du calcul automatique"
            .BeginGroup = True
        End With
     
        Set mesboutons = barremenu.Controls.Add
        With mesboutons
            .Caption = "ARRETER LE CALCUL"
            .FaceId = 283
            .Style = msoButtonIconAndCaption
            .OnAction = "PasCalcul"
            .TooltipText = "Arrêt du calcul automatique"
        End With
     
    End Sub

  2. #2
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : février 2008
    Messages : 2 805
    Points : 6 693
    Points
    6 693
    Par défaut
    Bonjour,

    vois dans les Tutos ce qui concerne les commandbar, sans te limiter à Excel.

    Le principe sera surement de créer une barre avec tes boutons à l'ouverture et de la supprimer à la fermeture de ton classeur, sinon... ellle reste.

    Mieux vaut faire sa barre que de bidouiller celles par défaut sinon..

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2005
    Messages : 12 464
    Points : 15 273
    Points
    15 273
    Par défaut
    Tu as une option qui permet de créer une barre volatile. Je te mets un extrait de l'aide :
    Commandbars.Add(Name, Position, MenuBar, Temporary)
    Temporary Argument de type Variant facultatif. Affectez-lui la valeur True s'il s'agit d'une barre temporaire. Les barres de commandes temporaires sont supprimées lors de la fermeture de l'application. La valeur par défaut est False.
    Si tu veux les détails c'est dans CommandBars -> Add -> Méthode Add telle qu'elle s'applique à l'objet CommandBars.
    Bonnes lectures

  4. #4
    Nouveau membre du Club
    Inscrit en
    mars 2009
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Merci pour vos réponses mais ce n'est pas tout à fait mon problême.

    J'ai prévu de quoi supprimer les boutons à la fermeture du classeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
     
    On Error Resume Next
        Application.CommandBars("Worksheet Menu Bar").Reset
     
    End Sub
    Mon souci reste que les boutons apparaissent dans tout les classeurs ouverts.
    Et si j'ouvre 2 fichiers intégrants les nouveaux boutons, cela les fait apparaitre autant de fois.


    Mon souci viendrait il du fait que j'utilise la barre excel au lieu de ma propre barre ??

    J'ai essayé un truc du style ci-dessous mais sans succès.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Activeworbook = Thisworkbook.
    Thisworkbook.Application.CommandBars("Worksheet Menu Bar")
    etc..

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2005
    Messages : 12 464
    Points : 15 273
    Points
    15 273
    Par défaut
    Mon souci viendrait il du fait que j'utilise la barre excel au lieu de ma propre barre ??
    Oui ! C'est ce que sous-entendait ma réponse
    Passe par une barre perso temporaire et tu n'auras plus ce pb. Rien ne t'empêche de placer ta barre là où tu veux qu'elle soit.
    A+

  6. #6
    Nouveau membre du Club
    Inscrit en
    mars 2009
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Alors après un petit essai, il me semble que le problème reste le même.
    La barre perso se retrouve sur tout les documents excel ouverts.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    Je rejoins ouskel'n'or sur le principe.

    Une façon de faire :
    avec ton classeur ouvert
    -tu créés une barre d'outils perso dans laquelle tu mets tes boutons
    -tu attaches cette barre d'outils à ton claseuur (pas besoin de VBA ici) : ce qui veut dire que dès que le classeur s'ouvre la barre d'outils et créée
    - tumets sur l'événement de fermeture de ton classeut le code qui correspond à la suppression de la barre d'outils ; du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
    On Error Resume Next
    Application.CommandBars("Ma barre perso").Delete
     
    End Sub
    Bon courage
    Frédéric
    Développeur d'Applications Access

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2005
    Messages : 12 464
    Points : 15 273
    Points
    15 273
    Par défaut
    - tumets sur l'événement de fermeture de ton classeut le code qui correspond à la suppression de la barre d'outils ; du style
    Avec une barre "temporaire", cette suppression devient inutile

  9. #9
    Nouveau membre du Club
    Inscrit en
    mars 2009
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    c'est énervant ce truc car je suis sure que c'est une petite astuce de rien du tout pour le faire.
    En tout cas la barre temporaire s'affiche dans tout les classeurs une fois activée.

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2005
    Messages : 12 464
    Points : 15 273
    Points
    15 273
    Par défaut
    Montre ton code sans en changer une virgule

  11. #11
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    novembre 2003
    Messages
    18 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 18 969
    Points : 55 592
    Points
    55 592
    Billets dans le blog
    129
    Par défaut
    Bonjour

    Personnellement, je créerais la barre sur l'événement Activate du classeur et je la supprimerais sur l'événement Deactivate dudit classeur

    Dans le code de Thisworkbook du classeur qui supporte les boutons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Activate()
        CreerBoutons
    End Sub
     
    Private Sub Workbook_Deactivate()
        SupprimerBoutons
    End Sub
    Et dans un module standard du classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub CreerBoutons()
        ' ici le code qui crée les boutons
    End Sub
     
    Sub SupprimerBoutons()
        ' ici le code qui supprime les boutons
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Nouveau membre du Club
    Inscrit en
    mars 2009
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Merci à tous pour vos réponses mais j'ai l'impression que Pierre m'a donné la solution.

    Après un petit essai cela me semble fonctionnel.

    Je vais vérifier dans le détail.

    Merci beaucoup.

    Vincent.

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

Discussions similaires

  1. [E-07] Application d'une macro à plusieurs classeurs
    Par MONINQUE dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/12/2008, 21h08
  2. Creer Une Macro Gros Classeur
    Par Sting dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/07/2007, 20h51
  3. sélection d'un classeur dans une macro
    Par derf3183 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/07/2006, 17h10
  4. [macro EXCEL] accrocher une macro à un classeur
    Par poosh dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/06/2006, 11h36
  5. [VBA] utiliser une macro contenue dans un autre classeur
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 01/02/2006, 18h46

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