OVH Cloud OVH Cloud

test de présence d'un menu

14 réponses
Avatar
tilivier
Bonjour,
J'ai une macro qui me créer un menu au démarrage du classeur et le problème
est que à chaque fois que j'ouvre mon classeur il me créeer un nouveau menu.
J'ai essayé de mettre un test pour vérifier si le menu existait déjà , et
s'il existe ne pas le créer, mais je n'arrive pas.

Qqn pourrait-il m'aider?

Merci d'avance et bonne journée

10 réponses

1 2
Avatar
Philippe.R
Bonjour,
Peux tu publier ici le code concerné, il sera ainsi plus aisé d'aider (et non pluzezedede).
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"tilivier" a écrit dans le message de news:

Bonjour,
J'ai une macro qui me créer un menu au démarrage du classeur et le problème
est que à chaque fois que j'ouvre mon classeur il me créeer un nouveau menu.
J'ai essayé de mettre un test pour vérifier si le menu existait déjà , et
s'il existe ne pas le créer, mais je n'arrive pas.

Qqn pourrait-il m'aider?

Merci d'avance et bonne journée


Avatar
tilivier
Bonjour Philippe
et voilà si ça peut t'aidé.
Merci


Sub Ajout_Menu_Perso()

With CommandBars(1).Controls.Add(Type:=msoControlPopup, Temporary:=True)
.Caption = "A&vanchets"

With .Controls.Add(msoControlButton)
.Caption = "&Menu"
.FaceId = 837
.BeginGroup = False
.OnAction = "Macro2"
End With

With .Controls.Add(msoControlButton)
.Caption = "Enregi&strer"
.FaceId = 3
.BeginGroup = False
.OnAction = "enregistrer"
End With

With .Controls.Add(msoControlButton)
.Caption = "&Données Personnelles"
.FaceId = 59
.BeginGroup = False
.OnAction = "affiche_pers"
End With

With .Controls.Add(msoControlButton)
.Caption = "Données &Immeuble"
.FaceId = 176
.BeginGroup = False
.OnAction = "affiche_immeuble"
End With

With .Controls.Add(msoControlButton)
.Caption = "&Récapitulatif"
.FaceId = 97
.BeginGroup = False
.OnAction = "affiche_récapitulatif"
End With

With .Controls.Add(msoControlButton)
.Caption = "Statisti&ques"
.FaceId = 17
.BeginGroup = False
.OnAction = "affiche_stat"
End With

With .Controls.Add(msoControlButton)
.Caption = "Im&pression"
.FaceId = 4
.BeginGroup = False
.OnAction = "affiche_impress"
End With

With .Controls.Add(msoControlButton)
.Caption = "Quitter"
.FaceId = 840
.BeginGroup = False
.OnAction = "quitte"
End With

With .Controls.Add(msoControlButton)
.Caption = "Plein &écran"
.FaceId = 69
.BeginGroup = False
.OnAction = "plein_ecran"
End With

End With

End Sub



Bonjour,
Peux tu publier ici le code concerné, il sera ainsi plus aisé d'aider (et non pluzezedede).
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"tilivier" a écrit dans le message de news:

Bonjour,
J'ai une macro qui me créer un menu au démarrage du classeur et le problème
est que à chaque fois que j'ouvre mon classeur il me créeer un nouveau menu.
J'ai essayé de mettre un test pour vérifier si le menu existait déjà , et
s'il existe ne pas le créer, mais je n'arrive pas.

Qqn pourrait-il m'aider?

Merci d'avance et bonne journée






Avatar
ThierryP
Bonjour !

Cette proc m'a été donnée par Pierre Fauconnier et elle fonctionne
nickel. Evidemment à adapter à ton besoin :
Sub CreateBO()
Dim bo As CommandBar
On Error Resume Next
DeleteBO 'en cas de plantage d'Excel
Set bo = Application.CommandBars.Add(MenuTP)
With bo
.Left = 500
.Top = 100
.Name = "Menu Trier"
.Protection = msoBarNoCustomize + msoBarNoMove _
+ msoBarNoChangeVisible + msoBarNoResize
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Tri par Date"
.Style = msoButtonCaption
.OnAction = "TriChrono"
.Width = 100
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Tri par N° d'Ordre"
.Style = msoButtonCaption
.OnAction = "TriNuméro"
.Width = 100
End With
bo.Visible = False
End Sub

Bonne journée

@+ thierryp:-))

Bonjour,
J'ai une macro qui me créer un menu au démarrage du classeur et le problème
est que à chaque fois que j'ouvre mon classeur il me créeer un nouveau menu.
J'ai essayé de mettre un test pour vérifier si le menu existait déjà , et
s'il existe ne pas le créer, mais je n'arrive pas.

