Limiter une macro à un classeur

V i n c e n t

XLDnaute Nouveau
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:
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


Code:
Private Sub Workbook_Open()
Application.Run "Boutons"
End Sub
 

jp14

XLDnaute Barbatruc
Re : Limiter une macro à un classeur

Bonjour


A la fermeture du classeur
Code:
Sub Workbook_BeforeClose(Cancel As Boolean)
DelBO ' supprimer la barre à outils
' on remet les barres d'outils
DelBO ' pour supprimer le résidu
End Sub

Code:
Sub DelBO()
On Error Resume Next
Application.CommandBars(nom de la barre d'outils).Delete
End Sub

En utilisant une procédure cela permet de supprimer la barre d'outils sans être obligé de fermer.

JP
 

V i n c e n t

XLDnaute Nouveau
Re : Limiter une macro à un classeur

Merci pour ta réponse mais ce n'est pas tout à fait mon problème.

J'ai prévu de quoi supprimer les botons en fermeture du classeur.

Mon souci c'est vraiment que les bontons ne soit disponible que sur le classeur actif.
Mes boutons sont sur la barre outils de Excel et du coup tous les classeurs sont affectés par la macro.

J'ai essayé un truc du style

Activeworbook = Thisworkbook.
Thisworkbook.Application.CommandBars("Worksheet Menu Bar")
ect...

Mais meme résultat.
 

V i n c e n t

XLDnaute Nouveau
Re : Limiter une macro à un classeur

Merci à Pierre Fauconnier du forum developez pour sa réponse.

Il fallait mettre comme ceci :

Code:
Private Sub Workbook_Activate()
    CreerBoutons
End Sub
 
Private Sub Workbook_Deactivate()
    SupprimerBoutons
End Sub

Salutations

Vincent.
 

Discussions similaires

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux