VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

Moriaben

XLDnaute Nouveau
Bonjour à tous,

Je cherche à réaliser l'opération suivante:

un fichier *.xla inclut toutes mes fonctions et mes subs
il existe plein de workbooks xls qui appellent le même sub (codé dans le xla)
dans le sub du fixhier xla, je souhaite appeler une fonction, qui elle, sera écrite dans les fichiers xls

chaque fichier xls possède donc une fonction ayant le même nom, mais avec des calculs différents

est-ce possible? si oui, comment faire?
merci!

à noter qu'il n'y a qu'un seul fichier xls ouvert, jamais deux!
 

Pierrot93

XLDnaute Barbatruc
Re : VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

Bonjour,

perso pas trop bien compris la question... peux tu mettre le code de la fonction présent dans la xla, et détailler un peu plus ta demande...

bonne journée
@+
 

Moriaben

XLDnaute Nouveau
Re : VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

merci pour ton aide Pierre.

alors, étape par étape:

1/ appel d'un sub dans un des nombreux fichiers excel, code écrit dans un module du fichier excel qui appelle un sub écrit dans le fichier xla:

Sub Pricer_SingleAsset_int()
PricerXLA.Pricer_SingleAsset ThisWorkbook, ActiveSheet
End Sub


2/ fichier xla

Sub Pricer_SingleAsset(CurrentWB As Workbook, CurrentWS As Worksheet)
...
...
result = Payoff(K1,K2,K3)
...
...
End Sub


3/ Payoff est une fonction écrite non pas dans le fichier xla, mais dans le fichier xls car chaque workbook possède sa propre fonction "Payoff" (qui calcule un truc différent)


Le problème, c'est que la xla ne reconnait pas la fonction "Payoff" (meme si elle est définie en Public dans le module du fichier xls)


Merci !
 

Pierrot93

XLDnaute Barbatruc
Re : VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

Re,

essaie peut être ainsi :
Code:
'sans passage d'argument
Application.Run "classeur1.xls!payoff"
'avec passage d'argument
Application.Run "classeur1.xls!payoff", "argumentstring"
 

James007

XLDnaute Barbatruc
Re : VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

Bonjour, salut Pierrot93 :)

Une autre petite variante ... à tester pour récupérer le résultat :
Code:
result = Application.Run("Monfichier.xls!Module1.Payoff", K1, K2, K3)
A +
:)
 

Moriaben

XLDnaute Nouveau
Re : VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

en utilisant la méthode de James, je n'ai plus d'erreur sur la ligne "result = application.run ("..." ) ) mais j'ai un autre bogue ce qui fait que je peux pas encore tester l'ensemble:

dans le fichier xla:

Sub Pricer_SingleAsset(CurrentWB As Workbook, CurrentWS As Worksheet)
Dim TodayDate As Double
TodayDate = CurrentWB.Range("TodayDate").Value

TodayDate est donc une case nommée dans le classeur xls, et CurrentWB est un argument du sub
 

PMO2

XLDnaute Accro
Re : VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

Bonjour à tous,

Peut-être

Code:
Sub Pricer_SingleAsset(CurrentWB As Workbook, CurrentWS As Worksheet)
Dim TodayDate As Double
TodayDate = CurrentWB.CurrentWS.Range("TodayDate").Value

Cordialement.

PMO
Patrick Morange
 

Moriaben

XLDnaute Nouveau
Re : VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

A priori oui étant donné que j'accède aux autres données du workbook (lorsque les cases ne sont pas nommées)

le sub du fichier xla est appelé ainsi:

PricerXLA.Pricer_SingleAsset ThisWorkbook, ActiveSheet
 

Moriaben

XLDnaute Nouveau
Re : VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

je viens de remarquer si je tape uniquement le code suivant, ça marche:

Sub Pricer_SingleAsset(CurrentWB As Workbook, CurrentWS As Worksheet)
Dim TodayDate As Double
TodayDate = Range("TodayDate").Value

mais c'est quand meme très étrange et c'est pas très propre (on sait jamais si une autre celle "todaydate" existe dans un autre fichier quelconque ouvert)
 

Pierrot93

XLDnaute Barbatruc
Re : VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

je viens de remarquer si je tape uniquement le code suivant, ça marche:

Sub Pricer_SingleAsset(CurrentWB As Workbook, CurrentWS As Worksheet)
Dim TodayDate As Double
TodayDate = Range("TodayDate").Value

mais c'est quand meme très étrange et c'est pas très propre (on sait jamais si une autre celle "todaydate" existe dans un autre fichier quelconque ouvert)

re, bonjour Patrick
doit fonctionner si la plage nommée est dans le classeur actif...

Il semblerait que tu n'ais pas vu le post de Patrick à 11h30...
 

Moriaben

XLDnaute Nouveau
Re : VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

J'ai bien vu le message de Patrick, cependant cela ne fonctionne pas. J'ai pour l'instant mis de côté le nom de la cellule et je tape directement dans l'adresse de celle-ci. Cela fonctionne mais par contre le problème initial persiste

Impossible d'appeler la fonction écrite dans le fichier xls, la méthode de James ne marche pas.

Merci à tous pour votre aide en tout cas, c'est vraiment gentil !
 

Pierrot93

XLDnaute Barbatruc
Re : VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

Re,

regarde peut être ceci :
Code:
Dim x As String, y() As String
x = Mid(c.Names("TodayDate").Value, 2)
y = Split(x, "!")
MsgBox CurrentWB.Sheets(y(0)).Range(y(1)).Value
 

Moriaben

XLDnaute Nouveau
Re : VBA: Appel d'une fonction (dans un module d'un fichier xls) depuis fichier xla

Pierre,

j'ai pour le moment mis de côté le problème des cellules nommées en fournissant directement l'adresse de la cellule au lieu du nom associé. par contre, je n'arrive toujours pas à appeler la fonction écrite dans le fichier xls depuis le code xla
 

Discussions similaires

Statistiques des forums

Discussions
311 707
Messages
2 081 734
Membres
101 809
dernier inscrit
HADER2024