Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/10/2006, 09h47   #1
Invité régulier
 
Inscription : octobre 2004
Messages : 47
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 47
Points : 6
Points : 6
Envoyer un message via MSN à llaurentt
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 :
 "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
llaurentt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 00h19   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 10h00   #3
Invité régulier
 
Inscription : octobre 2004
Messages : 47
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 47
Points : 6
Points : 6
Envoyer un message via MSN à llaurentt
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
llaurentt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 11h11   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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 :
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é
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 11h23   #5
Invité régulier
 
Inscription : octobre 2004
Messages : 47
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 47
Points : 6
Points : 6
Envoyer un message via MSN à llaurentt
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
llaurentt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 11h52   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 776
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 776
Points : 16 857
Points : 16 857
Envoyer un message via Skype™ à bbil
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..?
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 12h20   #7
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 12h24   #8
Invité régulier
 
Inscription : octobre 2004
Messages : 47
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 47
Points : 6
Points : 6
Envoyer un message via MSN à llaurentt
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 ^^
llaurentt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 12h25   #9
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 776
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 776
Points : 16 857
Points : 16 857
Envoyer un message via Skype™ à bbil
attention ne pas confondre la fonction VB Command() et le Command.com ou cmd du dos..
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 12h42   #10
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
cf. http://www.developpez.net/forums/sho...74&postcount=7 dernière ligne
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 12h48   #11
Invité régulier
 
Inscription : octobre 2004
Messages : 47
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 47
Points : 6
Points : 6
Envoyer un message via MSN à llaurentt
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
llaurentt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 13h18   #12
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Pour créer ton txt, tu peux mettre dans ton bat

Code :
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 13h22   #13
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 776
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 776
Points : 16 857
Points : 16 857
Envoyer un message via Skype™ à bbil
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..!
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2006, 13h24   #14
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Voilà
Pour la syntaxe dans le . bat c'est tout simplement dans MonPointBat.bat
Code :
1
2
echo %1 > FichierTxt.txt
c:\....WinWord.EXE /Mnommacro.main
Pour la ligne de commande
Code :
MonPointBat NomDuRépertoire
Tu expérimentes et tu nous dis
A+

Edit
J'avais laissé un guillemet, faut pas, j'ai corrigé
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2006, 09h29   #15
Invité régulier
 
Inscription : octobre 2004
Messages : 47
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 47
Points : 6
Points : 6
Envoyer un message via MSN à llaurentt
C'est bon ca fonctionne impec

Merci à vous tous pour votre aide

Une copie de mon script en batch :

Code :
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 :
1
2
3
 
ResutFusion = System.PrivateProfileString("c:\gagi\gagibis.ini", "MAILING", _
        "RepTemp")
Voila
llaurentt est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h48.


 
 
 
 
Partenaires

Hébergement Web