URGENT !!! Question sur les menus dans Excel & VBA

haleakala78 Messages postés 11 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 23 mars 2006 - 16 janv. 2006 à 15:01
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 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

3 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
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 ??)



jpleroisse
0
haleakala78 Messages postés 11 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 23 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

End If
Next cmdbar


End Sub
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
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.



jpleroisse
0
Rejoignez-nous