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 Withmais 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 SubBonjour 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 SubBonjour 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)
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