VBA - .FindControl(Tag:=cTag).Delete pour tuer un menu CommandBarPopup
11 réponses
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 !
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
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 !
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 !