Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA Excel] Comment vérifier qu'un classeur contient un bouton sur la barre d'accès rapide ?

22 réponses
Avatar
JièL
Salutatoussses

dans la famille du mec qui pose des QALC je voudrais JièL.
Bonne pioche ;-)

Comment puis-je vérifier que la barre d'accès rapide contient un bouton
qui lance une macro d'un classeur spécifique ?

J'ouvre via VBA un classeur, ce dernier contient une macro et un bouton
qui lance cette macro doit apparaitre dans la barre d'accès rapide lors
du changement de CE classeur (pas d'un autre).
Comment puis-je vérifier que le bouton est bien là et lance bien la
macro voulu ?

Merci d'avance

--
JièL Questionneur A La Con-pliqué

10 réponses

1 2 3
Avatar
JièL
A titre d'info, le xml est dans le fichier .xlsm dans le dossier
UserCustomisation

Merci

--
JièL

Le 17/05/2016 à 11:34, JièL a écrit :
Salutatoussses

dans la famille du mec qui pose des QALC je voudrais JièL.
Bonne pioche ;-)

Comment puis-je vérifier que la barre d'accès rapide contient un bouton
qui lance une macro d'un classeur spécifique ?

J'ouvre via VBA un classeur, ce dernier contient une macro et un bouton
qui lance cette macro doit apparaitre dans la barre d'accès rapide lors
du changement de CE classeur (pas d'un autre).
Comment puis-je vérifier que le bouton est bien là et lance bien la
macro voulu ?

Merci d'avance

Avatar
MichD
Bonjour,

C'est bien parce que c'est toi, parce qu'habituellement, je ne réponds
pas à ces questions de personnalisation de barre d'outils pour les
versions Excel 2007 et plus.

La personnalisation de "Quick Access toolbar" (barre d'accès rapide)
depuis 2010 est contenue dans un fichier nommé : Excel.officeUI qui est
situé là : "C:UsersTon profilAppDataLocalMicrosoftOffice". Pour
Excel 2007, le fichier s'appelle Excel.qat.

Tu as remarqué que ce fichier est dans ton profil d'usager. En
conséquence, chaque usager a un "Excel.officeUI" qui lui est propre.

Lorsque tu ouvres Excel / fichier / Options / barres d'outils "Accès
Rapide", dans le coin inférieur droit, tu as un bouton permettant
d'importer ou d'exporter le fichier de personnalisation.

À cette adresse, tu trouveras de l'information supplémentaire sur
l'importation- exportation de ce fichier ainsi qu'un petit exemple de
script pour ce type de problématique...
https://msdn.microsoft.com/en-us/library/office/ee704589(v=office.14).aspx#odc_office14_DeployCustomRibbon_ExampleofficeUICustomizationFile

Pour faire simple, il est possible de traiter en vba ce fichier
"Excel.officeUI" comme un fichier "Texte", de l'ouvrir comme tel et de
vérifier si l'appellation de ton bouton de commande portant un "nom
original" existe dans le fichier.

Évidemment, si tu décides de substituer le fichier "Excel.officeUI" sur
un ordinateur autre que le tien, comme tu dois faire cela avant d'ouvrir
Excel, tu as un besoin d'un petit script pour déplacer le fichier
original dudit usager pour le remplacer par le tien. La même chose
s'applique après la fermeture d'Excel pour remettre le fichier original.


MichD
Avatar
Geo
Bonjour

A titre d'info, le xml est dans le fichier .xlsm dans le dossier
UserCustomisation



Merci d'avoir donné la réponse à ta question.
mdr
Avatar
MichD
En supplément,

Pour faire en sorte que tu retrouves la barre d'outils QAT toujours dans
le même état, il est possible de créer un fichier de macros
complémentaires (.xlam) pour cela. À partir d'un tout nouveau fichier
Excel, tu personnifies la barre QAT comme tu le désires et tu
l'enregistres comme un fichier de macros complémentaires (.xlam).

Attention : Lorsque tu ouvres Excel / fichier / Options / barres
d'outils "Accès Rapide", dans la liste déroulante de droite, tu as le
choix entre "Ce classeur " et "Pour tous les documents". Évidemment, tu
dois retenir "pour ce classeur". N'oublie pas, les macros associées aux
boutons de commande ajoutés doivent être dans ce classeur (.xlam)

À l'ouverture d'un fichier quelconque, pour charger le fichier de macros
complémentaires, une macro comme celle-ci.

Sub test()
ThisWorkbook.VBProject.References.AddFromFile _
"c:Usersmichddocumentsqat.xlam"
End Sub

Pour le reste, il s'agit d'une simple gestion d'un fichier .xlam.


MichD
Avatar
JièL
Le 17/05/2016 à 13:51, Geo a écrit :
A titre d'info, le xml est dans le fichier .xlsm dans le dossier
UserCustomisation



Merci d'avoir donné la réponse à ta question.
mdr



Ben oui, mais non...
OK le fichier de personnalisation est bien dans le .xlsm, mais comment
lit-on son contenu -en VBA- vu que c'est un .zip déguisé en .xlsm ?

--
JièL
Avatar
JièL
Le 17/05/2016 à 13:35, MichD a écrit :
Bonjour,

C'est bien parce que c'est toi, parce qu'habituellement, je ne réponds
pas à ces questions de personnalisation de barre d'outils pour les
versions Excel 2007 et plus.



;-) merci, mais...

La personnalisation de "Quick Access toolbar" (barre d'accès rapide)
depuis 2010 est contenue dans un fichier nommé : Excel.officeUI qui est
situé là : "C:UsersTon profilAppDataLocalMicrosoftOffice". Pour
Excel 2007, le fichier s'appelle Excel.qat.



Voui, ça j'ai vu, mais, mon pb se situe DANS le fichier .xlsm lui même,
pas dans la personnalisation d'Excel.

Pour faire simple, il est possible de traiter en vba ce fichier
"Excel.officeUI" comme un fichier "Texte", de l'ouvrir comme tel et de
vérifier si l'appellation de ton bouton de commande portant un "nom
original" existe dans le fichier.



Si tu me dis que c'est aussi simple pour un .xlsm je prend !

Merci

--
JièL mersimé
Avatar
MichD
En supplément,

Pour faire en sorte que tu retrouves la barre d'outils QAT toujours dans
le même état, il est possible de créer un fichier de macros
complémentaires (.xlam) pour cela. À partir d'un tout nouveau fichier
Excel, tu personnifies la barre QAT comme tu le désires et tu
l'enregistres comme un fichier de macros complémentaires (.xlam).

Attention : Lorsque tu ouvres Excel / fichier / Options / barres
d'outils "Accès Rapide", dans la liste déroulante de droite, tu as le
choix entre "Ce classeur " et "Pour tous les documents". Évidemment, tu
dois retenir "pour ce classeur". N'oublie pas, les macros associées aux
boutons de commande ajoutés doivent être dans ce classeur (.xlam)

À l'ouverture d'un fichier quelconque, pour charger le fichier de macros
complémentaires, une macro comme celle-ci.

Sub test()
ThisWorkbook.VBProject.References.AddFromFile _
"c:Usersmichddocumentsqat.xlam"
End Sub

Pour le reste, il s'agit d'une simple gestion d'un fichier .xlam.


MichD

Avatar
MichD
En supplément du supplément,

Tu peux utiliser ces 2 événements pour charger le fichier .xlam et le
fermer selon le cas dans ledit classeur où tu veux voir ces boutons


Private Sub Workbook_Activate()
ThisWorkbook.VBProject.References.AddFromFile _
"c:Usersmichddocumentsqat.xlam"
End Sub

Private Sub Workbook_Deactivate()
Workbooks("qat.xlam").Close False
End Sub


MichD
Avatar
MichD
Si tu me dis que c'est aussi simple pour un .xlsm je prend !



Ce fichier "Excel.officeUI" contient la configuration courante des
modifications de la barre d'accès rapide et du ruban.

Le fichier "Excel.officeUI" est pour l'ensemble des fichiers Excel dans
la configuration d'un usager. Si tu as pris soin de demander à Excel
d'appliquer ce bouton seulement à ce classeur, même si tu sauvegardes le
fichier d'exportation discuté plutôt, un usager peut supprimer ce bouton
et la mise à jour du fichier d'exportation ne sera pas mise à jour
automatiquement. Tu devras consulter alors le fichier xlm du fichier
lui-même...(pas facile! ;-)))) Il n'existe aucune méthode en vba pour
créer ce fichier d'exportation qui refléterait la modification qu'un
usager a fait et à partir duquel tu pourrais effectuer une recherche.

Rien n'est simple avec les nouvelles barres d'outils dans Office depuis
2007.

MichD
Avatar
Geo
Bonjour

OK le fichier de personnalisation est bien dans le .xlsm, mais comment lit-on
son contenu -en VBA- vu que c'est un .zip déguisé en .xlsm ?



Oui, on peut dézipper en vba, j'ai ça dans mes macros word, ça doit
marcher aussi pour Excel.
L'ennui c'est que si le classeur à vérifier est le classeur où est le
code vba, cela revient à décompacter un fichier ouvert.
Donc copie sur un fichier temporaire etc.
Mais bon, si Denis te donne une solution, ça me convient très bien.
Surtout qu'il m'a l'air parti sur une solution bien plus complète que
la simple vérification.
1 2 3