OVH Cloud OVH Cloud

Macro associée à un élément d'une barre d'outil

2 réponses
Avatar
Ghislain Benrais
Salut les champions,
J'ai crée une barre d'outils personnalisée. Bien. J'ai associé des
macros à chaque bouton de cette barre. Très bien. Je renomme le fichier :
les boutons de ma barre ne marchent plus ! Excel les cherche dans un
classeur portant l'ancien nom !
J'ai essayé d'affecter le nom des macros par tous les moyens possible et
rien n'y fait.
Merci de votre aide,
Ghislain

2 réponses

Avatar
ChrisV
Bonjour Ghislain,

Plus sûr de créer la BO à l'ouverture du classeur, puis de la détruire à sa
fermeture...
exemple:

dans un module du classeur:

Public Const nomBO = "Ma_zolie_BO"

Sub CreateBO()
Dim bo As CommandBar
On Error Resume Next
DeleteBO 'en cas de plantage d'Excel
Set bo = Application.CommandBars.Add(nomBO)
With bo.Controls.Add(msoControlButton)
.Caption = "Informations"
.FaceId = 487
.OnAction = "Macro1"
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Trier les Softs par ordre croissant"
.FaceId = 210
.OnAction = "Macro2"
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Trier les Softs par ordre décroissant"
.FaceId = 211
.OnAction = "Macro3"
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Réservé"
.FaceId = 266
.OnAction = "Macro4"
.BeginGroup = True
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Quitter Cd_Crack"
.FaceId = 2151
.OnAction = "Macro5"
End With
bo.Visible = True
End Sub

Sub DeleteBO()
On Error Resume Next
Application.CommandBars(nomBO).Delete
End Sub


dans la feuille de code de ThisWorkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
DeleteBO
End Sub

Private Sub Workbook_Open()
CreateBO
End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
On Error Resume Next
Application.CommandBars(nomBO).Visible = True
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
On Error Resume Next
Application.CommandBars(nomBO).Visible = False
End Sub


ChrisV


"Ghislain Benrais" a écrit dans le
message de news: c15ogv$oja$
Salut les champions,
J'ai crée une barre d'outils personnalisée. Bien. J'ai associé des
macros à chaque bouton de cette barre. Très bien. Je renomme le fichier :
les boutons de ma barre ne marchent plus ! Excel les cherche dans un
classeur portant l'ancien nom !
J'ai essayé d'affecter le nom des macros par tous les moyens possible
et

rien n'y fait.
Merci de votre aide,
Ghislain




Avatar
sabatier
bien que la soluce de chris soit la rolls, moi, si tu contentes de la
deudeuche, ghislain, je te dirais bien que si tu installes une nouvelle
BO personnalisée dans ton fichier, que tu y dragues les boutons de
l'ancienne et si tu réaffectes les macros à chacun de ces boutons, ça
devrait coller ; je crois deviner que ce n'est pas seulement le nom de
ton ficier que tu as changé mais aussi son emplacement...
jps

ChrisV a écrit:
Bonjour Ghislain,

Plus sûr de créer la BO à l'ouverture du classeur, puis de la détruire à sa
fermeture...
exemple:

dans un module du classeur:

Public Const nomBO = "Ma_zolie_BO"

Sub CreateBO()
Dim bo As CommandBar
On Error Resume Next
DeleteBO 'en cas de plantage d'Excel
Set bo = Application.CommandBars.Add(nomBO)
With bo.Controls.Add(msoControlButton)
.Caption = "Informations"
.FaceId = 487
.OnAction = "Macro1"
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Trier les Softs par ordre croissant"
.FaceId = 210
.OnAction = "Macro2"
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Trier les Softs par ordre décroissant"
.FaceId = 211
.OnAction = "Macro3"
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Réservé"
.FaceId = 266
.OnAction = "Macro4"
.BeginGroup = True
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Quitter Cd_Crack"
.FaceId = 2151
.OnAction = "Macro5"
End With
bo.Visible = True
End Sub

Sub DeleteBO()
On Error Resume Next
Application.CommandBars(nomBO).Delete
End Sub


dans la feuille de code de ThisWorkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
DeleteBO
End Sub

Private Sub Workbook_Open()
CreateBO
End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
On Error Resume Next
Application.CommandBars(nomBO).Visible = True
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
On Error Resume Next
Application.CommandBars(nomBO).Visible = False
End Sub


ChrisV


"Ghislain Benrais" a écrit dans le
message de news: c15ogv$oja$

Salut les champions,
J'ai crée une barre d'outils personnalisée. Bien. J'ai associé des
macros à chaque bouton de cette barre. Très bien. Je renomme le fichier :
les boutons de ma barre ne marchent plus ! Excel les cherche dans un
classeur portant l'ancien nom !
J'ai essayé d'affecter le nom des macros par tous les moyens possible


et

rien n'y fait.
Merci de votre aide,
Ghislain