Easy-Micro

ESPACEMEMBRE VBA
Ruban 2007

Gestion en VBA du ruban Excel 2007

Gérer le Ruban d'Excel 2007 est le gros morceau VBA depuis Office 2007.

Ce qui était faisable facilement avec les versions précédentes, en ce qui concerne la personnalisation des menus et/ou des barres d'outils, ne l'est plus avec Office 2007.

VBA Barre d'outils 2003
Il est toujours possible d'utiliser les barres d'outils et les menus personnalisés de vos anciens classeurs, et en créer de nouveaux par VBA, mais ils seront accessibles uniquement depuis l'onglet Complément.

Les barre d'outils "anciennes formules" doivent être attachées au classeur Excel. C'est à dire que l'on dois avoir une macro Workbook_open qui crée la barre et une workbook_beforeClose qui détruit la barre. Il suffi ensuite d'ouvrir le fichier avec Excel 2007 pour que la "barre" et les boutons associés s'affichent dans un nouvel onglet "Complément".

VBA Ruban 2007
Le ruban 2007 (comme le pack) est développé en Open XML (comme le format Opendocument d'OpenOffice). Pour modifier le ruban, vous devez enregistrer vos classeurs au format .xlsm (format xml prenant en charge les macros) et y ajouter un fichier xml (généralement nommé customUI.xml par convention) qui contient les instructions de personnalisation.

Le fichier customUI.xml
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">

<tabs>
   <tab id="OngletPerso" label="OngletPerso" visible="true">
   </tab>
</tabs>

</ribbon>
</customUI>


Pour modifier ce fichier, on peut utiliser l'utilitaire customUI Editor

Pour réutiliser les contrôles prédéfinis du Ruban, vous devez connaître leur identificateur (idMso/imageMso).
Cliquez sur le bouton "Office".
Cliquez sur le bouton "Options Excel".
Utilisez le menu "Personnaliser".
Le volet permet d'accéder à tous les contrôles (visibles et masqués).
Les identificateurs apparaissent dans une info-bulle lorsque vous passez le curseur sur les icônes.

Voir la liste des identificateurs sur 2007 Office System Document: Lists of Control IDs

Le mode opératoire consiste à créer un fichier xml qui va contenir les paramètres de personnalisation, puis à insérer ce fichier dans le classeur Excel préalablement sauvegardé au format xlsm ou xlam.

Pour commencer, récupérez le fichier xml de personnalisation "customUI.xml" ci-dessus et sauvegardez le sur votre PC au format xml, à l'emplacement de votre choix. Ensuite, fermez le fichier.

Ouvrez un nouveau classeur Excel et enregistrez le sous l'extension .xlsm (format openXML avec macros). Refermez le classeur.

Recherchez le classeur sur votre PC et ajoutez lui l'extension .zip. Ensuite dézippez le fichier.

Ouvrez le dossier dézippé. Ajoutez un répertoire nommé customUI dans le répertoire dézippé.
Faites glisser le fichier customUI.xml dans ce dossier.

Vous allez maintenant créer une relation entre le classeur et le fichier xml:
Démarrez le Bloc-notes.
Utilisez le menu Fichier/Ouvrir.
Ouvrez le fichier .rels du fichier Zip, depuis le bloc-notes :
Dans le champ "Fichier de type", sélectionnez l'option "Tous les fichiers".
Recherchez et ouvrez le fichier .rels dans le dossier dézippé (dans le sous répertoire _rels).
Ajoutez-y la balise ci-dessous.

<Relationship Id="rId10" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="/customUI/customUI.xml"/>

Vous allez obtenir un fichier de ce style :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">

<Relationship Id="rId10" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="/customUI/customUI.xml"/>

<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>

<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>

<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>

</Relationships>

Sauvegardez et refermez le fichier .rels.
Rezippez le dossier complet.
Supprimez l'extension .zip et renommez le classeur si nécessaire.
Ouvrez le classeur. Vous constatez qu'un nouvel onglet nommé "OngletPerso" est ajouté dans le ruban.
L'onglet est vide car il s'agit ici d'un simple exemple de principe. Vous découvrirez de nombreuses démos sur Developpez.com.

Source : Developpez.com

VBA Réduire le ruban à l'ouverture du classeur (Astuce VBA)
Voici, ci-dessous, une pseudo-solution qui permet de simuler le racourci clavier Ctrl+F1 qui réduit le ruban 2007. Procédure à coller dans une page de code évènementielle "Thisworkbook" avec l'évènement "open", soit dans un "workbook_open()"

Option Explicit

Private Declare Sub keybd_event Lib "user32" ( _
ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)



Private Sub Workbook_Open()
Application.DisplayFullScreen = False
boolResult = False

'Définit les caractères utilisables pour la saisie du mot de passe
Tableau = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", _
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", _
"W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" )
Sheets("Feuil1" ).Select
ActiveWindow.DisplayWorkbookTabs = False

'Simule Ctrl+F1
Const VK_CONTROL = &H11
Const VK_F1 = &H70
Const KEYEVENTF_KEYUP = &H2

keybd_event VK_CONTROL, 0, 0, 0
keybd_event VK_F1, 0, 0, 0
keybd_event VK_F1, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
End Sub


< Page précédente VBA Page suivante >