Salut,
je n'ai pas de compilateur VB alors je voudrais appeler un classeur XLS où se trouverais le code à exécuter.
je voudrais simuler quelquechose du genre :
Call Procédure Parm1, parm2
C'est possible ou je rêve ?:mouarf:
Version imprimable
Salut,
je n'ai pas de compilateur VB alors je voudrais appeler un classeur XLS où se trouverais le code à exécuter.
je voudrais simuler quelquechose du genre :
Call Procédure Parm1, parm2
C'est possible ou je rêve ?:mouarf:
Un petit Up car j'ai besoin d'une solution.
Je sais que pour Access la technique suivante fonctionne (:merci: JpCheck)
1) Appel par fichier batch.
2) Dans access on a une macro Autoexec qui fait qqchose du genreCode:
1
2 Start /WAIT msaccess.exe "C:\mydb.mdb" /Cmd "parametre"
3) La macro Startup ressemble à ceci :Code:
1
2 ExécuterCode Startup()
J'ai essayé ceci en Excel, mais cela ne me transmet rien dans ParmCode:
1
2
3
4
5
6
7
8
9
10
11
12 Function Startup() Dim Param as Variant Param = command() 'récupérère la valeur transmise If not isnull(Param) then If len(Param) > 0 then 'ici on traite les params endif endif End function
1) Appel par batch
2) Code ExcelCode:
1
2 Start /wait excel.exe "C:\data\test\autocall.xls" /cmd "toto" ; "tutu" ; "tata"
En plus de ne rien avoir dans Parm, la routine s'exécute 2 fois !! :evilred:Code:
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Workbook_Open() Dim parm As String parm = Command() MsgBox "Parm " & parm If Not IsNull(parm) Then If Len(parm) > 0 Then Debug.Print parm End If End If End Sub
Si quelqu'un à une idée .... :? :? :?
L'application qui reçoit les paramètres en ligne de commande comme tu les as écrit est le serveur OLE ici Excel. Je ne pense pas que tu puisses accéder à la ligne de commande depuis les macros (mais je me trompe peut-être).
En revanche ce que tu peux faire c'est créer/modifier un fichier texte genre .ini qui sert d'interface pour transmettre des données.
Au lancement du classeur il suffit de lire l'ini s'il existe et d'initialiser tes variables (sinon val par défaut.) Doit y avoir une API sinon ce sera à la mimine l'ouverture, la lecture et l'écriture du fichier.
Bonjour tlm,
Un petit exemple vaut mieux qu'un longue explication
Dans un classeur, que l'on va nommer "test_param.xls" on va insérer cette macro
et dans un autre classeur quelconque on va insérer cette macroCode:
1
2
3
4 Sub macro_test(Param1 As String, Param2 As String) MsgBox Param1 MsgBox Param2 End Sub
Les deux classeurs étant ouvert, lance la macro "essais"Code:
1
2
3 Sub essais() Application.Run "test2.xls!macro_test", "test paramètre 1", "test paramètre 2" End Sub
Salut et merci pour vos réponses ;).
Laestic
Je suis en train de penser à cette solution depuis hier.Citation:
En revanche ce que tu peux faire c'est créer/modifier un fichier texte genre .ini qui sert d'interface pour transmettre des données.
Au lancement du classeur il suffit de lire l'ini s'il existe et d'initialiser tes variables (sinon val par défaut.) Doit y avoir une API sinon ce sera à la mimine l'ouverture, la lecture et l'écriture du fichier.
Ma préoccupation est la création de ce fameux fichier ini, ou txt ou autre qui devrait uniquement présenter 2 variables :
From_File
To file
Car en fait l'application qui génére le From_file est un package standard (Bartender) et je n'ai pas trouvé encore le moyen de lui faire créer un fichier ini ou text ou qqchose avec des variables.
Bartender peut appeler un proc quelconque avec des parametres, d'ou mon idée d'appeler excel avec
1) Nom workbook
2) From_file
3)To file
et alors le tour serait joué. Mais :( pour l'instant tutu...
Fring
Au vu de ce que je viens de répondre à Laestic, tu comprendras que je dois pouvoir appeler excel de mon application extérieure. :(
Désolé, pour les applications extérieures je ne peux pas t'aider, ce n'est plus du VBA
Merci Fring.
je suis en train de ragrder dans l'aide de Excel, mais apparement ce n'est pas possible.
Je vais essayer via access qui appelera car mon code est facilement portable.
La ca peut le faire.
:mouarf: