Creer un menu personnalisé

Bonjour à tous,

Je veux tout simplement remplacer le Menu d'Excel par un Menu personnalisé. J'avais déjà réussi cette modification mais en ce moment je ne comprends pas pourquoi je n'y arrive plus et tombe sur un bug

Après avoir construit mon Menu personnalisé il me faut l'intégrer dans ma feuille, pour cela j'utilise le code suivant

Dim Cbar As CommandBar
Set Cbar = CommandBars.Add(Name:="Mon Menu", Position:=msoBarTop, Temporary:=True)
With Cbar
    .Visible = True
    .Protection = msoBarNoMove + msoBarNoCustomize
End With

mais je me plante sur la ligne

Set Cbar = CommandBars.Add(Name:="Mon Menu", Position:=msoBarTop, Temporary:=True)

"Mon Menu" son nom
msoBarTop pur qu'il soit en haut à gauche
Temporary: = True pour rendre ma barre temporaire et la quitter en même temps que mon fichier

Salut @Jacky,

Je ne suis pas sûr de bien cerner le problème : je n'ai jamais utilisé ces barres personnalisées. Cependant en testant j'ai remarqué que si je relançais ma macro 2x, alors il y a effectivement un bug lors de la commande Add. C'est normal : tu as déjà créé précédemment une barre avec le même nom. Il faut donc d'abord la supprimer. C'est le même problème que quand on veut créer une nouvelle feuille avec un nom déjà utilisé.

Si c'est bien ça le problème, alors tu peux corriger comme ceci :

Sub a()
  ' suppression de la commandbar menu existante
  Dim cb As CommandBar
  For Each cb In Application.CommandBars
    If cb.Name = "Mon Menu" Then
      cb.Delete
      Exit For
    End If
  Next cb

  Dim Cbar As CommandBar
  Set Cbar = CommandBars.Add(Name:="Mon Menu", Position:=msoBarTop, Temporary:=True)
  With Cbar
      .Visible = True
      .Protection = msoBarNoMove + msoBarNoCustomize
  End With
End Sub

Bonjour Saboh,

J'ai rajouté le petit morceau de code qui permet de supprimer la commande si elle existe
Je n'ai plus de bug mais rien ne se passe ??????

Je vais te faire parvenir, en fin de journée, non pas le fichier complet car il est énorme et contient beaucoup de données personelles, mais je vais créer un petit fichier qui pourra nous permettre d'étudier ce problème de plus prêt

Bien cordialement et @+ (ce soir ou demain)

PS : je m'en veux car j'ai créé ce fichier dans les années 2008 / 2010 et il marchait à merveille. Que c'est-il passé, je ne sais pas

Pour info, avec le code actuel ta barre ne s'affiche pas car elle est vide. Il faut lui ajouter des controles, par exemple des boutons, pour qu'elle s'affiche.

Ci-après, en reprenant ton code et en ajoutant un bouton, avec les paramètres actuels ta commandBar apparaitra sous l'onglet "Add-ins" de ton Excel. Ci-après un code avec une barre qui apparait et un bouton.

Sub a()
  ' suppression de la commandbar menu existante si elle existe
  Dim cb As CommandBar
  For Each cb In Application.CommandBars
    If cb.Name = "Mon Menu" Then
      cb.Delete
      Exit For
    End If
  Next cb

  With CommandBars.Add(Name:="Mon Menu", Position:=msoBarTop, Temporary:=True)
      ' ajout d'un bouton pour rendre la barre visible
      ' le numero en 2e argument = "ID" correspond aux icones deja existantes de Excel
      ' 3 pour l'icone de sauvegarde, si aucun numero : bouton invisible
      With .Controls.Add(MsoControlType.msoControlButton, 3)
        .Caption = "Mon bouton"
        .OnAction = "MacroExemple"
      End With
      .Visible = True
  End With
End Sub

Sub MacroExemple()
  MsgBox "Salut. Tu as cliqué le bouton qui fait semblant de sauvegarder"
