IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Peut-on passer des parametres à Excel ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut Peut-on passer des parametres à Excel ?
    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 ?

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Un petit Up car j'ai besoin d'une solution.

    Je sais que pour Access la technique suivante fonctionne ( JpCheck)

    1) Appel par fichier batch.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Start /WAIT msaccess.exe "C:\mydb.mdb" /Cmd "parametre"
    2) Dans access on a une macro Autoexec qui fait qqchose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ExécuterCode Startup()
    3) La macro Startup ressemble à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    J'ai essayé ceci en Excel, mais cela ne me transmet rien dans Parm

    1) Appel par batch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Start /wait excel.exe "C:\data\test\autocall.xls" /cmd "toto" ; "tutu" ; "tata"
    2) Code Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    En plus de ne rien avoir dans Parm, la routine s'exécute 2 fois !!
    Si quelqu'un à une idée ....

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 44
    Par défaut
    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.

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub macro_test(Param1 As String, Param2 As String)
    MsgBox Param1
    MsgBox Param2
    End Sub
    et dans un autre classeur quelconque on va insérer cette macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub essais()
    Application.Run "test2.xls!macro_test", "test paramètre 1", "test paramètre 2"
    End Sub
    Les deux classeurs étant ouvert, lance la macro "essais"

  5. #5
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut et merci pour vos réponses .

    Laestic
    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.
    Je suis en train de penser à cette solution depuis hier.

    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.

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Désolé, pour les applications extérieures je ne peux pas t'aider, ce n'est plus du VBA

Discussions similaires

  1. faire passer des parametres dans l'url
    Par Freyja dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 21/08/2006, 15h57
  2. Réponses: 2
    Dernier message: 21/05/2006, 09h30
  3. passer des parametres à l'application
    Par wickramben dans le forum JWS
    Réponses: 2
    Dernier message: 12/04/2006, 19h07
  4. Réponses: 2
    Dernier message: 04/10/2005, 20h54
  5. [script SQL]comment passer des parametres a un scrip sql?
    Par la7su dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/03/2005, 10h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo