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

VBA Word Discussion :

[Word-Macro] Récupération d'argument?


Sujet :

VBA Word

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 47
    Par défaut [Word-Macro] Récupération d'argument?
    Bonjour

    Voila, j'ai fait une macro sous word qui fonctionne très bien.

    Mais voila je voudrais rajouter une fonctionnalité mais je sais vraiment pas comment faire et impossible à trouver.

    Donc je souhaiterai exécuter ma macro en ligne de commande en lui ajoutant un paramètre que je puisse récupérer dans la macro et la manipuler . J'ai pu trouver comment la lancer en ligne de commande cela fonctionne bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     "c:\....WinWord.EXE" /Mnommacro.main
    Mais impossible de trouver comme mettre l'argument et le récupérer

    Pouvez vous m'aider svp?

    Merci bien

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu parles d'une ligne de commande... Y'a pas de guillemets dans une ligne de commande à part dans un raccourci. Tu lances ça avec Shell ? ShellExecute ? Call Shell ? Call ?
    C'est du vba, du vbs ?
    ?
    Tu peux préciser ?
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 47
    Par défaut
    Salut

    Merci de vouloir m'aider

    Donc je vais essayer de préciser les choses.

    Je lance ma macro par l'invite de commande dos, et je dois mettre des guillements pour préciser le chemin de l'exécutable de word.

    La macro que j'ai codée, je l'ai faite par l'éditeur visual basic de word "Microsoft Visual Basic".

    J'ai essayé de trouver hier et je suis tombé sur la fonction command (), je l'ai essayé mais ca fonctionne pas , la notion d'agument utilisée par cette fonction doit être différentes de celle que je souhaiterai ( moi je veux à l'invite de la commande dos, lancer ma macro par la ligne de commande que j'ai pu écrire dans mon premier post en lui ajoutant à la fin une valeur correspondant à mon argument. Après je souhaiterai récupérer cette valeur=argument dans ma macro et la manipuler après. )

    J'espère que ce post est plus clair que le premier.

    Je précice bien que c'est une macro réalisée grace à l'éditeur visual basic inclu dans word de microsoft.

    Voila merci beaucoup pour votre aide.

    Laurent

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je n'ai toujours pas la réponse mais pour l'utilisation de Command, je peux te donner une indication. A l'invite de la commande dos tu n'as pas à utiliser "Command" puisque Command (cmd) sert à passer de Windows au dos
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CheminOùColler = "D:\Doc\Fichier.txt"
    CheminOùCopier = "D:\xls\Fichier.txt"
    MaCopie = "cmd /c copy " & CheminOùCopier & " " & CheminOùColler
    Call Shell(MaCopie)
    Ça ne résoud pas ton problème mais là s'arrête ma compétence
    Par contre, j'essaierais, pour lancer ta commande, de passer par un . bat, lancé sur une ligne de commande dos
    Les paramètres étant remplacés dans le bat par %1 %2 etc.
    Où %1, %2... seront remplacés par tes paramètres sur la ligne de commande.
    Dans le .bat, tu devrais avoir quelque chose comme ça :
    c:\....WinWord.EXE /Mnommacro.main %1 %2
    Sans garantie car j'ignore si Word accepte les paramètres pour les macros.
    Pour lancer le .bat, tu tapes son nom + les paramètres séparés par un espace
    Ma science s'arrête là mais j'en connais qui... en connaissent plus que moi
    A toutes fins utiles toutefois
    Je reste branché

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 47
    Par défaut
    Re

    Merci pour ta réponse.

    Oui je crois que la fonction command () va rien m'apporter

    Sinon l'idée de passer par un .bat est pas mal mais je suis confronté toujours au même problème :s comment je fais pour récupérer mes arguments dans ma macro , le but est de les manipuler dans la macro, ceci restant invisibles pour les utilisateurs. Ces derniers ont "juste" besoin de saisir le ligne de commande du .bat ou de ma commande et paf ca lance la macro comme par magie.

    Snif je crois ce que je veux faire est impossible, j'arrete pas de chercher sur google mais rien

    En tout cas c'est très gentil d'avoir essayé

    Laurent

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par llaurentt
    R..
    Oui je crois que la fonction command () va rien m'apporter
    ..
    la fonction Command existe dans VBA .. mais je sais pas m'en servir ... (ou je ne sais pas si elle est fonctionnelle..? peu être y as t'il quelque choses à préciser dans les options de lignes de commande de word..?)

    sinon en vb6 elle te permet bien de récupérer les argumens en ligne de commande...


    A part cela... que ve tu faire exactement .. ? que fait en gros ta macro..?

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par bbil
    la fonction Command existe dans VBA
    Oui, en VBA, pas dans une ligne de commande dos. Command est lancé précisément lors de l'accés au dos. Command est "tributaire", "associée" "indépendante" de la version du dos utilisée.
    A quoi elle sert dans VBA ? J'ai donné un exemple.
    Mais la question de llaurentt ne porte pas sur son utilisation dans VBA mais sur une ligne de commande DOS. Et donc, là, elle ne sert à rien

    A+

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 47
    Par défaut
    Citation Envoyé par bbil
    A part cela... que ve tu faire exactement .. ? que fait en gros ta macro..?

    Ben c'est assez simple, il permet en gros de faire un fusion entre un document contenant des champs et un fichier de données.

    Mon paramètre=argument que je souhaiterai mettre à ma macro est simplement le nom du repertoire où mettre le fichier de fusion.

    Voila ^^

  9. #9
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    attention ne pas confondre la fonction VB Command() et le Command.com ou cmd du dos..

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 47
    Par défaut
    Hello les amis

    Bon je crois que je vais contourner le problème.

    Je vais creer un .bat qui va récupérer l'argument + lancer la macro comme ouskel'n'or me l'a indiqué.
    Mais la différence c'est que ce .bat va me creer un fichier texte contenant le nom du répertoire en question.
    Après la macro va s'exécuter en lisant ce fichier (contenant le nom de mon répertoire), va creer ce répertoire qui va recevoir le fichier résultant de la fusion.

    Ouff ben j'espère que je vais y arriver

    Merci en tout cas pour votre aide

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour créer ton txt, tu peux mettre dans ton bat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo NomDuRépertoire > FichierTxt.txt
    Je révise mon dos pour la syntaxe des paramètres %n... Je ne veux pas dire de c...rie sinon je vais me faire appeler Arthur par bbil
    A+

  13. #13
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par bbil
    attention ne pas confondre la fonction VB Command() et le Command.com ou cmd du dos..
    Citation Envoyé par Aide en ligne VBA
    Command Function


    Returns the argument portion of the command line used to launch Microsoft Visual Basic or an executable program developed with Visual Basic. The Visual Basic Command function is not available in Microsoft Office applications.
    bon c'est bien cela command ne peu pas être utilisé en VBA , dommage cela aurai été une solution plus propre à ton probléme..!

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Voilà
    Pour la syntaxe dans le . bat c'est tout simplement dans MonPointBat.bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo %1 > FichierTxt.txt
    c:\....WinWord.EXE /Mnommacro.main
    Pour la ligne de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonPointBat NomDuRépertoire
    Tu expérimentes et tu nous dis
    A+

    Edit
    J'avais laissé un guillemet, faut pas, j'ai corrigé

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 47
    Par défaut
    C'est bon ca fonctionne impec

    Merci à vous tous pour votre aide

    Une copie de mon script en batch :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    @echo off
     
    del c:\gagi\gagibis.ini
     
    set repertoire=%1
     
    echo [Mailing]> c:\gagi\gagibis.ini
    echo RepTemp=%repertoire% >> c:\gagi\gagibis.ini
     
    "c:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" /Mnormal.gagifusficXP.main
    En fait, je me creer un fichier .ini qui contient un champ "RepTemp" qui contient le nom du répertoire s'il a bien sur était saisi comme argument.

    Apèts je récupère ce nom donc ma macro par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ResutFusion = System.PrivateProfileString("c:\gagi\gagibis.ini", "MAILING", _
            "RepTemp")
    Voila

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-MAC 2004] Run Word macro avec Argument
    Par thais781 dans le forum Excel
    Réponses: 1
    Dernier message: 28/11/2012, 16h35
  2. Pywin32 et Macro Word: comment passer des arguments?
    Par ::Fistons dans le forum Bibliothèques tierces
    Réponses: 0
    Dernier message: 11/08/2011, 16h46
  3. Récupération URL + arguments
    Par Raton dans le forum ASP
    Réponses: 1
    Dernier message: 02/12/2005, 11h03
  4. Récupération d'arguments sur une fonction
    Par p0Kep0K dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/09/2005, 09h17
  5. Réponses: 2
    Dernier message: 15/02/2005, 14h18

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