# VBA & MS Office automation A series of 10 article(s), in reading order. # MS Office - Comment créer un ruban dans Excel > Guide pas à pas pour créer un ruban Excel personnalisé en VBA. Utilisez XML et VBA pour ajouter vos propres onglets, groupes, boutons et fonctionnalités à vos classeurs Excel. --- ![MS Office - Comment créer un ruban dans Excel](/img/v2/ribbon.webp) **TL;DR** Cet article montre comment construire un ruban Excel personnalisé avec l'outil gratuit `CustomOfficeUIEditor` et du XML écrit à la main (le manifeste `customUI14.xml`) : définir des onglets, des groupes et des contrôles comme des boutons ou des zones de saisie, relier leurs événements `onAction`/`onChange` à des subroutines VBA de callback, et trouver les identifiants d'icônes standard `imageMso` à utiliser sur les boutons. Dans cet article, nous allons apprendre à créer un ruban (c'est-à-dire une barre d'outils) dans Microsoft Excel. Nous allons créer notre ruban personnalisé pour un fichier Excel et l'enregistrer dans le fichier, afin que nos utilisateurs disposent d'une interface agréable et intuitive pour travailler avec notre feuille de calcul. *Un ruban n'est utile que si ses boutons font quelque chose d'intéressant. Pour un exemple concret, [MS Excel - Se connecter à une base de données SQL Server, exécuter une query et récupérer les résultats](/blog/vba-excel-sql-server-part-2) vous donne le VBA derrière un bouton « Rafraîchir les données ».* ## Ce que nous allons construire {#what-were-going-to-build} Voici le résultat final : notre propre onglet, dans Excel, avec un bouton et un champ de saisie. ![Smiley\_and\_edit](./images/Smiley_and_edit.webp) Le bouton est relié à une subroutine VBA : cliquer dessus exécute votre code. ![Button clicked](./images/Button_clicked.webp) L'ensemble tient dans une quinzaine de lignes de XML stockées dans le classeur. Quiconque ouvre votre fichier `.xlsm` obtient le ruban ; il n'y a rien à installer sur sa machine. ## Pourquoi ça fonctionne {#why-it-works} * Un fichier `.xlsx` / `.xlsm` n'est pas un blob binaire : c'est une archive ZIP contenant des fichiers et des dossiers. Vous pouvez en ouvrir un avec 7-Zip et regarder ce qu'il y a dedans. * Ajouter un ruban revient à ajouter un fichier à cette archive : un manifeste appelé `customUI14.xml`, qui décrit en XML les onglets, les groupes et les contrôles. * Quand MS Office ouvre le classeur, il lit ce manifeste, dessine le ruban et, à chaque clic, appelle la subroutine VBA nommée dans l'attribut `onAction` du contrôle. Votre macro et votre interface sont donc stockées dans un seul et même fichier. ## Téléchargez l'éditeur gratuitement {#download-the-editor-for-free} Pour pouvoir créer « facilement » un ruban dans MS Office *(dans une interface qui n'est pas WYSIWYG)*, j'utilise un outil très ancien appelé `CustomOfficeUIEditor`. *Jusqu'ici, je n'ai trouvé aucun autre outil gratuit pour faire ça.* L'outil peut être téléchargé depuis . `CustomOfficeUIEditor` est un outil externe (en dehors de MS Office) qui peut ouvrir un fichier Office et y ajouter les fichiers nécessaires à la création d'un ruban. Il est possible de le faire sans éditeur, par exemple avec un logiciel comme 7-Zip, puisqu'un fichier `.xlsx` / `.xlsm` est une archive avec des fichiers et des dossiers. Pour cet exercice, extrayez tous les fichiers et dossiers dans votre dossier `C:\tmp\ribbon` (créez-le). ## Créez un fichier vide {#create-an-empty-file} Comme support pour cet article, créez un nouveau fichier vide dans Excel, appelé `Ribbon.xlsm`, dans votre dossier `C:\tmp\ribbon` (ou ailleurs). ![Excel Ribbon.xlsm](./images/Excel_empty_file.webp) > **Créez juste un fichier vide:** > > Pour l'instant, rien d'autre à faire que Fichier - Nouveau - Enregistrer sous - Type de fichier - Classeur Excel (prenant en charge les macros). ## Ajoutez un ruban dans MS Office {#add-a-ribbon-in-ms-office} L'outil `CustomOfficeUIEditor` n'est pas très convivial : vous devrez taper vous-même le XML du ruban. Ce XML est aussi appelé *le fichier manifeste*. Par défaut, un document MS Office standard ne contient aucun ruban. Donc, quand vous ouvrez un tel fichier avec l'outil `CustomOfficeUIEditor`, vous obtenez un document vide. *Outlook est l'exception : là, aucun XML n'est nécessaire puisque la boîte de dialogue intégrée `Personnaliser le ruban` peut héberger un bouton de macro, comme dans [Microsoft Outlook - VBA - Save emails as PDF](/blog/outlook-vba-pdf).* Démarrez `CustomOfficeUIEditor` et ouvrez votre fichier `Ribbon.xlsm` : ![UI - Open Ribbon.xlsm](./images/UI_open.webp) > **Fermez-le d'abord s'il est encore ouvert dans Excel:** > > Quand vous utilisez l'éditeur, le fichier ne peut pas être ouvert dans Excel en même temps ! Imaginez la situation suivante : le classeur est ouvert à la fois dans l'éditeur et dans Excel. Vous faites beaucoup de modifications dans Excel, passez à l'éditeur et changez le manifeste. En sauvegardant le fichier dans l'éditeur, vous perdrez toutes les modifications faites dans Excel donc... prudence. La première fois, vous devrez ajouter un nouveau ruban : cliquez sur le menu `Insert` et sélectionnez `Office 2010 Custom UI Part`. ![Insert](./images/UI_Editor_Insert.webp) Vous obtiendrez alors un écran comme celui-ci : ![Office 2010 Custom UI Part](./images/UI_Editor_Insert_UI14.webp) Quand `customUI14.xml` est sélectionné (comme illustré ci-dessus), cliquez quelque part dans le volet de droite et commencez à écrire votre XML. Maintenant, dans le volet de droite, copiez/collez simplement la source XML ci-dessous : **customUI14.xml** ```xml