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

Appeler une fonction depuis un autre workbook

6 réponses
Avatar
cpuaud
Un workbook en ouvre un autre. Depuis le premier, je voudrais appeler
une fonction du deuxi=E8me. Comment faire pour appeler
"objWorkbookEdition.maFonction" depuis objWorkbookDonnees ?

Private Sub Workbook_Open()
Dim objWorkbookDonnees As Workbook, objWorkbookEdition As Workbook
Set objWorkbookDonnees =3D ActiveWorkbook
Set objWorkbookEdition =3D Application.Workbooks.Add("fichier2.xls")

objWorkbookEdition.maFonction

End Sub

Merci d'avance pour vos r=E9ponses.

6 réponses

Avatar
Argyronet (mvp)
Bonjour,

Je vous répond par une question...
Qu'est censé faire la fonction du classeur ouvert par l'objet Workbook ?
Je ne comprends pas bien l'intérêt.
Si une macro doit s'exécuter à l'ouverture du second classeur, mettez en
place un Auto_Open ou bien gérez l'événement Workbook_Open()...de ce classeur
et là, pas besoin d'appeler de fonction. (P.S. voyez aussi la méthode
RunAutoMacros)

Argy
--
Mes tutoriels sur http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Un workbook en ouvre un autre. Depuis le premier, je voudrais appeler
une fonction du deuxième. Comment faire pour appeler
"objWorkbookEdition.maFonction" depuis objWorkbookDonnees ?

Private Sub Workbook_Open()
Dim objWorkbookDonnees As Workbook, objWorkbookEdition As Workbook
Set objWorkbookDonnees = ActiveWorkbook
Set objWorkbookEdition = Application.Workbooks.Add("fichier2.xls")

objWorkbookEdition.maFonction

End Sub

Merci d'avance pour vos réponses.




Avatar
papou
Bonjour
En dehors de commentaires que l'on pourrait faire sur la méthode que tu
utilises, tu peux appeler une fonction de la manière suivante :
1°) Soit une fonction nommée "zozo" (désolé pas plus original !), située
dans un classeur classeur1.xls :
Function zozo(laplage As Range) As String
zozo = laplage.Address
End Function

2°) Soit un classeur classeur1.xls avec une macro Macro1:
Sub Macro1()
MsgBox Application.Run("Classeur1.xls!zozo", Feuil1.Range("A1:A10"))
End Sub

Cordialement
Pascal

a écrit dans le message de news:

Un workbook en ouvre un autre. Depuis le premier, je voudrais appeler
une fonction du deuxième. Comment faire pour appeler
"objWorkbookEdition.maFonction" depuis objWorkbookDonnees ?

Private Sub Workbook_Open()
Dim objWorkbookDonnees As Workbook, objWorkbookEdition As Workbook
Set objWorkbookDonnees = ActiveWorkbook
Set objWorkbookEdition = Application.Workbooks.Add("fichier2.xls")

objWorkbookEdition.maFonction

End Sub

Merci d'avance pour vos réponses.
Avatar
Christophe
En fait, entre "Set objWorkbookEdition Application.Workbooks.Add("fichier2.xls")" et
"objWorkbookEdition.maFonction" je copie des feuilles de
objWorkbookDonnees vers objWorkbookEdition. Je ne peux donc pas
utiliser le Workbook_Open().
Avatar
Christophe
Le pb c'est que je veux utiliser un "Classeur1.xls" modifié (mon
objWorkbookEdition = Application.Workbooks.Add("Classeur1.xls")). Avant
d'appeler la fonction, il faut que j'insère des données dans ce
nouveau classeur.
Pour des raisons techniques l'application ne peut pas générer dans le
même classeur le formulaire et les données.
Avatar
michdenis
Bonjour cpuaud,

| Set objWorkbookEdition = Application.Workbooks.Add("fichier2.xls")

ATTENTION :
Cette ligne de code n'ouvre pas un classeur mais en CRÉE un nouveau.
Dans ta procédure, tu utilises ActiveWorkbook... assure-toi que cela répond
bien au workbook qui sera actif ....même si tu avais déjà plusieurs classeurs
ouverts ....

Pour appeler une macro d'un fichier ouvert, tu disposes de cette ligne de code :

Dim LaMacro As String

'test1 est le nom de la macro appelée
LaMacro = "'" & objWorkbookDonnees.Name & "'!test1"
Application.Run LaMacro



Salutations!





a écrit dans le message de news:
Un workbook en ouvre un autre. Depuis le premier, je voudrais appeler
une fonction du deuxième. Comment faire pour appeler
"objWorkbookEdition.maFonction" depuis objWorkbookDonnees ?

Private Sub Workbook_Open()
Dim objWorkbookDonnees As Workbook, objWorkbookEdition As Workbook
Set objWorkbookDonnees = ActiveWorkbook
Set objWorkbookEdition = Application.Workbooks.Add("fichier2.xls")

objWorkbookEdition.maFonction

End Sub

Merci d'avance pour vos réponses.
Avatar
Christophe
Merci !
C'est exactcement ce qu'il me fallait.
Je veux bien créer un nouveau classeur.