Personalisation du ruban

alexmesle

XLDnaute Nouveau
Bonjour a tous,
Nouveau sur ce forum, désolé si cette question à été posée !!!
Je cale sur un problème de personnalisation du ruban.

j'ais mis 6 bouton pour aller sur des feuilles précises. Le "bouton id" à le même nom que la feuille de destination
pas d'erreur à la validation mais dans excel cela ne fonctionne pas.

est-il obligatoire de créer une macro dans le classeur ?

quel syntaxe mettre ?

Merci pour votre aide

Le début du code est ci-après :
Le nom du classeur est :Gestion 2012-2013.xlsm

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="OSMOSE" label="OSMOSE">
<group id="GESTION" label="GESTION OSMOSE">
<button id="VENTE" label="Vente et Caisse" size="large" imageMso="FunctionsFinancialInsertGallery" onAction="'Vente" />
<button id="REL_BANK" label="Relevés Banque" size="large" imageMso="AttachMenu" onAction="REL_BANK" />
<button id="HA_STOCK" label="Achats et Stock" size="large" imageMso="LabelInsert" onAction="HA_STOCK" />
<button id="DRH" label="DRH / Social" size="large" imageMso="MeetingsWorkspace" onAction="DRH" />
<button id="ANALYSE" label="Tableau de Bord" size="large" imageMso="WatchWindow" onAction="ANALYSE" />
<button id="GRAPH" label="Graphique OSMOSE" size="large" imageMso="ChartInsert" onAction="GRAPH" />
</group[/SIZE]
 

Misange

XLDnaute Barbatruc
Re : Personalisation du ruban

Bonjour

Ce que tu as écrit crée les boutons mais n'indique nullement à excel d'aller sur une feuille X d'un classeur Y.
Franchement modifier le ruban programmatiquement dan excel ce n'est pas très intuitif.
D'excellents tutos (en anglais simple) par Ron de Bruin, MVP néerlandais ici
Change the Ribbon in Excel 2007 or Excel 2010

Mais le plus simple c'est quand même de mettre les boutons dans le classeur
ou de mettre des liens hypertexte renvoyant vers les feuilles d'intérêt sur chaque page importante du classeur (avec un sommaire en première page par exemple)
 

alexmesle

XLDnaute Nouveau
Re : Personalisation du ruban

Merci pour les infos de carcharodon-carcharias.

Mon classeur à plus de 400 feuille excel, si je passe par le ruban pour les secteur principaux c'est dans le but de réduire la taille de mon classeur. Le fichier pèse 5 Mo.
De plus pour la navigation entre les feuilles c'est plus simple....
Merci
 

Misange

XLDnaute Barbatruc
Re : Personalisation du ruban

Le fait de mettre les boutons dans le menu ne réduira en rien la taille de ton fichier.
Pour la navigation entre les feuilles c'est effectivement une bonne solution de faire cela dans le ruban mais autant avec 2003 et antérier c'était facile à faire autant maintenant comme tu peux t'en rendre compte c'est un peu galère.
En fait un truc un peu bourrin mais qui marche très bien c'est de faire les menus... dans excel 2003 puis d'ouvrir le classeur dans excel 2007 :) tu retrouves tes boutons et menus dans l'onglet complément

Je te propose 3 solutions alternatives à télécharger ici pour essayer et voir si ça te convient
Ce lien n'existe plus
Ce lien n'existe plus
Ce lien n'existe plus
 

MichD

XLDnaute Impliqué
Re : Personalisation du ruban

Bonjour Misange,

| mais qui marche très bien c'est de faire les menus... dans excel 2003
| puis d'ouvrir le classeur dans excel 2007


Je pense que tu sais déjà, on peut ajouter directement une barre des menus directement dans
un classeur 2007/2010 et comme tu le mentionnes le retrouver sous l'onglet Complément.

À titre d'exemple, voici l'ancien menu d'Excel 2003 que l'on peut ajouter dans les récentes versions

VB:
Sub Recréer_Ancien_Menu()
Dim MichD As CommandBar

On Error Resume Next
'Supprime la barre "MichD" si elle existe
Application.CommandBars("MichD").Delete

'Créer une barre de menu personnalisée
Set MichD = Application.CommandBars.Add("MichD", , True)

'copie les menus dans la nouvelle barre des menus
With CommandBars("Built-in Menus")
     .Controls("&Fichier").Copy MichD
     .Controls("&Edition").Copy MichD
     .Controls("&Affichage").Copy MichD
     .Controls("&Insertion").Copy MichD
     .Controls("F&ormat").Copy MichD
     .Controls("&Outils").Copy MichD
     .Controls("&Données").Copy MichD
     .Controls("&Fenêtre").Copy MichD
     .Controls("&?").Copy MichD
   End With
