OVH Cloud OVH Cloud

Affecter une macro à un bouton personnalisé

2 réponses
Avatar
Damran
Bonjour,

J'ai créé une barre d'outil personnalisé.
J'ai affecté des macro aux boutons (clique droit, "affecter une macro")

Admettons que j'y affecte la macro "MaMacro", le problème est que Excel
modifier l'appel pour : "[MaFeuille.xls]!MaMacro"

Résultat, comme le nom de la feuille est en dure, si je change le nom de
mon fichier, lors de l'appel de la macro, Excel me demande l'ancien fichier.

Ma question : Comment faire pour affecter une macro à un bouton de
manière "relative", afin que le bouton appel bien la macro du classeur
courrant ?

J'ai essayé ActiveWorkbook.Name, mais il ne l'interprète pas et cherche
le classeur "ActiveWorkbook.Name" !

Si vous avez une idée.

Merci d'avance

Damran

2 réponses

Avatar
papou
Bonjour
Si tu veux q'une macro soit disponible à tout moment avec n'importe quel
classeur, la solution c'est de stocker ta macro dans le classeur de macros
personnelles PERSO.XLS.

Cordialement
Pascal

"Damran" a écrit dans le message de news:
449a7799$0$4782$
Bonjour,

J'ai créé une barre d'outil personnalisé.
J'ai affecté des macro aux boutons (clique droit, "affecter une macro")

Admettons que j'y affecte la macro "MaMacro", le problème est que Excel
modifier l'appel pour : "[MaFeuille.xls]!MaMacro"

Résultat, comme le nom de la feuille est en dure, si je change le nom de
mon fichier, lors de l'appel de la macro, Excel me demande l'ancien
fichier.

Ma question : Comment faire pour affecter une macro à un bouton de manière
"relative", afin que le bouton appel bien la macro du classeur courrant ?

J'ai essayé ActiveWorkbook.Name, mais il ne l'interprète pas et cherche le
classeur "ActiveWorkbook.Name" !

Si vous avez une idée.

Merci d'avance

Damran


Avatar
JB
-Une BO perso pointe vers les macro avec le chemin physique lors de son
installation.
-On ne peut donc pas modifier le répertoire ou le nom.
-Si la barre a été attachée au classeur, supprimer la BO et ouvrir
le classeur avec le nouveau nom. Le chemin sera récrée.

On peut remplacer les BO perso par un menu:

Sub auto_open()
Dim MaBarreDeCommande As CommandBar
'---- Création barre
On Error Resume Next
Set MaBarreDeCommande = CommandBars.Add(Name:="NouvelleBarre",
Temporary:=True)
MaBarreDeCommande.Visible = True
'------ Création menu
Set newMenu =
CommandBars("NouvelleBarre").Controls.Add(Type:=msoControlPopup,
Temporary:=True)
newMenu.Caption = "Personnalisé"
'---- Création commandes
Set ctrl1 = newMenu.Controls.Add(Type:=msoControlButton)
ctrl1.Caption = "Importer"
ctrl1.OnAction = "macro2"

Set ctrl2 = newMenu.Controls.Add(Type:=msoControlButton)
ctrl2.Caption = "Exporter"
ctrl2.OnAction = "macro2"
End Sub

Sub auto_close()
On Error Resume Next
CommandBars("NouvelleBarre").Delete
CommandBars("Worksheet Menu Bar").Visible = True
End Sub

Sub macro2()
MsgBox "coucou"
End Sub

JB


Bonjour,

J'ai créé une barre d'outil personnalisé.
J'ai affecté des macro aux boutons (clique droit, "affecter une macro")

Admettons que j'y affecte la macro "MaMacro", le problème est que Excel
modifier l'appel pour : "[MaFeuille.xls]!MaMacro"

Résultat, comme le nom de la feuille est en dure, si je change le nom de
mon fichier, lors de l'appel de la macro, Excel me demande l'ancien fichi er.

Ma question : Comment faire pour affecter une macro à un bouton de
manière "relative", afin que le bouton appel bien la macro du classeur
courrant ?

J'ai essayé ActiveWorkbook.Name, mais il ne l'interprète pas et cherc he
le classeur "ActiveWorkbook.Name" !

Si vous avez une idée.

Merci d'avance

Damran