Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA - .FindControl(Tag:=cTag).Delete pour tuer un menu CommandBarPopup

11 réponses
Avatar
twinley
Bonsoir à tous,

J'y suis presque grâce à anonymousA et Pounet.

Je reprend un nouveau fil car l'autre était orienté CommandBar alors que
celui-ci c'est CommandBarPopup. Je remettrai la somlution dans l'autre fil.

Il suffit de glisser -lacher pour l'enlever mais en VBA, je coince.
J'ai une err 91 qui traine lorsque je veux enlever le menu Mois,
sur la ligne : .FindControl(Tag:=cTag).Delete

Voici tout le code qui est dans un module standart

Option Explicit
Const cTag As String = "Mois"

Sub CreerMenuMois()
Dim MenuMois As CommandBarPopup
On Error Resume Next
With Application.CommandBars(1)
Set MenuMois = .Controls.Add(Type:=msoControlPopup,
before:=.Controls.Count - 1)
End With
MenuMois.Caption = "Mois"
'Creation des sous-menus
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Trim1"
.OnAction = "Macro1"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Trim2"
.OnAction = "Macro2"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Trim3"
.OnAction = "Macro3"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Trim3"
.OnAction = "Macro4"
End With
End Sub

Sub SupprimerMenuMois()
With Application.CommandBars
If .FindControl(Tag:=cTag) Is Nothing Then
.FindControl(Tag:=cTag).Delete
End If
End With
End Sub



Merci à toute âme charitable qui me supprimera cette err 91 !

--
à+twinley

1 réponse

1 2
Avatar
Michel Gaboly
Re,

J'ai cru un moment que tu n'allais pas réagir à mon "sadisme" ;-))

Continue à réagir comme cela (émotion, joie, ...). Excellente motivation
por continuer à progresser.


Bonjour Michel

et quelques astuces de plus à archiver. Merci.

Oui, bien sur, les intitulés sont douteux. :-[

En fait Youki m'avait aidé pour un affichage des mois par groupes avec
Janv fev mars etc. et cela m'a ouvert l'horizon.
Puis après j'ai dérivé pour faire le menu trim en m'attachant à la
fonctionnalité, et en faisant l'impasse sur les intitulés. Il y a aura
deux menus : Mois et Trimestre.

C'est l'émotion... ! J'étais tout à ma joie d'avoir dénoué le truc.

:-D

à+twinley


Bravo twinley ;-))

Par pur sadisme, une façon bien + simple de supprimer le menu :

Cub SuppMenu()
On Error Resume Next
Application.CommandBars(1).Controls("Mois").Delete
End Sub

A partir du moment où tu mets en place la gestion d'erreur (On Error
Resume Next), le test "If Not Menu Is Nothing ..." est superflu.


Une remarque également : ne serait-il pas + logique d'appeler le menu
"Trim" ou "Trimestre" ?



Après bien des années à courir l'Univers VBA... twinley, de ses
petits yeux rougis et de ses doigts qui ont trop saigné sur les
claviers...
à enfin commis ce code avec l'aide d'anonymousA, Pounet et
l'incommensurable support de tout le forum (FS, FxM, Fauconnier avec
Google qui est votre ami ... qu'ils disent ! )

Création d'un menu Mois avec 4 sous-menus
Suppression du menu Mois

Sub CreateMenuMois()
Dim MenuMois As CommandBarPopup
On Error Resume Next
With Application.CommandBars(1)
Set MenuMois = .Controls.Add(Type:=msoControlPopup,
before:=.Controls.Count - 1)
End With
MenuMois.Caption = "Mois"
'Creation des sous-menus
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Trim1"
.OnAction = "Macro1"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Trim2"
.OnAction = "Macro2"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Trim3"
.OnAction = "Macro3"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Trim3"
.OnAction = "Macro4"
End With
End Sub

Sub Suppr_Menu2()
Dim NomBarre$, MenuMois As CommandBarPopup
NomBarre = "Mois"
On Error Resume Next
With Application.CommandBars(1) ' (1) ou ("Worksheet Menu Bar")
Set MenuMois = .Controls(NomBarre)
If Not MenuMois Is Nothing Then .Controls(NomBarre).Delete
End With
End Sub
à+twinley




Bonsoir à tous,

J'y suis presque grâce à anonymousA et Pounet.

Je reprend un nouveau fil car l'autre était orienté CommandBar alors
que celui-ci c'est CommandBarPopup. Je remettrai la somlution dans
l'autre fil.

Il suffit de glisser -lacher pour l'enlever mais en VBA, je coince.
J'ai une err 91 qui traine lorsque je veux enlever le menu Mois,
sur la ligne : .FindControl(Tag:=cTag).Delete

Voici tout le code qui est dans un module standart

Option Explicit
Const cTag As String = "Mois"

Sub CreerMenuMois()
Dim MenuMois As CommandBarPopup
On Error Resume Next
With Application.CommandBars(1)
Set MenuMois = .Controls.Add(Type:=msoControlPopup,
before:=.Controls.Count - 1)
End With
MenuMois.Caption = "Mois"
'Creation des sous-menus
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Trim1"
.OnAction = "Macro1"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Trim2"
.OnAction = "Macro2"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Trim3"
.OnAction = "Macro3"
End With
With MenuMois.Controls.Add(msoControlButton)
.Caption = "Trim3"
.OnAction = "Macro4"
End With
End Sub

Sub SupprimerMenuMois()
With Application.CommandBars
If .FindControl(Tag:=cTag) Is Nothing Then
.FindControl(Tag:=cTag).Delete
End If
End With
End Sub



Merci à toute âme charitable qui me supprimera cette err 91 !









--
Cordialement,

Michel Gaboly
www.gaboly.com




1 2