'Rendre visible la nouvelle barre des menus
'Elle sera disponible sous l'onglet "Complément" de
'la barre des menus dans les versions Excel 2007 et 2010
Application.CommandBars("MichD").Visible = True
End Sub
 

MJ13

XLDnaute Barbatruc
Re : Personalisation du ruban

Bonjour à tous

Wouah, MichD, c'est un truc de Ouf que tu nous a fait :eek:. En plus il y a tout qui marche comme sur XL2003 :confused:.

Je savais, qu'il y avait des utilitaires qui le faisait mais de la à le faire avec quelques lignes de codes, Chapeau bas . Merci beaucoup :).
 

MichD

XLDnaute Impliqué
Re : Personalisation du ruban

Merci!

Mais si tu veux utiliser cela pour que ce soit disponible dans tous les classeurs que tu ouvres,

Tu copies cette procédure dans un module standard d'un classeur vierge et tu utilises
l'événement "Workbook_Open" pour appeler la procédure.

Profite de l'occasion que la fenêtre VBA soit ouverte pour modifier le nom du projetVBA
de ce classeur. C'est sous ce nom que tu retrouveras plus tard, ta macro complémentaire.
Pour ce faire, tu sélectionnes le projetVBA et tu modifies la propriété Name.

Il ne te reste plus qu'à enregistrer le fichier comme fichier de macros complémentaires (.xlam)
en t'assurant d'en placer une copie dans ce répertoire : (Windows 7 et Office 2010)

C:\Users\Ton profil\AppData\Roaming\Microsoft\AddIns

Pour que la barre des menus soit disponibles, il ne te reste plus qu'à cocher la macro complémentaire
(Fichiers / Options / Compléments / complément Excel / atteindre et tu coches la macro complémentaire


Pour ceux que la chose intéresse, tu peux faire la même chose avec Word:

Dans la procédure, tu n'as qu'à modifier le nom des menus des lignes inhibées de la
procédure par les noms des menus de la version Word 2003.

Le principe est similaire pour PowerPoint...etc!

VB:
Sub Recréer_Ancien_Menu()
 Dim MichD As CommandBar
 
On Error Resume Next
 'Supprime la barre "MichD" si elle existe
 Application.CommandBars("MichD").Delete
 
'Créer une barre de menu personnalisée
 Set MichD = Application.CommandBars.Add("MichD", , True)
 x = CommandBars(1).Name
 
'copie les menus dans la nouvelle barre des menus
 With CommandBars("Menu bar")
      .Controls("&Fichier").Copy MichD
      .Controls("&Edition").Copy MichD
      .Controls("&Affichage").Copy MichD
      .Controls("&Insertion").Copy MichD
      '.Controls("F&ormat").Copy MichD
      .Controls("&Outils").Copy MichD
      '.Controls("&Données").Copy MichD
      .Controls("&Fenêtre").Copy MichD
      .Controls("&?").Copy MichD
    End With
 'Rendre visible la nouvelle barre des menus
 'Elle sera disponible sous l'onglet "Complément" de
 'la barre des menus dans les versions Excel 2007 et 2010
 Application.CommandBars("MichD").Visible = True
 End Sub
 
Dernière édition:

MichD

XLDnaute Impliqué
Re : Personalisation du ruban

Cela peut certainement aider ceux qui ont des classeurs volumineux.

N.B. Un petit détail, dans ton formulaire à l'ouverture, les 2 combobox devraient afficher 1 ou
le nombre de feuilles visibles car il est impossible d'avoir 0 feuille affichée dans un classeur,
il en faut au moins une.
;-)
 

MichD

XLDnaute Impliqué
Re : Personalisation du ruban

| à choisir le nombre d'onglets visibles à droite et à gauche de la feuille active

Ok, j'ai regardé très rapidement.


Une petite dernière pour ceux qui voudraient créer la barre des menus d'Excel 2003
selon la langue de l'application, français, anglais...

VB:
Sub Creer_Menu_Excel_2003()
On Error Resume Next
'Supprime la barre "MichD" si elle existe
Application.CommandBars("MichD").Delete

'Créer une barre de menu personnalisée
Set MichD = Application.CommandBars.Add("MichD", , True)

'copie les menus dans la nouvelle barre des menus
With Application.CommandBars("Built-in Menus")
     .FindControl(ID:=30002).Copy MichD
     .FindControl(ID:=30003).Copy MichD
     .FindControl(ID:=30004).Copy MichD
     .FindControl(ID:=30005).Copy MichD
     .FindControl(ID:=30006).Copy MichD
     .FindControl(ID:=30007).Copy MichD
     .FindControl(ID:=30008).Copy MichD
     .FindControl(ID:=30009).Copy MichD
     .FindControl(ID:=30010).Copy MichD
   End With