Qqn pourrait-il m'aider?

Merci d'avance et bonne journée


Avatar
tilivier
Bonjour

Merci ce que tu m'as envoyé m'a permis de résoudre un autre problème, mais
ce qu'il me manque toujours c'est une fonction qui vérifie que mon menu
n'existe pas déjà avant de le créer . et s'il existe il faudrait que ma
fonction le tue avant de le recréer.

Merci.



Bonjour !

Cette proc m'a été donnée par Pierre Fauconnier et elle fonctionne
nickel. Evidemment à adapter à ton besoin :
Sub CreateBO()
Dim bo As CommandBar
On Error Resume Next
DeleteBO 'en cas de plantage d'Excel
Set bo = Application.CommandBars.Add(MenuTP)
With bo
.Left = 500
.Top = 100
.Name = "Menu Trier"
.Protection = msoBarNoCustomize + msoBarNoMove _
+ msoBarNoChangeVisible + msoBarNoResize
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Tri par Date"
.Style = msoButtonCaption
.OnAction = "TriChrono"
.Width = 100
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Tri par N° d'Ordre"
.Style = msoButtonCaption
.OnAction = "TriNuméro"
.Width = 100
End With
bo.Visible = False
End Sub

Bonne journée

@+ thierryp:-))

Bonjour,
J'ai une macro qui me créer un menu au démarrage du classeur et le problème
est que à chaque fois que j'ouvre mon classeur il me créeer un nouveau menu.
J'ai essayé de mettre un test pour vérifier si le menu existait déjà , et
s'il existe ne pas le créer, mais je n'arrive pas.

Qqn pourrait-il m'aider?

Merci d'avance et bonne journée





Avatar
ThierryP
Re bonjour !

C'est ce que font les lignes suivantes :
On Error Resume Next
DeleteBO 'en cas de plantage d'Excel

Avant de créer le menu, on le détruit, mais s'il n'existait pas, on
risque de planter la proc, d'où le "on error...", qui renvoie à la ligne
suivant celle qui a planté.
CQFD...
J'étale pas ma science, c'est tjrs Pierre qui m'a expliqué...Rendons
hommage aux maîtres d'Excel !!!
@+ thierryp :-))

Bonjour

Merci ce que tu m'as envoyé m'a permis de résoudre un autre problème, mais
ce qu'il me manque toujours c'est une fonction qui vérifie que mon menu
n'existe pas déjà avant de le créer . et s'il existe il faudrait que ma
fonction le tue avant de le recréer.

Merci.




Bonjour !

Cette proc m'a été donnée par Pierre Fauconnier et elle fonctionne
nickel. Evidemment à adapter à ton besoin :
Sub CreateBO()
Dim bo As CommandBar
On Error Resume Next
DeleteBO 'en cas de plantage d'Excel
Set bo = Application.CommandBars.Add(MenuTP)
With bo
.Left = 500
.Top = 100
.Name = "Menu Trier"
.Protection = msoBarNoCustomize + msoBarNoMove _
+ msoBarNoChangeVisible + msoBarNoResize
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Tri par Date"
.Style = msoButtonCaption
.OnAction = "TriChrono"
.Width = 100
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Tri par N° d'Ordre"
.Style = msoButtonCaption
.OnAction = "TriNuméro"
.Width = 100
End With
bo.Visible = False
End Sub

Bonne journée

@+ thierryp:-))


Bonjour,
J'ai une macro qui me créer un menu au démarrage du classeur et le problème
est que à chaque fois que j'ouvre mon classeur il me créeer un nouveau menu.
J'ai essayé de mettre un test pour vérifier si le menu existait déjà , et
s'il existe ne pas le créer, mais je n'arrive pas.

Qqn pourrait-il m'aider?

Merci d'avance et bonne journée







Avatar
jps
bonjour tilivier
c'est vrai qu'il est pluzézédédé quand on voit la macro...
moi, j'ai supposé que tu ajoutais un bouton dans le menu contextuel de ton
classeur, auquel cas, tu pourrais mettre au début de ta proc :


Application.CommandBars("Cell").Controls("LeNomDeTonBouton").Delete

et ta proc le récréera...
HTH
jps

"tilivier" a écrit dans le message de
news:
Bonjour,
J'ai une macro qui me créer un menu au démarrage du classeur et le
problème

est que à chaque fois que j'ouvre mon classeur il me créeer un nouveau
menu.

J'ai essayé de mettre un test pour vérifier si le menu existait déjà , et
s'il existe ne pas le créer, mais je n'arrive pas.

