Les barres de commandes des compléments ne sont pas affichées ou supprimées dans Excel 2013 ou version ultérieure lorsque vous chargez ou déchargez les compléments
Symptômes
Lorsque vous utilisez des compléments dans Microsoft Excel 2013 ou une version ultérieure, vous rencontrez les problèmes suivants.
Problème 1
Lorsque vous chargez un complément Excel (xlam) ou un complément Excel 97-2003 (xla), les barres de commandes du complément ne s’affichent pas automatiquement. Au lieu de cela, vous devez fermer tous les classeurs, puis redémarrer Excel pour afficher les barres de commandes.
Problème 2
Lorsque vous déchargez un complément Excel (.xlam) ou un complément Excel 97-2003 (.xla) ou fermez un classeur avec macro Excel (.xlsm) qui contient des barres de commandes, les barres de commandes du complément ou du classeur prenant en charge les macros ne sont pas supprimées de tous les classeurs ouverts.
Cause
Ces problèmes se produisent en raison de l’interface SDI (Single Document Interface) dans Excel 2013 ou version ultérieure. Lorsque vous utilisez un objet CommandBar hérité pour créer des éléments de menu, les éléments de menu sont ajoutés à l’onglet Add-Ins du ruban. Dans Excel 2013 ou version ultérieure, chaque classeur a son propre ruban. Par conséquent, lorsque vous chargez ou déchargez des compléments après la création du ruban du classeur, le ruban n’est pas mis à jour.
L’exemple de code suivant crée des éléments de menu à l’aide de l’objet CommandBar :
Application.CommandBars("Worksheet Menu Bar").Controls.Add Type:=msoControlPopup
Solution de contournement
Pour contourner le problème 1, fermez tous les classeurs ouverts, puis redémarrez Excel.
Pour contourner le problème 2, utilisez l’une des méthodes suivantes :
Remplacez les barres de commandes par un élément de ruban (XML) dans le complément ou le classeur prenant en charge les macros. Pour plus d’informations sur le ruban (XML), consultez Ribbon XML.
Dans le Workbook_BeforeClose’événement du complément ou du classeur prenant en charge les macros, effectuez une boucle dans toutes les fenêtres ouvertes et supprimez les barres de commandes. Voici un exemple de code :
For Each wnd In Application.Windows wnd.Activate Application.CommandBars("<ToolbarName>").Delete Next wnd
Remarque
Dans ce code, l’espace réservé <ToolbarName> représente un nom de barre de commandes.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour