Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier .xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier .xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier .xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour,
juste pour le fun parceque la réponse d'Hervé est la plus simple.
Imaginons que ton xla soit doté d'un module de classe appelé Classe1
dont les procédures sont les suivantes
Public WithEvents cb As msforms.CommandButton
Public WithEvents Appl As Application
Private Sub Appl_SheetActivate(ByVal Sh As Object)
affectcb
End Sub
Private Sub Appl_WorkbookActivate(ByVal Wb As Workbook)
affectcb
End Sub
Private Sub cb_Click()
MsgBox cb.Parent.Parent.Name
End Sub
dans un module standard, tu écris
Dim arrcb() As New Classe1
Sub affectcb()
Dim oleobj As OLEObject
Dim wsh As Worksheet
Erase arrcb
cbloop = 1
For Each wbk In Workbooks
For Each wsh In wbk.Worksheets
For Each oleobj In wsh.OLEObjects
On Error Resume Next
typeole = oleobj.ProgId
If Err.Number = 0 Then
If typeole = "Forms.CommandButton.1" Then
ReDim Preserve arrcb(1 To cbloop)
Set arrcb(cbloop).cb = oleobj.Object
cbloop = cbloop + 1
End If
Else
Err.Clear
End If
Next
Next
Next
End Sub
puis dans le module thisworkbook de ton xla, tu mets
Dim ApplicationClass As New Classe1
Private Sub Workbook_Open()
Set ApplicationClass.Appl = Application
affectcb
End Sub
Dans ces conditions, à chaque fois qu'une feuille sera activée ou un
classeur activé ( ouvert<=>activé) , alors tous les commandbutton de
toutes les feuilles de tous les classeurs en cours dans la session en
cours seront référencés , et lors d'un click sur l'un quelconque d'entre
eux, le message indiquant leur fichier d'appartenance s'affichera.
Plutot que d'afficher le message, il est clair que l'on peut récupérer
cette valeur et s'en servir pour être utilisée dans tes procédures de
ton xla.
La faille pour l'instant de cette affaire, c'est que si on créee un
NOUVEAU commandbutton sur une feuille quelconque, ce nouveau
commandbutton ne sera référencé par le module de classe du xla que si on
change de feuille ou de classeur.On pourrait sans doute avoir une
manière de faire en truquant sur la barre d'outils controles , lors d'un
click sur le commandbuttton , la procédure par défaut d'Excel pour la
substituer à une proc perso qui déclencherait la création du
Commandbutton et lancerait la procédure affectcb mais je dois
reconnaitre que je n'ai pas essayé .
M'enfin, c'était juste pour le fun et pour montrer la puissance des
modules de classe.
A+Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un
fichier .xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur
qui est à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement
dans le fichier .xls, et l'instruction "Thisworkbook.name" suffisait.
Mais depuis que je les ai copiées dans le fichier .xla, forcément,
l'instruction "Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour,
juste pour le fun parceque la réponse d'Hervé est la plus simple.
Imaginons que ton xla soit doté d'un module de classe appelé Classe1
dont les procédures sont les suivantes
Public WithEvents cb As msforms.CommandButton
Public WithEvents Appl As Application
Private Sub Appl_SheetActivate(ByVal Sh As Object)
affectcb
End Sub
Private Sub Appl_WorkbookActivate(ByVal Wb As Workbook)
affectcb
End Sub
Private Sub cb_Click()
MsgBox cb.Parent.Parent.Name
End Sub
dans un module standard, tu écris
Dim arrcb() As New Classe1
Sub affectcb()
Dim oleobj As OLEObject
Dim wsh As Worksheet
Erase arrcb
cbloop = 1
For Each wbk In Workbooks
For Each wsh In wbk.Worksheets
For Each oleobj In wsh.OLEObjects
On Error Resume Next
typeole = oleobj.ProgId
If Err.Number = 0 Then
If typeole = "Forms.CommandButton.1" Then
ReDim Preserve arrcb(1 To cbloop)
Set arrcb(cbloop).cb = oleobj.Object
cbloop = cbloop + 1
End If
Else
Err.Clear
End If
Next
Next
Next
End Sub
puis dans le module thisworkbook de ton xla, tu mets
Dim ApplicationClass As New Classe1
Private Sub Workbook_Open()
Set ApplicationClass.Appl = Application
affectcb
End Sub
Dans ces conditions, à chaque fois qu'une feuille sera activée ou un
classeur activé ( ouvert<=>activé) , alors tous les commandbutton de
toutes les feuilles de tous les classeurs en cours dans la session en
cours seront référencés , et lors d'un click sur l'un quelconque d'entre
eux, le message indiquant leur fichier d'appartenance s'affichera.
Plutot que d'afficher le message, il est clair que l'on peut récupérer
cette valeur et s'en servir pour être utilisée dans tes procédures de
ton xla.
La faille pour l'instant de cette affaire, c'est que si on créee un
NOUVEAU commandbutton sur une feuille quelconque, ce nouveau
commandbutton ne sera référencé par le module de classe du xla que si on
change de feuille ou de classeur.On pourrait sans doute avoir une
manière de faire en truquant sur la barre d'outils controles , lors d'un
click sur le commandbuttton , la procédure par défaut d'Excel pour la
substituer à une proc perso qui déclencherait la création du
Commandbutton et lancerait la procédure affectcb mais je dois
reconnaitre que je n'ai pas essayé .
M'enfin, c'était juste pour le fun et pour montrer la puissance des
modules de classe.
A+
Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un
fichier .xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur
qui est à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement
dans le fichier .xls, et l'instruction "Thisworkbook.name" suffisait.
Mais depuis que je les ai copiées dans le fichier .xla, forcément,
l'instruction "Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour,
juste pour le fun parceque la réponse d'Hervé est la plus simple.
Imaginons que ton xla soit doté d'un module de classe appelé Classe1
dont les procédures sont les suivantes
Public WithEvents cb As msforms.CommandButton
Public WithEvents Appl As Application
Private Sub Appl_SheetActivate(ByVal Sh As Object)
affectcb
End Sub
Private Sub Appl_WorkbookActivate(ByVal Wb As Workbook)
affectcb
End Sub
Private Sub cb_Click()
MsgBox cb.Parent.Parent.Name
End Sub
dans un module standard, tu écris
Dim arrcb() As New Classe1
Sub affectcb()
Dim oleobj As OLEObject
Dim wsh As Worksheet
Erase arrcb
cbloop = 1
For Each wbk In Workbooks
For Each wsh In wbk.Worksheets
For Each oleobj In wsh.OLEObjects
On Error Resume Next
typeole = oleobj.ProgId
If Err.Number = 0 Then
If typeole = "Forms.CommandButton.1" Then
ReDim Preserve arrcb(1 To cbloop)
Set arrcb(cbloop).cb = oleobj.Object
cbloop = cbloop + 1
End If
Else
Err.Clear
End If
Next
Next
Next
End Sub
puis dans le module thisworkbook de ton xla, tu mets
Dim ApplicationClass As New Classe1
Private Sub Workbook_Open()
Set ApplicationClass.Appl = Application
affectcb
End Sub
Dans ces conditions, à chaque fois qu'une feuille sera activée ou un
classeur activé ( ouvert<=>activé) , alors tous les commandbutton de
toutes les feuilles de tous les classeurs en cours dans la session en
cours seront référencés , et lors d'un click sur l'un quelconque d'entre
eux, le message indiquant leur fichier d'appartenance s'affichera.
Plutot que d'afficher le message, il est clair que l'on peut récupérer
cette valeur et s'en servir pour être utilisée dans tes procédures de
ton xla.
La faille pour l'instant de cette affaire, c'est que si on créee un
NOUVEAU commandbutton sur une feuille quelconque, ce nouveau
commandbutton ne sera référencé par le module de classe du xla que si on
change de feuille ou de classeur.On pourrait sans doute avoir une
manière de faire en truquant sur la barre d'outils controles , lors d'un
click sur le commandbuttton , la procédure par défaut d'Excel pour la
substituer à une proc perso qui déclencherait la création du
Commandbutton et lancerait la procédure affectcb mais je dois
reconnaitre que je n'ai pas essayé .
M'enfin, c'était juste pour le fun et pour montrer la puissance des
modules de classe.
A+Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un
fichier .xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur
qui est à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement
dans le fichier .xls, et l'instruction "Thisworkbook.name" suffisait.
Mais depuis que je les ai copiées dans le fichier .xla, forcément,
l'instruction "Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonsoir Frédéric,
En passant un argument à ta macro, exemple :
Sub MaMacro(NomClasseur as String)
....
Msgbox NomClasseur
...
End Sub
Hervé.
"Frédéric" a écrit dans le message de
news:Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonsoir Frédéric,
En passant un argument à ta macro, exemple :
Sub MaMacro(NomClasseur as String)
....
Msgbox NomClasseur
...
End Sub
Hervé.
"Frédéric" <Frdric@discussions.microsoft.com> a écrit dans le message de
news: 2A0A2854-2BF2-49C7-95BC-3AFDD8636F98@microsoft.com...
Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonsoir Frédéric,
En passant un argument à ta macro, exemple :
Sub MaMacro(NomClasseur as String)
....
Msgbox NomClasseur
...
End Sub
Hervé.
"Frédéric" a écrit dans le message de
news:Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonsoir Frédéric,
En passant un argument à ta macro, exemple :
Sub MaMacro(NomClasseur as String)
....
Msgbox NomClasseur
...
End Sub
Hervé.
"Frédéric" a écrit dans le message de
news:Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonsoir Frédéric,
En passant un argument à ta macro, exemple :
Sub MaMacro(NomClasseur as String)
....
Msgbox NomClasseur
...
End Sub
Hervé.
"Frédéric" <Frdric@discussions.microsoft.com> a écrit dans le message de
news: 2A0A2854-2BF2-49C7-95BC-3AFDD8636F98@microsoft.com...
Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonsoir Frédéric,
En passant un argument à ta macro, exemple :
Sub MaMacro(NomClasseur as String)
....
Msgbox NomClasseur
...
End Sub
Hervé.
"Frédéric" a écrit dans le message de
news:Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour Frédéric,
Si tes boutons dans feuille sont des boutons issus de la barre d'outils "Formulaire", et que tu appelles directement une fonction
dans un fichier .xla, tu peux utiliser ceci :
A ) pour assigner une fonction ou une sub à un bouton (barre outils Formulaire),
Menu contextuel -> attacher une macro
Saisir manuellement le nom de la fonction (sub) à joindre
B ) Un exemple comment récupérer le nom du classeur d'où
la fonction a été appelée.
'------------------------
Public Function Bonsoir()
Dim Bouton As Button
Set BTN = ActiveSheet.Buttons(Application.Caller)
MsgBox "Nom du classeur est : " & _
BTN.TopLeftCell.Parent.Parent.Name
'Le reste du code pour lequel tu as écris cette fonction...
End Function
'------------------------
Salutations!
"Frédéric" a écrit dans le message de news:
Bonjour Hervé,
Ta réponse semble effectivement très simple, mais à tel point que je ne vois
pas comment ca peut marcher!
J'ai n classeurs .xls qui utilisent des macros écrites dans "toto.xla" (car
c'est bien le but des .xla que de mettre à dispo des macros pour plusieurs
classeurs).
Dans chacun des n classeurs, j'ai un bouton qui appelle la même macro du
..xla. Et ce que je voudrais, c'est avoir un moyen dans cette macro de
connaitre le nom du classeur qui est à l'origine de l'appel, sachant qu'il
peut y en avoir n...
La solution de notre ami "AnonymousA" est prometeuse, mais j'espérais
effectivement qu'il existe un moyen plus simple d'y arriver...
As tu une autre idée?
Fred.Bonsoir Frédéric,
En passant un argument à ta macro, exemple :
Sub MaMacro(NomClasseur as String)
....
Msgbox NomClasseur
...
End Sub
Hervé.
"Frédéric" a écrit dans le message de
news:Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour Frédéric,
Si tes boutons dans feuille sont des boutons issus de la barre d'outils "Formulaire", et que tu appelles directement une fonction
dans un fichier .xla, tu peux utiliser ceci :
A ) pour assigner une fonction ou une sub à un bouton (barre outils Formulaire),
Menu contextuel -> attacher une macro
Saisir manuellement le nom de la fonction (sub) à joindre
B ) Un exemple comment récupérer le nom du classeur d'où
la fonction a été appelée.
'------------------------
Public Function Bonsoir()
Dim Bouton As Button
Set BTN = ActiveSheet.Buttons(Application.Caller)
MsgBox "Nom du classeur est : " & _
BTN.TopLeftCell.Parent.Parent.Name
'Le reste du code pour lequel tu as écris cette fonction...
End Function
'------------------------
Salutations!
"Frédéric" <Frdric@discussions.microsoft.com> a écrit dans le message de news: BBB84D00-775E-4395-848A-FD7A4D812634@microsoft.com...
Bonjour Hervé,
Ta réponse semble effectivement très simple, mais à tel point que je ne vois
pas comment ca peut marcher!
J'ai n classeurs .xls qui utilisent des macros écrites dans "toto.xla" (car
c'est bien le but des .xla que de mettre à dispo des macros pour plusieurs
classeurs).
Dans chacun des n classeurs, j'ai un bouton qui appelle la même macro du
..xla. Et ce que je voudrais, c'est avoir un moyen dans cette macro de
connaitre le nom du classeur qui est à l'origine de l'appel, sachant qu'il
peut y en avoir n...
La solution de notre ami "AnonymousA" est prometeuse, mais j'espérais
effectivement qu'il existe un moyen plus simple d'y arriver...
As tu une autre idée?
Fred.
Bonsoir Frédéric,
En passant un argument à ta macro, exemple :
Sub MaMacro(NomClasseur as String)
....
Msgbox NomClasseur
...
End Sub
Hervé.
"Frédéric" <Frdric@discussions.microsoft.com> a écrit dans le message de
news: 2A0A2854-2BF2-49C7-95BC-3AFDD8636F98@microsoft.com...
Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour Frédéric,
Si tes boutons dans feuille sont des boutons issus de la barre d'outils "Formulaire", et que tu appelles directement une fonction
dans un fichier .xla, tu peux utiliser ceci :
A ) pour assigner une fonction ou une sub à un bouton (barre outils Formulaire),
Menu contextuel -> attacher une macro
Saisir manuellement le nom de la fonction (sub) à joindre
B ) Un exemple comment récupérer le nom du classeur d'où
la fonction a été appelée.
'------------------------
Public Function Bonsoir()
Dim Bouton As Button
Set BTN = ActiveSheet.Buttons(Application.Caller)
MsgBox "Nom du classeur est : " & _
BTN.TopLeftCell.Parent.Parent.Name
'Le reste du code pour lequel tu as écris cette fonction...
End Function
'------------------------
Salutations!
"Frédéric" a écrit dans le message de news:
Bonjour Hervé,
Ta réponse semble effectivement très simple, mais à tel point que je ne vois
pas comment ca peut marcher!
J'ai n classeurs .xls qui utilisent des macros écrites dans "toto.xla" (car
c'est bien le but des .xla que de mettre à dispo des macros pour plusieurs
classeurs).
Dans chacun des n classeurs, j'ai un bouton qui appelle la même macro du
..xla. Et ce que je voudrais, c'est avoir un moyen dans cette macro de
connaitre le nom du classeur qui est à l'origine de l'appel, sachant qu'il
peut y en avoir n...
La solution de notre ami "AnonymousA" est prometeuse, mais j'espérais
effectivement qu'il existe un moyen plus simple d'y arriver...
As tu une autre idée?
Fred.Bonsoir Frédéric,
En passant un argument à ta macro, exemple :
Sub MaMacro(NomClasseur as String)
....
Msgbox NomClasseur
...
End Sub
Hervé.
"Frédéric" a écrit dans le message de
news:Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour Frédéric,
Si tes boutons dans feuille sont des boutons issus de la barre d'outils "Formulaire", et que tu appelles directement une fonction
dans un fichier .xla, tu peux utiliser ceci :
A ) pour assigner une fonction ou une sub à un bouton (barre outils Formulaire),
Menu contextuel -> attacher une macro
Saisir manuellement le nom de la fonction (sub) à joindre
B ) Un exemple comment récupérer le nom du classeur d'où
la fonction a été appelée.
'------------------------
Public Function Bonsoir()
Dim Bouton As Button
Set BTN = ActiveSheet.Buttons(Application.Caller)
MsgBox "Nom du classeur est : " & _
BTN.TopLeftCell.Parent.Parent.Name
'Le reste du code pour lequel tu as écris cette fonction...
End Function
'------------------------
Salutations!
"Frédéric" a écrit dans le message de news:
Bonjour Hervé,
Ta réponse semble effectivement très simple, mais à tel point que je ne vois
pas comment ca peut marcher!
J'ai n classeurs .xls qui utilisent des macros écrites dans "toto.xla" (car
c'est bien le but des .xla que de mettre à dispo des macros pour plusieurs
classeurs).
Dans chacun des n classeurs, j'ai un bouton qui appelle la même macro du
..xla. Et ce que je voudrais, c'est avoir un moyen dans cette macro de
connaitre le nom du classeur qui est à l'origine de l'appel, sachant qu'il
peut y en avoir n...
La solution de notre ami "AnonymousA" est prometeuse, mais j'espérais
effectivement qu'il existe un moyen plus simple d'y arriver...
As tu une autre idée?
Fred.Bonsoir Frédéric,
En passant un argument à ta macro, exemple :
Sub MaMacro(NomClasseur as String)
....
Msgbox NomClasseur
...
End Sub
Hervé.
"Frédéric" a écrit dans le message de
news:Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour Frédéric,
Si tes boutons dans feuille sont des boutons issus de la barre d'outils "Formulaire", et que tu appelles directement une fonction
dans un fichier .xla, tu peux utiliser ceci :
A ) pour assigner une fonction ou une sub à un bouton (barre outils Formulaire),
Menu contextuel -> attacher une macro
Saisir manuellement le nom de la fonction (sub) à joindre
B ) Un exemple comment récupérer le nom du classeur d'où
la fonction a été appelée.
'------------------------
Public Function Bonsoir()
Dim Bouton As Button
Set BTN = ActiveSheet.Buttons(Application.Caller)
MsgBox "Nom du classeur est : " & _
BTN.TopLeftCell.Parent.Parent.Name
'Le reste du code pour lequel tu as écris cette fonction...
End Function
'------------------------
Salutations!
"Frédéric" <Frdric@discussions.microsoft.com> a écrit dans le message de news:
BBB84D00-775E-4395-848A-FD7A4D812634@microsoft.com...
Bonjour Hervé,
Ta réponse semble effectivement très simple, mais à tel point que je ne vois
pas comment ca peut marcher!
J'ai n classeurs .xls qui utilisent des macros écrites dans "toto.xla" (car
c'est bien le but des .xla que de mettre à dispo des macros pour plusieurs
classeurs).
Dans chacun des n classeurs, j'ai un bouton qui appelle la même macro du
..xla. Et ce que je voudrais, c'est avoir un moyen dans cette macro de
connaitre le nom du classeur qui est à l'origine de l'appel, sachant qu'il
peut y en avoir n...
La solution de notre ami "AnonymousA" est prometeuse, mais j'espérais
effectivement qu'il existe un moyen plus simple d'y arriver...
As tu une autre idée?
Fred.
Bonsoir Frédéric,
En passant un argument à ta macro, exemple :
Sub MaMacro(NomClasseur as String)
....
Msgbox NomClasseur
...
End Sub
Hervé.
"Frédéric" <Frdric@discussions.microsoft.com> a écrit dans le message de
news: 2A0A2854-2BF2-49C7-95BC-3AFDD8636F98@microsoft.com...
Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.
Bonjour Frédéric,
Si tes boutons dans feuille sont des boutons issus de la barre d'outils "Formulaire", et que tu appelles directement une fonction
dans un fichier .xla, tu peux utiliser ceci :
A ) pour assigner une fonction ou une sub à un bouton (barre outils Formulaire),
Menu contextuel -> attacher une macro
Saisir manuellement le nom de la fonction (sub) à joindre
B ) Un exemple comment récupérer le nom du classeur d'où
la fonction a été appelée.
'------------------------
Public Function Bonsoir()
Dim Bouton As Button
Set BTN = ActiveSheet.Buttons(Application.Caller)
MsgBox "Nom du classeur est : " & _
BTN.TopLeftCell.Parent.Parent.Name
'Le reste du code pour lequel tu as écris cette fonction...
End Function
'------------------------
Salutations!
"Frédéric" a écrit dans le message de news:
Bonjour Hervé,
Ta réponse semble effectivement très simple, mais à tel point que je ne vois
pas comment ca peut marcher!
J'ai n classeurs .xls qui utilisent des macros écrites dans "toto.xla" (car
c'est bien le but des .xla que de mettre à dispo des macros pour plusieurs
classeurs).
Dans chacun des n classeurs, j'ai un bouton qui appelle la même macro du
..xla. Et ce que je voudrais, c'est avoir un moyen dans cette macro de
connaitre le nom du classeur qui est à l'origine de l'appel, sachant qu'il
peut y en avoir n...
La solution de notre ami "AnonymousA" est prometeuse, mais j'espérais
effectivement qu'il existe un moyen plus simple d'y arriver...
As tu une autre idée?
Fred.Bonsoir Frédéric,
En passant un argument à ta macro, exemple :
Sub MaMacro(NomClasseur as String)
....
Msgbox NomClasseur
...
End Sub
Hervé.
"Frédéric" a écrit dans le message de
news:Bonjour,
Dans un fichier excel, j'ai un bouton qui appelle une macro d'un fichier
.xla.
Dans le macro appelée, je souhaiterais récupérer le nom du classeur qui
est
à l'origine de l'appel de la macro...
Savez vous comment faire?
Car avant d'utiliser un fichier .xla, les macros étaient directement dans
le
fichier .xls, et l'instruction "Thisworkbook.name" suffisait. Mais depuis
que
je les ai copiées dans le fichier .xla, forcément, l'instruction
"Thisworkbook.name" renvoie le nom du fichier .xla...
Merci pour votre aide!
Frederic.