H
Hady
Guest
Bonjour forum,
j'utilise le code ci-dessous pour récupérer la valeur d'une zone texte sous un menu. Lorsque j'utilise la code brut ci-dessous la fonctionne parfait. Lorsque j'insère ce code dans un menu plus complexe cela ne fonctionne plus : je n'arrive plus à récupérer la valeur de la zone de texte! Je ne comprends absolument pas pourquoi!
'CODE QUI MARCHE
Sub AjoutZoneTexte()
Dim MaBarre As CommandBar
Dim MonTxt As CommandBarComboBox
Dim bar As Object
For Each bar In CommandBars
If bar.Name = 'BarrePerso' Then
CommandBars('BarrePerso').Delete
End If
Next bar
Set Newbarre = CommandBars.Add('BarrePerso', MenuBar:=True)
With Newbarre
.Position = msoBarTop
.Protection = msoBarNoMove
.Visible = True
End With
Set MaBarre = CommandBars('BarrePerso')
Set MonTxt = MaBarre.Controls.Add(msoControlDropdown) 'ajoute une liste déroulante
With MonTxt
.OnAction = 'Ma_macro'
.Tag = 'lst1'
.AddItem 'Choix 1'
.AddItem 'Choix 2'
.AddItem 'Choix 3'
.AddItem 'Choix 4'
End With
End Sub
Sub Ma_macro()
Dim MonBtn As CommandBarComboBox, strTxt As String
Set MonBtn = CommandBars('BarrePerso').FindControl(, , 'lst1')
strTxt = MonBtn.Text
MsgBox strTxt
End Sub
'CODE QUI MARCHE PAS
Sub CreationMenus()
[..]
m22 As CommandBarComboBox
[..]
Dim bar As Object
For Each bar In CommandBars
If bar.Name = 'Mabarre' Then
CommandBars('Mabarre').Delete
End If
Next bar
Set Newbarre = CommandBars.Add('Mabarre', MenuBar:=True)
With Newbarre
.Position = msoBarTop
.Protection = msoBarNoMove
.Visible = True
End With
[..]
Set m2 = Newbarre.Controls.Add(Type:=msoControlPopup)
m2.Caption = '&Edit'
m2.TooltipText = 'Print, Save...'
Set m21 = m2.Controls.Add(Type:=msoControlButton)
m21.Caption = '&Save'
m21.TooltipText = 'Save dashboard modifications'
m21.OnAction = 'Save'
m21.FaceId = 3
Set m22 = m2.Controls.Add(Type:=msoControlDropdown)
m22.Caption = '&Style'
m22.OnAction = 'MiseEnForme'
m22.Tag = 'StyleDuGraphique'
m22.AddItem 'Background'
m22.AddItem 'Title'
m22.AddItem 'None'
[..]
End Sub
Sub MiseEnForme()
Dim MonBtn As CommandBarComboBox, strTxt As String
Set MonBtn = Application.CommandBars('MaBarre').FindControl(Tag:='StyleDuGraphique')
strTxt = MonBtn.Text
MsgBox strTxt
End Sub
Le menu est bien crée mais la valeur non récupéré. En fait je n'arrive pas à récupérer le bouton!
MonBtn = 'Nothing' au débogage
Quelqu'un peut-il m'aider?
MErci
Hady
j'utilise le code ci-dessous pour récupérer la valeur d'une zone texte sous un menu. Lorsque j'utilise la code brut ci-dessous la fonctionne parfait. Lorsque j'insère ce code dans un menu plus complexe cela ne fonctionne plus : je n'arrive plus à récupérer la valeur de la zone de texte! Je ne comprends absolument pas pourquoi!
'CODE QUI MARCHE
Sub AjoutZoneTexte()
Dim MaBarre As CommandBar
Dim MonTxt As CommandBarComboBox
Dim bar As Object
For Each bar In CommandBars
If bar.Name = 'BarrePerso' Then
CommandBars('BarrePerso').Delete
End If
Next bar
Set Newbarre = CommandBars.Add('BarrePerso', MenuBar:=True)
With Newbarre
.Position = msoBarTop
.Protection = msoBarNoMove
.Visible = True
End With
Set MaBarre = CommandBars('BarrePerso')
Set MonTxt = MaBarre.Controls.Add(msoControlDropdown) 'ajoute une liste déroulante
With MonTxt
.OnAction = 'Ma_macro'
.Tag = 'lst1'
.AddItem 'Choix 1'
.AddItem 'Choix 2'
.AddItem 'Choix 3'
.AddItem 'Choix 4'
End With
End Sub
Sub Ma_macro()
Dim MonBtn As CommandBarComboBox, strTxt As String
Set MonBtn = CommandBars('BarrePerso').FindControl(, , 'lst1')
strTxt = MonBtn.Text
MsgBox strTxt
End Sub
'CODE QUI MARCHE PAS
Sub CreationMenus()
[..]
m22 As CommandBarComboBox
[..]
Dim bar As Object
For Each bar In CommandBars
If bar.Name = 'Mabarre' Then
CommandBars('Mabarre').Delete
End If
Next bar
Set Newbarre = CommandBars.Add('Mabarre', MenuBar:=True)
With Newbarre
.Position = msoBarTop
.Protection = msoBarNoMove
.Visible = True
End With
[..]
Set m2 = Newbarre.Controls.Add(Type:=msoControlPopup)
m2.Caption = '&Edit'
m2.TooltipText = 'Print, Save...'
Set m21 = m2.Controls.Add(Type:=msoControlButton)
m21.Caption = '&Save'
m21.TooltipText = 'Save dashboard modifications'
m21.OnAction = 'Save'
m21.FaceId = 3
Set m22 = m2.Controls.Add(Type:=msoControlDropdown)
m22.Caption = '&Style'
m22.OnAction = 'MiseEnForme'
m22.Tag = 'StyleDuGraphique'
m22.AddItem 'Background'
m22.AddItem 'Title'
m22.AddItem 'None'
[..]
End Sub
Sub MiseEnForme()
Dim MonBtn As CommandBarComboBox, strTxt As String
Set MonBtn = Application.CommandBars('MaBarre').FindControl(Tag:='StyleDuGraphique')
strTxt = MonBtn.Text
MsgBox strTxt
End Sub
Le menu est bien crée mais la valeur non récupéré. En fait je n'arrive pas à récupérer le bouton!
MonBtn = 'Nothing' au débogage
Quelqu'un peut-il m'aider?
MErci
Hady