'Rendre visible la nouvelle barre des menus
'Elle sera disponible sous l'onglet "Complément" de
'la barre des menus dans les versions Excel 2007 et 2010
Application.CommandBars("MichD").Visible = True

End Sub
 

MichD

XLDnaute Impliqué
Re : Personalisation du ruban

Pour tes archives Misange, cette macro recrée la barre de menu Word 2003 dans Word 2010.
On peut utiliser la même pour PowerPoint. On retrouve sur le Net, beaucoup d'add-on payants
pour obtenir ceci.

Il ne reste plus qu'à la copie dans un module standard de l'application sélectionnéé.

En fait, la seule différence entre la procédure pour Excel et celle-ci applicable pour
Word et PowerPoint,

Pour Excel, il faut utiliser cette ligne de code :
With CommandBars("Built-in Menus")

Pour Word et PowerPoint,
With Application.CommandBars("Menu bar")


Le menu est créé selon la langue de l'application
'------------------------------------------------
Sub Creer_Menu_Word_2003() 'Ou PowerPoint 2003
On Error Resume Next
'Supprime la barre "MichD" si elle existe
Application.CommandBars("MichD").Delete

'Créer une barre de menu personnalisée
Set MichD = Application.CommandBars.Add("MichD", , True)

'copie les menus dans la nouvelle barre des menus
With Application.CommandBars("Menu bar")
.FindControl(ID:=30002).Copy MichD
.FindControl(ID:=30003).Copy MichD
.FindControl(ID:=30004).Copy MichD
.FindControl(ID:=30005).Copy MichD
.FindControl(ID:=30006).Copy MichD
.FindControl(ID:=30007).Copy MichD
.FindControl(ID:=30008).Copy MichD
.FindControl(ID:=30009).Copy MichD
.FindControl(ID:=30010).Copy MichD
End With
'Rendre visible la nouvelle barre des menus
'Elle sera disponible sous l'onglet "Complément" de
'la barre des menus dans les versions Word ou Powerpoint 2007 et 2010
Application.CommandBars("MichD").Visible = True

End Sub
'------------------------------------------------
 

Yaloo

XLDnaute Barbatruc
Re : Personalisation du ruban

Bonjour alexmesle, le forum,

Dans le fichier ci-joint, je pense que ce que tu y trouvera ce que tu cherche.

Bien que j'ai pris de bonnes idées dans les macros de MichD

A+
 

Pièces jointes

  • alexmesle.xlsm
    18.8 KB · Affichages: 142
  • alexmesle.xlsm
    18.8 KB · Affichages: 146
  • alexmesle.xlsm
    18.8 KB · Affichages: 151

Dull

XLDnaute Barbatruc
Re : Personalisation du ruban

Salut le Fil :)

Une très légère amélioration sur le fichier de Yaloo: A l'ouverture du Fichier ci-joint, l'onglet d'ouverture par défaut sera OSMOSE et non Accueil

Tiré du Site de Éric Renaud

Bonne Journée
 

Pièces jointes

  • alexmesle-2.xlsm
    18.7 KB · Affichages: 102
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : Personalisation du ruban

Salut Dull, alexmesle,

Tu peux aussi cacher les onglets Excel à l'ouverture et créer un bouton dans ton onglet personnalisé pour les afficher ou les cacher.

A te relire.

Yaloo
 

Pièces jointes

  • alexmesle.xlsm
    20.3 KB · Affichages: 112
  • alexmesle.xlsm
    20.3 KB · Affichages: 118
  • alexmesle.xlsm
    20.3 KB · Affichages: 120

Roland_M

XLDnaute Barbatruc
Re : Personalisation du ruban

un grand bonjour à vous tous,

petit rectificatif, MichD, il semblerait qu'il y a erreur sur l'index 30008 !? ce serait 30011 !
très certainement une erreur d'inattention, à la vitesse ou tu réponds ça ne m'étonne pas !
en tous les cas encore un grand merçi à toi !

With Application.CommandBars("Built-in Menus")
.FindControl(ID:=30002).Copy MichD
.FindControl(ID:=30003).Copy MichD
.FindControl(ID:=30004).Copy MichD
.FindControl(ID:=30005).Copy MichD
.FindControl(ID:=30006).Copy MichD
.FindControl(ID:=30007).Copy MichD
.FindControl(ID:=30008).Copy MichD ' <<<<<<<< ici c'est 30011 !?
.FindControl(ID:=30009).Copy MichD
.FindControl(ID:=30010).Copy MichD
End With
 

Discussions similaires

Réponses
4
Affichages
821

Statistiques des forums

Discussions
312 074
Messages
2 085 067
Membres
102 770
dernier inscrit
mathieu.lemaitre