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
Le 17/05/2016 à 16:08, Geo a écrit :
Oui, on peut dézipper en vba, j'ai ça dans mes macros word, ça doit
marcher aussi pour Excel.



Tu peux m'envoyer ça steuplé ?
Pas sûr de m'en servir, mais a voir...

--
JièL dézippeur
Avatar
Geo
Bonsoir

Tu peux m'envoyer ça steuplé ?



Trouvé je ne sais trop où il y a longtemps :
-----------------
Sub dézip()
' il ne faut pas typer les variables
Dim fichierZip 'As String
Dim dossierRes 'As String
Dim sa As Object
Dim fichiersExtr ' As Object
Dim o As Object
Dim resZip As Object

fichierZip = "L:Tempcalendrier.zip"
' le dossier doit exister
dossierRes = "l:temptestzip"
Set sa = CreateObject("Shell.Application")
Set o = sa.Namespace(fichierZip)
Set resZip = sa.Namespace(dossierRes)
Set fichiersExtr = o.Items
resZip.CopyHere (fichiersExtr)

End Sub
--------------
Dans ton cas il faudrait copier ton classeur dans un fichier temporaire
et décompacter ce dernier.
Avatar
isabelle
je croyais qu'il suffisait de renommer le .zip en .xlsm
isabelle

Le 2016-05-17 14:10, Geo a écrit :
Bonsoir

Tu peux m'envoyer ça steuplé ?



Trouvé je ne sais trop où il y a longtemps :
-----------------
Sub dézip()
' il ne faut pas typer les variables
Dim fichierZip 'As String
Dim dossierRes 'As String
Dim sa As Object
Dim fichiersExtr ' As Object
Dim o As Object
Dim resZip As Object

fichierZip = "L:Tempcalendrier.zip"
' le dossier doit exister
dossierRes = "l:temptestzip"
Set sa = CreateObject("Shell.Application")
Set o = sa.Namespace(fichierZip)
Set resZip = sa.Namespace(dossierRes)
Set fichiersExtr = o.Items
resZip.CopyHere (fichiersExtr)

End Sub
--------------
Dans ton cas il faudrait copier ton classeur dans un fichier temporaire et
décompacter ce dernier.
Avatar
Geo
Bonjour Isabelle

Tu n'as pas tout suivi :-)

Un xlsm est un zip, c'est la même chose. D'accord.
Si l'extension est xlsm, un double clic dessus va lancer Excel.
Si l'extension est zip, un double clic dessus lance un décompactage.

Une fois le zip décompacté on a accès aux différents éléments en format
XML.
Il est possible de les modifier, puis recompacter l'ensemble qui
devient donc un zip.
En modifiant l'extension en xlsm, il est possible d'ouvrir le fichier
Excel modifié.

Là, JièL veut avoir accès à un élément d'un classeur Excel en vba, il
lui faut donc décompacter le fichier, c'est le but de la macro.
Avatar
isabelle
ok Geo, c'est juste que ça ne collait pas avec "Comment vérifier qu'un classeur
contient un bouton sur la barre d'accès rapide "
ps/ à quand le prochain voyage au nouveau monde ?
isabelle

Le 2016-05-17 15:43, Geo a écrit :
Bonjour Isabelle

Tu n'as pas tout suivi :-)

Un xlsm est un zip, c'est la même chose. D'accord.
Si l'extension est xlsm, un double clic dessus va lancer Excel.
Si l'extension est zip, un double clic dessus lance un décompactage.

Une fois le zip décompacté on a accès aux différents éléments en format XML.
Il est possible de les modifier, puis recompacter l'ensemble qui devient donc un
zip.
En modifiant l'extension en xlsm, il est possible d'ouvrir le fichier Excel
modifié.

Là, JièL veut avoir accès à un élément d'un classeur Excel en vba, il lui faut
donc décompacter le fichier, c'est le but de la macro.
Avatar
Geo
Bonjour


ok Geo, c'est juste que ça ne collait pas avec "Comment vérifier qu'un
classeur contient un bouton sur la barre d'accès rapide "



JièL a donné l'explication dans son deuxième message.
Il compte trouver l'information dans un xml qui est inclut dans le
fichier.
Pour y accéder il faut décompacter le zip-xlsm.