Qqn pourrait-il m'aider?

Merci d'avance et bonne journée


Avatar
jps
manquerait pas la proc DeleteBO, thierry?
jps (qui s'immimisce)

"ThierryP" a écrit dans le
message de news:%
Bonjour !

Cette proc m'a été donnée par Pierre Fauconnier et elle fonctionne
nickel. Evidemment à adapter à ton besoin :
Sub CreateBO()
Dim bo As CommandBar
On Error Resume Next
DeleteBO 'en cas de plantage d'Excel
Set bo = Application.CommandBars.Add(MenuTP)
With bo
.Left = 500
.Top = 100
.Name = "Menu Trier"
.Protection = msoBarNoCustomize + msoBarNoMove _
+ msoBarNoChangeVisible + msoBarNoResize
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Tri par Date"
.Style = msoButtonCaption
.OnAction = "TriChrono"
.Width = 100
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Tri par N° d'Ordre"
.Style = msoButtonCaption
.OnAction = "TriNuméro"
.Width = 100
End With
bo.Visible = False
End Sub

Bonne journée

@+ thierryp:-))

Bonjour,
J'ai une macro qui me créer un menu au démarrage du classeur et le
problème


est que à chaque fois que j'ouvre mon classeur il me créeer un nouveau
menu.


J'ai essayé de mettre un test pour vérifier si le menu existait déjà ,
et


s'il existe ne pas le créer, mais je n'arrive pas.

Qqn pourrait-il m'aider?

Merci d'avance et bonne journée




Avatar
Philippe.R
Re,
Fais l'essai de la version suivante :

Sub Ajout_Menu_Perso_2()
on error resume next
if [etamenu]=:="Menu actif" then exit sub
With CommandBars(1).Controls.Add(Type:=msoControlPopup, Temporary:=True)
.Caption = "A&vanchets"

With .Controls.Add(msoControlButton)
.Caption = "&Menu"
.FaceId = 837
.BeginGroup = False
.OnAction = "Macro2"
End With

With .Controls.Add(msoControlButton)
.Caption = "Enregi&strer"
.FaceId = 3
.BeginGroup = False
.OnAction = "enregistrer"
End With

With .Controls.Add(msoControlButton)
.Caption = "&Données Personnelles"
.FaceId = 59
.BeginGroup = False
.OnAction = "affiche_pers"
End With

With .Controls.Add(msoControlButton)
.Caption = "Données &Immeuble"
.FaceId = 176
.BeginGroup = False
.OnAction = "affiche_immeuble"
End With

With .Controls.Add(msoControlButton)
.Caption = "&Récapitulatif"
.FaceId = 97
.BeginGroup = False
.OnAction = "affiche_récapitulatif"
End With

With .Controls.Add(msoControlButton)
.Caption = "Statisti&ques"
.FaceId = 17
.BeginGroup = False
.OnAction = "affiche_stat"
End With

With .Controls.Add(msoControlButton)
.Caption = "Im&pression"
.FaceId = 4
.BeginGroup = False
.OnAction = "affiche_impress"
End With

With .Controls.Add(msoControlButton)
.Caption = "Quitter"
.FaceId = 840
.BeginGroup = False
.OnAction = "quitte"
End With

With .Controls.Add(msoControlButton)
.Caption = "Plein &écran"
.FaceId = 69
.BeginGroup = False
.OnAction = "plein_ecran"
End With

End With

ThisWorkbook.Names.Add Name:="etamenu", RefersTo:="Menu actif"

End Sub

--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"tilivier" a écrit dans le message de news:

Bonjour Philippe
et voilà si ça peut t'aidé.
Merci


Sub Ajout_Menu_Perso()

With CommandBars(1).Controls.Add(Type:=msoControlPopup, Temporary:=True)
.Caption = "A&vanchets"

With .Controls.Add(msoControlButton)
.Caption = "&Menu"
.FaceId = 837
.BeginGroup = False
.OnAction = "Macro2"
End With

With .Controls.Add(msoControlButton)
.Caption = "Enregi&strer"
.FaceId = 3
.BeginGroup = False
.OnAction = "enregistrer"
End With

With .Controls.Add(msoControlButton)
.Caption = "&Données Personnelles"
.FaceId = 59
.BeginGroup = False
.OnAction = "affiche_pers"
End With

With .Controls.Add(msoControlButton)
.Caption = "Données &Immeuble"
.FaceId = 176
.BeginGroup = False
.OnAction = "affiche_immeuble"
End With

With .Controls.Add(msoControlButton)
.Caption = "&Récapitulatif"
.FaceId = 97
.BeginGroup = False
.OnAction = "affiche_récapitulatif"
End With