End Sub

Bonjour Saboh,

Comme je te l'ai dit précédemment j'avais créé ce ficher vers 2008 donc avec une version antérieure de Excel. De ce fait avec ma version actuelle je n'obtiens plus ce que j'avais au préalable. J'ai donc essayé d'y remédier mais me heurte à quelques difficultés.

Mon but est de remplacer la barre des Menus par une barre de Menu personalisée. Pour se faire j'utilise bien le code que j'avais écrit et qui est pratiquement celui que tu me proposes, mais à défaut de supprimer la barre des Menus et de la remplacer par ma barre de Menu personnalisée, je ne fais qu'inscrire dans la barre des Menus un onglet supplémentaire "Compléments" . En cliquant sur cet onglet j'accède bien à ma barre personnalisée mais dans le ruban (voir les photos ci dessous)

image image

Donc comme tu peux le constater mon Menu ne remplace pas le Menu d'origine comme c'était le cas avec une vieille version d'Excel, mais modifie mon ruban, ce qui est logique

Bref ce n'est pas bien grâve mais je reste sur ma faim

Encore un grand merci pour avoir consacré un peu de temps à ma question. Au plaisr

Salut @Jacky,

Oui tu as tout à fait raison, ça a pu changer. L'explication ici : Présentation du ruban Office Fluent | Microsoft Learn

Comme je te l'ai dit moi je n'ai jamais trop touché à cela. Mais de ce que j'ai compris, Microsoft a décidé de revoir la gestion de l'interface en passant par de nouvelles procédures, basées sur le XML. Le VBA est encore compatible mais ça a un petit peu changé et maintenant tu retrouves tes ajouts dans l'onglet Compléments ("Add-in" en anglais). Malheureusement je ne pourrais pas trop t'aider si tu veux te lancer dans la version "moderne" avec XML, mais si l'utilisation de l'onglet complément te convient je pense que c'est une alternative simple et pratique.

Au plaisir

Rebonjour Saboh,

Tu dis :

mais si l'utilisation de l'onglet complément te convient je pense que c'est une alternative simple et pratique.

et je suis complètement d'accord avec toi, si ce n'est que j'ai un grand défaut, je veux toujours créer ce à quoi je pense et malheureusement parfois il m'arrive de penser au presque irréalisable. Je dis presque irréalisable car je crois que l'irréalisable n'est pas ""concevable" avec Excel (?)

J'ai bien pensé à un truc un peu tiré par les cheveux : on personnalise le ruban d'origine en supprimant tous les onglets d'origine et on y intègre de nouveaux onglets, ceux que l'on trouve dans "Compléments". Est ce correct ou non ... ???
Je vais m'amuser à chercher

Je te souhaite une bonne journée et au plaisir de te retrouver sur le Forum

Jacky

Oui tu peux faire comme ça, mais fais attention à savoir comment les remettre (à la fin de la macro typiquement). J'ajouterai que si c'est pour ton usage perso c'est ok de bidouiller, mais si tu me passais une macro qui me bouzille ma barre je serai énervé !

Après comme je te l'ai dit moi j'y connais rien à ce ruban, mais je te conseille d'y aller avec précaution, dans un fichier de test. Et d'exporter tes paramètres de barre (si tu les as personnalisés) avant au cas où (Fichier > Options > Personnaliser le ruban > Exporter/Importer).

Saboh,

mais si tu me passais une macro qui me bouzille ma barre je serai énervé !

comme je te comprends
Donc j'essaie de trouver une solution pour pouvoir cacher des "ComandBar" et surtout pouvoir les rétablir quand je le veux
Pour cela j'ai fait quelques recherches et ai trouvé un début de solution (voir le ficher joint)
Toutefois si ça marche à merveille pour certaines barres il ya erreur, que je ne comprends pas, pour d'autres

je vais continuer à me documenter

20nouveau-menu.xlsm (36.10 Ko)
Rechercher des sujets similaires à "creer menu personnalise"