ps/ à quand le prochain voyage au nouveau monde ?



Excellent souvenir, déjà bien lointain.
J'ai toujours dans mon bureau le trombone et le drapeau québécois que
vous nous aviez offert.
Nous avons décidé de refaire un tour des châteaux de la Loire. C'est
pas mal non plus.
Avatar
JièL
Le 17/05/2016 à 20:10, Geo a écrit :
Trouvé je ne sais trop où il y a longtemps :
-----------------
Sub dézip()
' il ne faut pas typer les variables
Dim fichierZip 'As String
Dim dossierRes 'As String
Dim sa As Object
Dim fichiersExtr ' As Object
Dim o As Object
Dim resZip As Object

fichierZip = "L:Tempcalendrier.zip"
' le dossier doit exister
dossierRes = "l:temptestzip"
Set sa = CreateObject("Shell.Application")
Set o = sa.Namespace(fichierZip)
Set resZip = sa.Namespace(dossierRes)
Set fichiersExtr = o.Items
resZip.CopyHere (fichiersExtr)

End Sub
--------------
Dans ton cas il faudrait copier ton classeur dans un fichier temporaire
et décompacter ce dernier.



Ca le fait parfaitement, faut juste copier le .xlsm en .zip.

Merci Geo, t'as un sacré grenier à macro ;-)

--
JièL des zipapeur
Avatar
JièL
Hello Isabelle de la Geôlière ;-)

Si tu as un autre moyen de vérifier que la barre d'accès rapide à bien
un bouton et que ce bouton pointe sur une macro de CE classeur, je suis
preneur.

Là je suis parti de l'idée que, comme le dit MichD, "Rien n'est simple
avec les nouvelles barres d'outils dans Office depuis 2007" et qu'il n'y
avait pas de propriétés permettant de vérifier que cette barre contient
bien un bouton personnalisé, mais si tu as mieux...

Merci

--
JièL QAT pas simple


Le 17/05/2016 à 23:34, isabelle a écrit :
ok Geo, c'est juste que ça ne collait pas avec "Comment vérifier qu'un
classeur contient un bouton sur la barre d'accès rapide "
ps/ à quand le prochain voyage au nouveau monde ?
isabelle

Le 2016-05-17 15:43, Geo a écrit :
Bonjour Isabelle

Tu n'as pas tout suivi :-)

Un xlsm est un zip, c'est la même chose. D'accord.
Si l'extension est xlsm, un double clic dessus va lancer Excel.
Si l'extension est zip, un double clic dessus lance un décompactage.

Une fois le zip décompacté on a accès aux différents éléments en
format XML.
Il est possible de les modifier, puis recompacter l'ensemble qui
devient donc un
zip.
En modifiant l'extension en xlsm, il est possible d'ouvrir le fichier
Excel
modifié.

Là, JièL veut avoir accès à un élément d'un classeur Excel en vba, il
lui faut
donc décompacter le fichier, c'est le but de la macro.
Avatar
Geo
Bonjour

Merci Geo, t'as un sacré grenier à macro ;-)



Cette macro date de la version 2007, époque où j'ai cherché comment
modifier le ruban en vba.
Il n'y avait pas d'autre moyen que dézipper etc.
Heureusement que la version 2010 est arrivée et j'ai mis tout ça au
rancart.
Avatar
MichD
'----------
Là je suis parti de l'idée que, comme le dit MichD, "Rien n'est simple
avec les nouvelles barres d'outils dans Office depuis 2007" et qu'il n'y
avait pas de propriétés permettant de vérifier que cette barre contient
bien un bouton personnalisé, mais si tu as mieux...
'----------

Sur ce site Web, tu as tout ce qu’il faut pour apprendre à modifier le ruban.
http://www.rondebruin.nl/mac/section8.htm

Un usager peut modifier la "barre d'accès rapide" (QAT) aussi souvent qu'il le désire! Même si tu
réussis à tester la présence d'un bouton sur cette barre d'outils à l'ouverture du fichier, comment
t'assurer que l'usager ne modifiera pas cette dernière?

En ajoutant un menu (ou commande à un élément du ruban, l'usager ne peut pas intervenir sur ce
dernier.

MichD
1 2 3