URGENT !!! Question sur les menus dans Excel & VBA
haleakala78
Messages postés11Date d'inscriptionmardi 30 août 2005StatutMembreDernière intervention23 mars 2006
-
16 janv. 2006 à 15:01
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 2006
-
16 janv. 2006 à 17:20
bonjour à tous
j'ai une nouvelle fois besoin de vos lumières
je bidouille un peu en VBA sur Excel mais j'ai un probleme et une deadline assez proche
je pose le contexte:
je prepare des fichiers de budget qui sont assez volumineux (4-5 Mo)
l'année derniere j'avais mis les macros VBA ds chaque fichier...grave erreur !!
donc j'ai créé un fichier de macros qui se lance automatiquement dès qu'un fichier s'ouvre (qui verifie que le fichier de macros est dejà ouvert ou non)
je fais des tests, je verifie la bonne execution des macros quand le fichier de macros reste ouvert et que j'ouvre un nouveau fichier
tout se passe bien sauf pour le menu
Excel me renvoie une erreur '5' à ma ligne de code d'ajout de menu qui se trouve dans le fichier de macros, à:
Set myBar = CommandBars.Add(Name:="Budget", Position:=msoBarTop, MenuBar:=False)
-----QUESTIONS
1/ je ne comprends pas pourquoi il veut réinserer ce menu qui s'ouvre avec le fichier de macros, et qui en l'espece ne se ré-ouvre pas puisque je fais le test avec:
Private Sub Workbook_Open()
' ouvre le fichier de macros
' verifie si le fichier de macros est ouvert
Dim myMacros As String
Dim wkbk As Workbook
myMacros = "biblio_macros.xls"
For Each wkbk In Workbooks
If wkbk.Name <> myMacros Then
Workbooks.Open ThisWorkbook.Path & "" & myMacros
End If
Next wkbk
ThisWorkbook.Activate
End Sub
2/ comment faire pour eviter qu'Excel veuille ajouter de nouveau le menu ?
3/ ou alors existe t il une autre solution ?
si vous ne comprenez pas ma demande, demandez moi de plus amples details
merci d'avance à tous ceux qui pourront m'aider
A voir également:
URGENT !!! Question sur les menus dans Excel & VBA
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 16 janv. 2006 à 15:58
Bonjour,
Je suppose de la macro qui crée la CommandBar " Budget", se trouve dans
le classeur biblio_macros.xls ?. Si oui, où se trouve t'elle (dans
WorkBook.Open ??)
haleakala78
Messages postés11Date d'inscriptionmardi 30 août 2005StatutMembreDernière intervention23 mars 2006 16 janv. 2006 à 16:09
je savais bien que je n'avais pas tout marqué..
alors,
je place ds le meme repertoire, mon fichier de macro "biblio_macros.xls" et mes fichiers de budget
quand j'ouvre un fichier de budget, j'ai donc placé dans le "thisworkbook" le test d'ouverture du fichier de macros
ce faisant, le fichier de macros ajoute mon menu "budget"
la macro d'ajout du menu se trouve plus ou moins dans workbook_open
j'ai créé un module pour y heberger la macro, et je l'appelle dans le workbook_open comme ceci:
Private Sub Workbook_Open()
Call Affiche_Barre_Menu_Budget
End Sub
et ma macro d'ajout de menu est celle ci:
sauf que j'ai rajouté une sorte de controle pour essayer d'empecher Excel de me rajouter le menu, mais faut avouer que ça marche pas...
je ne suis pas un specialiste alors il se peut que le code ait un peu la tete à l'envers !!!
Option Explicit
Public TabMenu() As String
Dim myMenu As CommandBarPopup
Dim myBar As CommandBar
Dim myOption As CommandBarControl
Dim myButton As CommandBarButton
Sub Affiche_Barre_Menu_Budget()
On Error Resume Next
'CommandBars("Budget").Delete
' verifie l'existence du menu fy07
Dim cmdbar As CommandBar
For Each cmdbar In Application.CommandBars
If cmdbar.Name <> "budget" Then
Set myBar = CommandBars.Add(Name:="Budget", Position:=msoBarTop, MenuBar:=False)
On Error GoTo 0
myBar.Visible = True
myBar.Protection = msoBarNoCustomize
Set myMenu = myBar.Controls.Add(Type:=msoControlPopup)
myMenu.Caption = "Budget FY07"
' ajout des commandes du menu Budget FY07
With myMenu.Controls.Add(msoControlButton)
.Caption = "Mise à Jour Pivots"
.OnAction = "MAJ_pivots"
End With
With myMenu.Controls.Add(msoControlButton)
.Caption = "Consolider charges"
.OnAction = "conso_income"
End With
With myMenu.Controls.Add(msoControlButton)
.Caption = "Lancer l'explorateur"
.BeginGroup = True
.OnAction = "lancer_explorateur"
End With
With myMenu.Controls.Add(msoControlButton)
.Caption = "Quitter sans Sauvegarder"
.BeginGroup = True
.FaceId = 330
.OnAction = "Quitter"
End With
With myMenu.Controls.Add(msoControlButton)
.Caption = "Quitter et Sauvegarder"
.FaceId = 3
.OnAction = "Sauver2"
End With
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 16 janv. 2006 à 17:20
re,
A mon avis dans workBook_BeforeClose, tu dois placer la macro qui
supprime la commandBar de façon à ce qu'a l'ouverture du fichier, elle
soit crée sans message d'erreur.Si tu l'a supprime pas, elle va
apparaitre dans toius tes classeurs, mais va provoquer une erreur.