Bonjour à tour,
J'ai récupéré sur le net une méthode de création menu dynamique sur Excel en VBA, code ci-dessous.
Cela fonctionne très bien, toutefois je souhaiterai uniquement avoir en menu que les feuilles non masquées.
En effet, dans l'exemple toutes feuilles incrémentes le menu, même masquées, feuil4 masquée.
J'ai essayé plusieurs codes sans succès.
Merci de votre aide
Sub sommaireDynamique()
Dim feuille As Worksheet
Dim bouton As Shape
Dim positionY As Integer
For Each bouton In ActiveSheet.Shapes
If bouton.Name Like "menu_*" Then
bouton.Delete
End If
Next
positionY = 4
For Each feuille In Worksheets
Set bouton = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 4, positionY, [a1].Width - 8, 30)
bouton.TextFrame2.TextRange.Characters.Text = feuille.Name
If feuille.Name = ActiveSheet.Name Then
bouton.ShapeStyle = msoShapeStylePreset14
Else
bouton.ShapeStyle = msoShapeStylePreset13
End If
ActiveSheet.Hyperlinks.Add Anchor:=bouton, Address:="", SubAddress:="'" & feuille.Name & "'!A1"
bouton.Name = "menu_" & feuille.Name
positionY = positionY + 30
Next
End Sub
J'ai récupéré sur le net une méthode de création menu dynamique sur Excel en VBA, code ci-dessous.
Cela fonctionne très bien, toutefois je souhaiterai uniquement avoir en menu que les feuilles non masquées.
En effet, dans l'exemple toutes feuilles incrémentes le menu, même masquées, feuil4 masquée.
J'ai essayé plusieurs codes sans succès.
Merci de votre aide
Sub sommaireDynamique()
Dim feuille As Worksheet
Dim bouton As Shape
Dim positionY As Integer
For Each bouton In ActiveSheet.Shapes
If bouton.Name Like "menu_*" Then
bouton.Delete
End If
Next
positionY = 4
For Each feuille In Worksheets
Set bouton = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 4, positionY, [a1].Width - 8, 30)
bouton.TextFrame2.TextRange.Characters.Text = feuille.Name
If feuille.Name = ActiveSheet.Name Then
bouton.ShapeStyle = msoShapeStylePreset14
Else
bouton.ShapeStyle = msoShapeStylePreset13
End If
ActiveSheet.Hyperlinks.Add Anchor:=bouton, Address:="", SubAddress:="'" & feuille.Name & "'!A1"
bouton.Name = "menu_" & feuille.Name
positionY = positionY + 30
Next
End Sub