Barre de boutons flottante

Bonjour,

Dans un tableur, je souhaite créer une barre de boutons flottante de sorte que quelle que soir la cellule dans laquelle je me trouve, je puisse voir et actionner l'ensemble des boutons personnalisés (macros).

Point important, j'utilise un mac avec Excel 2016 et je ne connais quasiment rien à Excel. Les macros sont fabriquées uniquement à partir du bouton "Enregistrement" donc s'il faut en écrire de nouvelles il faut me dire quoi taper et où le taper.

Savez-vous comment faire svp ?

Cordialement

Bonjour,

Je n'est pas Excel pour Mac donc impossible de tester le bon fonctionnement !

Ci dessous, la procédure pour créer une barre d'outils Popup avec deux boutons et un ComboBox (tout ceci est pour le test bien sûr) à mettre dans un module standard :

Private Sub MenuPopup()

    Dim Barre As CommandBar
    Dim Btn As CommandBarButton
    Dim Cmb As CommandBarComboBox
    Dim I As Integer

    'supprime la barre si elle existe avant de la re créer
    On Error Resume Next
    CommandBars("MaBarre").Delete
    On Error GoTo 0

    'céation d'une barre d'outils pop up
    Set Barre = CommandBars.Add("MaBarre", msoBarPopup)

    'ajout de deux boutons et d'un ComboBox
    With Barre

        Set Btn = .Controls.Add(msoControlButton)

        With Btn

            .OnAction = "Macro1"
            .Caption = "Macro 1"
            .FaceId = 3648

        End With

        Set Btn = .Controls.Add(msoControlButton)

        With Btn

            .OnAction = "Macro2"
            .Caption = "Macro 2"
            .FaceId = 3650

        End With

        Set Cmb = .Controls.Add(msoControlComboBox)

        With Cmb

            For I = 1 To 7: .AddItem WeekdayName(I): Next I

            .OnAction = "MacroCombo"
            .BeginGroup = True

        End With

    End With

End Sub

ci-dessous les procédures appelées par les boutons et ComboBox à mettre elles aussi dans un module standard qui peut être le même pour toutes les procédures :

Sub MacroCombo()

    With CommandBars.ActionControl: MsgBox (.List(.ListIndex)): End With

End Sub

Sub Macro2()

    MsgBox "Macro 2"

    With CommandBars("MaBarre").Controls("M&acro 2")

        If .FaceId = 3650 Then .FaceId = 220 Else .FaceId = 3650

    End With

End Sub

Sub Macro1()

    MsgBox "Macro 1"

    With CommandBars("MaBarre").Controls("&Macro 1")

        If .FaceId = 3648 Then .FaceId = 220 Else .FaceId = 3648

    End With

End Sub

et ce dernier code est la procédure événementielle sur clic droit à mette dans le module de la feuille :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

    CommandBars("MaBarre").ShowPopup
    Cancel = True

End Sub

Donc, en tout premier, il faut exécuter la procédure de création de la barre d'outils "MenuPopup" puis sur la feuille faire un clic droit sur n'importe quelle cellule de la feuille où se trouve la procédure événementielle

Bonsoir et merci pour le script. Pouvez-vous m'indiquer où je dois coller ce(s) script(s) svp ?

Bonsoir MacUser, Theze,

fais Alt F11 ➯ fenêtre "Microsoft Visual Basic"

fais Alt i m ➯ ça insère Module1, dont la page blanche est à droite ; c'est là que tu dois copier /coller la 1ère partie du code VBA de Theze, ici la 1ère sub : Private Sub MenuPopup() ; ensuite, fais de nouveau Alt i m pour insérer un 2ème module standard : Module2 ; dans la page blanche de droite, fais un copier / coller des 3 subs qui suivent : MacroCombo(), Macro2(), et Macro1() ; enfin, regarde à gauche et en haut, au-dessus de « Modules » ; si ton classeur contient par exemple 3 feuilles, alors tu peux voir « Feuil1 », « Feuil2 », « Feuil3 » ; si la feuille à partir de laquelle tu veux lancer le script est la 2ème feuille : fais 1 clic droit dessus et choisis l'item « Code » ; ou clic gauche sur Feuil2 puis Entrée (au choix) ➯ à droite : page de code de Feuil2 ; tu dois y copier / coller la dernière sub : Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

@Theze : j'espère que tu ne m'en voudras pas d'être intervenu sur ce sujet ; j'ai voulu t'épargner d'avoir à faire une description longue et rébarbative ! (tout au moins pour ceux qui connaissent tout ça par cœur)

ajout : y'a pas un article où tout ça est déjà décrit, et il suffirait d'mettre un lien dessus ?

dhany

Bonjour à toutes et tous, bonjour dhany,

@Theze : j'espère que tu ne m'en voudras pas d'être intervenu sur ce sujet ; j'ai voulu t'épargner d'avoir à faire une description longue et rébarbative ! (tout au moins pour ceux qui connaissent tout ça par cœur)

Je te remercie de ta sollicitude

Rechercher des sujets similaires à "barre boutons flottante"