With .Controls.Add(msoControlButton)
.Caption = "Statisti&ques"
.FaceId = 17
.BeginGroup = False
.OnAction = "affiche_stat"
End With

With .Controls.Add(msoControlButton)
.Caption = "Im&pression"
.FaceId = 4
.BeginGroup = False
.OnAction = "affiche_impress"
End With

With .Controls.Add(msoControlButton)
.Caption = "Quitter"
.FaceId = 840
.BeginGroup = False
.OnAction = "quitte"
End With

With .Controls.Add(msoControlButton)
.Caption = "Plein &écran"
.FaceId = 69
.BeginGroup = False
.OnAction = "plein_ecran"
End With

End With

End Sub



Bonjour,
Peux tu publier ici le code concerné, il sera ainsi plus aisé d'aider (et non pluzezedede).
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"tilivier" a écrit dans le message de news:

Bonjour,
J'ai une macro qui me créer un menu au démarrage du classeur et le problème
est que à chaque fois que j'ouvre mon classeur il me créeer un nouveau menu.
J'ai essayé de mettre un test pour vérifier si le menu existait déjà , et
s'il existe ne pas le créer, mais je n'arrive pas.

Qqn pourrait-il m'aider?

Merci d'avance et bonne journée








Avatar
ThierryP
oups ! vite fait mal fait....ci-dessous le truc qui va bien !!!
Sub DeleteBO()
On Error Resume Next
Application.CommandBars(MenuTP).Delete
End Sub

Heureuseùent qu'y a des pros pour vérifier le travail des newbees !!!!

@+ thierryp :-))
manquerait pas la proc DeleteBO, thierry?
jps (qui s'immimisce)

"ThierryP" a écrit dans le
message de news:%

Bonjour !

Cette proc m'a été donnée par Pierre Fauconnier et elle fonctionne
nickel. Evidemment à adapter à ton besoin :
Sub CreateBO()
Dim bo As CommandBar
On Error Resume Next
DeleteBO 'en cas de plantage d'Excel
Set bo = Application.CommandBars.Add(MenuTP)
With bo
.Left = 500
.Top = 100
.Name = "Menu Trier"
.Protection = msoBarNoCustomize + msoBarNoMove _
+ msoBarNoChangeVisible + msoBarNoResize
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Tri par Date"
.Style = msoButtonCaption
.OnAction = "TriChrono"
.Width = 100
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Tri par N° d'Ordre"
.Style = msoButtonCaption
.OnAction = "TriNuméro"
.Width = 100
End With
bo.Visible = False
End Sub

Bonne journée

@+ thierryp:-))


Bonjour,
J'ai une macro qui me créer un menu au démarrage du classeur et le



problème

est que à chaque fois que j'ouvre mon classeur il me créeer un nouveau



menu.

J'ai essayé de mettre un test pour vérifier si le menu existait déjà ,



et

s'il existe ne pas le créer, mais je n'arrive pas.

Qqn pourrait-il m'aider?

Merci d'avance et bonne journée








Avatar
tilivier
Oui il la manque mais il est zézé de voir à quoi elle correspond non?
en tout cas moi j'ai compris ;-))


manquerait pas la proc DeleteBO, thierry?
jps (qui s'immimisce)

"ThierryP" a écrit dans le
message de news:%
Bonjour !

Cette proc m'a été donnée par Pierre Fauconnier et elle fonctionne
nickel. Evidemment à adapter à ton besoin :
Sub CreateBO()
Dim bo As CommandBar
On Error Resume Next
DeleteBO 'en cas de plantage d'Excel
Set bo = Application.CommandBars.Add(MenuTP)
With bo
.Left = 500
.Top = 100
.Name = "Menu Trier"
.Protection = msoBarNoCustomize + msoBarNoMove _
+ msoBarNoChangeVisible + msoBarNoResize
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Tri par Date"
.Style = msoButtonCaption
.OnAction = "TriChrono"
.Width = 100
End With
With bo.Controls.Add(msoControlButton)
.Caption = "Tri par N° d'Ordre"
.Style = msoButtonCaption
.OnAction = "TriNuméro"
.Width = 100
End With
bo.Visible = False
End Sub

Bonne journée

@+ thierryp:-))

Bonjour,
J'ai une macro qui me créer un menu au démarrage du classeur et le
problème


est que à chaque fois que j'ouvre mon classeur il me créeer un nouveau
menu.


J'ai essayé de mettre un test pour vérifier si le menu existait déjà ,
et


s'il existe ne pas le créer, mais je n'arrive pas.

Qqn pourrait-il m'aider?

Merci d'avance et bonne journée








1 2