OVH Cloud OVH Cloud

OnAction

12 réponses
Avatar
Benoit
Bonjour toutes et tous,
Afin de retrouv=E9 chaque fois une macro compl=E9mentaire, je=20
dois utilis=E9 la commande "OnAction". Pas de probl=E8me avec=20
un Command-Button. Je l'affecte a l'=E9v=E8nement Click.
Mais voila, la macro compl=E9mentaire est lanc=E9e a partir=20
d'un menu personnalis=E9. Et l=E0, pas d'=E9v=E8nement Click. O=FB=20
dois-je mettre "OnAction" ????
Une id=E9e ?
Merci,
Benoit,
Longue vie et prosp=E8re.

2 réponses

1 2
Avatar
Benoit
J'ai fait des essais en enregistrement macro, voie plus
bas.

Il n'y a pas de nom aux menu personnalisé. C'est bizarre

Sub Macro1()

Application.CommandBars("Worksheet Menu Bar").Controls
(10).Delete
End Sub
Sub Macro2()


Application.CommandBars("Menu contextuel personnalisé
9401171").Controls(1). _
Delete
End Sub


-----Original Message-----
Je vais tester tout ça.
Merci.
Benoit

-----Original Message-----
Bonjour Benoît,


Tu utilises les macros de mon premier message, Tu
places


les macros dans un module standard du fichier xla. et
dans ce même
fichier xla, dans son ThisWorkbook, tu utilises cet
événement pour t'assurer que tes macros sont réellement

liées au bouton :

Private Sub Workbook_Open()
LaMacroLiantBoutonEtMacro
End Sub

Cependant, si tu veux t'assurer que toi où un usager
fasse disparaître un de ces boutons de la barre

d'outils,

tu dois
protéger ta barre d'outils contre toute manipulation.
J'y ai ajouté une ligne de code à cet effet dans les

procédures déjà
proposées.

'------------------------
With Application.CommandBars(1)
With .Controls("Titi")
.OnAction = "MonFichier.xla!MaMacro"
End With
.Protection = msoBarNoChangeVisible +
msoBarNoCustomize

End With
'------------------------



Et si ton bouton de commande est ajouté à la barre de
menu de la feuille de calcul excel comme élément du sous

menu
"Insertion", tu peux utiliser ce qui suit :
'------------------------
With Application.CommandBars("worksheet menu
bar").Controls("&Insertion")

With .Controls("Titi")
.OnAction = "MonFichier.xla!MaMacro"
End With
.Protection = msoBarNoChangeVisible +
msoBarNoCustomize

End With
'------------------------


Salutations!



"Benoit" a écrit dans
le message de news:1caa01c48d0f$405d2ad0

$
Re Tres cher michdenis.
C'est exactement comme cela que je procède jusqu'a
présent. Mais ce n'est pas fiable.
Régulièrement, il cherche la macro xla dans un classeur.
Bref il perd le chemin de la macro. Ensuite je dois re
re


refaire comme tu l'as décrit. C'est pour éviter
définitivement ce probleme que je souhaite utilisé la
commande "OnAction"

Ta première proposition m'avais fait entrevoir une
solution.

Il faut partir de là.

Note : cela fait 3 ans que je cherche. J'ai
régulièrement


posé cette question ici. Tu es le seul m'avoir donné
espoir.
Si tu le permet, on pourrait utilisé un utilitaire de
commniquation par internet afin d'en débattre de vive
voix. Il va de soit que si une solution est trouvée,
j'en


ferai part a tous.

Longue vie et prospère

Benoît,
-----Original Message-----
Bonjour Benoît,

Pour faire simple,

Affiche la boîte "personnaliser" par un double clic
dans



l'espace des barres d'outils de ton application ou par
un


clic droit
sur cette zone / menu personnaliser.

Lorsque la fenêtre est affichée, un clic droit sur le
bouton de commande ou sur l'item du menu et dans la

liste


déroulante,
tu sélectionnes "Affecter une macro"

Il ne te reste plus qu'à insérer le nom de la macro. Si
ces dernières sont situées dans un classeur.xla, tu fais

précéder le
nom de la macro par le nom du classeur comme ceci

Bonjour.xla --> Nom du classeur
Bonjour ---> Nom de la macro

Tu insères : Bonjour.xla!Bonjour

Voilà c'est terminé.

P.S. Je sais, tu ne te souviens plus du nom exact de
tes



macros dans ton fichier .xla.
Tu ouvres VBE (visual basic editor) et à partir de la
barre d'outils Standard de cette fenêtre, tu appelles

l'explorateur de
projet.

Dans cette fenêtre , dans la permière liste déroulante
(celle du haut) tu sélectionnes : toutes les

bibliothèques et dans la
section du bas, devrait apparaître en caractère gras,
les noms des fonctions et procédures de ton classeur.xla


Dans la colonne "Class" , tu clique sur le nom du
module "exemple : Module1" et tu vois apparaître le nom

de toutes les
procédures et fonctions dans la fenêtre de droite SAUF
si tu as des procédures dont la déclaration porte le

mot "private"
comme dans Private sub toto() ...


Salutations!



"Benoit" a écrit
dans le message de news:1e6001c48d06$837f8870

$
Voila michdenis.
Les macros complémentaires sont chargées au démarrage
d'Excel.

Dans "Personnalisé", "Commande", j'ai ajouté un nouveau
menu auquel, j'ai rajouté des "éléments de menu
personnalisés".

A chaque "éléments de menu personnalisés" est assigné
une


macro (xla).

Et voila. Manque plus qu'a placé "OnAction" au bon
endroit. Et c'est pour cela que j'ai besoin de ton
aide.




Merci de m'aider. Benoit,
Longue vie et prospère.

-----Original Message-----
Bonjour,

"Dans une macro complémentaire"

**** Cela dépend de ton application ...

Si ta macro est présente à l'ouverture d'excel
(fichier.xla chargé), il n'y a pas de problème ...Si

par



contre ton fichier
..xla est chargé seulement quand un fichier .xls
particulier est ouvert .... alors la macro ne sera

disponible que lorsque ton
fichier xla sera chargé...

Si tu travailles seulement à partir tu même PC, tu
peux




copier ces procédures dans le Perso.xls ...

Je ne peux pas savoir à quoi et dans quelles
circonstances tu désires faire intervenir cette macro

et



ta barre d'outils
personnalisée.


Salutations!




a écrit dans le
message de news:1c0b01c48cfa$3dacbd60

$


Bonjour et merci,
Encore une petite précision STP.
D'abord merci, je pense que c'est exactement ce que je
cherchais.
Ou puis-je mettre ce code. Pas dans un classeur, bien
sur. Dans une macro complémentaire ???

Longue vie et prospère

-----Original Message-----
Bonjour Benoît,

Ta barre d'outils personnalisé a un nom "Toto"
Le bouton sur ta barre d'outils a aussi un nom "Titi"
'------------------------
With Application.CommandBars("Toto")
With .Controls("Titi")
.OnAction = "MaMacro"
End With
End With
'------------------------


Et si ton bouton de commande est ajouté à la barre de
menu de la feuille de calcul excel comme élément du

sous



menu
"Insertion", tu peux utiliser ce qui suit :
'------------------------
With Application.CommandBars("worksheet menu
bar").Controls("&Insertion")

With .Controls("Titi")
.OnAction = "MaMacro"
End With
End With
'------------------------


Salutations!


"Benoit" a écrit
dans





le message de news:1bad01c48ceb$2db953a0
$
Bonjour toutes et tous,
Afin de retrouvé chaque fois une macro
complémentaire,





je
dois utilisé la commande "OnAction". Pas de problème
avec


un Command-Button. Je l'affecte a l'évènement Click.
Mais voila, la macro complémentaire est lancée a
partir




d'un menu personnalisé. Et là, pas d'évènement Click.




dois-je mettre "OnAction" ????
Une idée ?
Merci,
Benoit,
Longue vie et prospère.


.




.




.




.

.








Avatar
Benoit
Rectification : c'est uniquement l'"élément de menu
personnalisé" qui n'a pas de nom.

Longue vie et prospère.

Benoit,

-----Original Message-----
J'ai fait des essais en enregistrement macro, voie plus
bas.

Il n'y a pas de nom aux menu personnalisé. C'est bizarre

Sub Macro1()

Application.CommandBars("Worksheet Menu
Bar").Controls

(10).Delete
End Sub
Sub Macro2()


Application.CommandBars("Menu contextuel
personnalisé

9401171").Controls(1). _
Delete
End Sub


-----Original Message-----
Je vais tester tout ça.
Merci.
Benoit

-----Original Message-----
Bonjour Benoît,


Tu utilises les macros de mon premier message, Tu
places


les macros dans un module standard du fichier xla. et
dans ce même
fichier xla, dans son ThisWorkbook, tu utilises cet
événement pour t'assurer que tes macros sont réellement

liées au bouton :

Private Sub Workbook_Open()
LaMacroLiantBoutonEtMacro
End Sub

Cependant, si tu veux t'assurer que toi où un usager
fasse disparaître un de ces boutons de la barre

d'outils,

tu dois
protéger ta barre d'outils contre toute manipulation.
J'y ai ajouté une ligne de code à cet effet dans les

procédures déjà
proposées.

'------------------------
With Application.CommandBars(1)
With .Controls("Titi")
.OnAction = "MonFichier.xla!MaMacro"
End With
.Protection = msoBarNoChangeVisible +
msoBarNoCustomize

End With
'------------------------



Et si ton bouton de commande est ajouté à la barre de
menu de la feuille de calcul excel comme élément du

sous


menu
"Insertion", tu peux utiliser ce qui suit :
'------------------------
With Application.CommandBars("worksheet menu
bar").Controls("&Insertion")

With .Controls("Titi")
.OnAction = "MonFichier.xla!MaMacro"
End With
.Protection = msoBarNoChangeVisible +
msoBarNoCustomize

End With
'------------------------


Salutations!



"Benoit" a écrit dans
le message de news:1caa01c48d0f$405d2ad0

$
Re Tres cher michdenis.
C'est exactement comme cela que je procède jusqu'a
présent. Mais ce n'est pas fiable.
Régulièrement, il cherche la macro xla dans un
classeur.



Bref il perd le chemin de la macro. Ensuite je dois re
re


refaire comme tu l'as décrit. C'est pour éviter
définitivement ce probleme que je souhaite utilisé la
commande "OnAction"

Ta première proposition m'avais fait entrevoir une
solution.

Il faut partir de là.

Note : cela fait 3 ans que je cherche. J'ai
régulièrement


posé cette question ici. Tu es le seul m'avoir donné
espoir.
Si tu le permet, on pourrait utilisé un utilitaire de
commniquation par internet afin d'en débattre de vive
voix. Il va de soit que si une solution est trouvée,
j'en


ferai part a tous.

Longue vie et prospère

Benoît,
-----Original Message-----
Bonjour Benoît,

Pour faire simple,

Affiche la boîte "personnaliser" par un double clic
dans



l'espace des barres d'outils de ton application ou par
un


clic droit
sur cette zone / menu personnaliser.

Lorsque la fenêtre est affichée, un clic droit sur le
bouton de commande ou sur l'item du menu et dans la

liste


déroulante,
tu sélectionnes "Affecter une macro"

Il ne te reste plus qu'à insérer le nom de la macro.
Si




ces dernières sont situées dans un classeur.xla, tu
fais



précéder le
nom de la macro par le nom du classeur comme ceci

Bonjour.xla --> Nom du classeur
Bonjour ---> Nom de la macro

Tu insères : Bonjour.xla!Bonjour

Voilà c'est terminé.

P.S. Je sais, tu ne te souviens plus du nom exact de
tes



macros dans ton fichier .xla.
Tu ouvres VBE (visual basic editor) et à partir de la
barre d'outils Standard de cette fenêtre, tu appelles

l'explorateur de
projet.

Dans cette fenêtre , dans la permière liste déroulante
(celle du haut) tu sélectionnes : toutes les

bibliothèques et dans la
section du bas, devrait apparaître en caractère gras,
les noms des fonctions et procédures de ton

classeur.xla




Dans la colonne "Class" , tu clique sur le nom du
module "exemple : Module1" et tu vois apparaître le nom

de toutes les
procédures et fonctions dans la fenêtre de droite SAUF
si tu as des procédures dont la déclaration porte le

mot "private"
comme dans Private sub toto() ...


Salutations!



"Benoit" a écrit
dans le message de news:1e6001c48d06$837f8870

$
Voila michdenis.
Les macros complémentaires sont chargées au démarrage
d'Excel.

Dans "Personnalisé", "Commande", j'ai ajouté un
nouveau




menu auquel, j'ai rajouté des "éléments de menu
personnalisés".

A chaque "éléments de menu personnalisés" est assigné
une


macro (xla).

Et voila. Manque plus qu'a placé "OnAction" au bon
endroit. Et c'est pour cela que j'ai besoin de ton
aide.




Merci de m'aider. Benoit,
Longue vie et prospère.

-----Original Message-----
Bonjour,

"Dans une macro complémentaire"

**** Cela dépend de ton application ...

Si ta macro est présente à l'ouverture d'excel
(fichier.xla chargé), il n'y a pas de problème ...Si

par



contre ton fichier
..xla est chargé seulement quand un fichier .xls
particulier est ouvert .... alors la macro ne sera

disponible que lorsque ton
fichier xla sera chargé...

Si tu travailles seulement à partir tu même PC, tu
peux




copier ces procédures dans le Perso.xls ...

Je ne peux pas savoir à quoi et dans quelles
circonstances tu désires faire intervenir cette macro

et



ta barre d'outils
personnalisée.


Salutations!




a écrit dans le
message de news:1c0b01c48cfa$3dacbd60

$


Bonjour et merci,
Encore une petite précision STP.
D'abord merci, je pense que c'est exactement ce que
je





cherchais.
Ou puis-je mettre ce code. Pas dans un classeur, bien
sur. Dans une macro complémentaire ???

Longue vie et prospère

-----Original Message-----
Bonjour Benoît,

Ta barre d'outils personnalisé a un nom "Toto"
Le bouton sur ta barre d'outils a aussi un
nom "Titi"






'------------------------
With Application.CommandBars("Toto")
With .Controls("Titi")
.OnAction = "MaMacro"
End With
End With
'------------------------


Et si ton bouton de commande est ajouté à la barre
de






menu de la feuille de calcul excel comme élément du
sous



menu
"Insertion", tu peux utiliser ce qui suit :
'------------------------
With Application.CommandBars("worksheet menu
bar").Controls("&Insertion")

With .Controls("Titi")
.OnAction = "MaMacro"
End With
End With
'------------------------


Salutations!


"Benoit" a écrit
dans





le message de news:1bad01c48ceb$2db953a0
$
Bonjour toutes et tous,
Afin de retrouvé chaque fois une macro
complémentaire,





je
dois utilisé la commande "OnAction". Pas de problème
avec


un Command-Button. Je l'affecte a l'évènement Click.
Mais voila, la macro complémentaire est lancée a
partir




d'un menu personnalisé. Et là, pas d'évènement
Click.







dois-je mettre "OnAction" ????
Une idée ?
Merci,
Benoit,
Longue vie et prospère.


.




.




.




.

.


.









1 2