Vba Excel: Comment utiliser la fonction Command() ?

Résolu
cs_Zacland Messages postés 35 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 15 mai 2007 - 18 janv. 2006 à 17:48
cs_Zacland Messages postés 35 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 15 mai 2007 - 19 janv. 2006 à 09:35
Bonjour,

Si je suis là, c'est que je sèche franchement alors je me penche vers vous pour soliciter des idées sur mon problèmes.

Sous Excel, il est apparement possible de pouvoir récupérer des arguments passés en ligne de commande, même qu'un exemple de fonction est donné pour parser ces commandes dans un tableau...

Jusque-là, pas de problème, voici même l'exemple qui est donné:

Function GetCommandLine(Optional MaxArgs)
' Déclare les variables.
Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs
' Vérifie si MaxArgs a été spécifié.
If IsMissing(MaxArgs) Then MaxArgs = 10
' Définit un tableau au format approprié.
ReDim ArgArray(MaxArgs)
NumArgs 0: InArg False
' Récupère les arguments de ligne de commande.
CmdLine = Command()
CmdLnLen = Len(CmdLine)
' Analyse de la ligne de commande caractère par caractère.
For I = 1 To CmdLnLen
C = Mid(CmdLine, I, 1)
' Analyse de caractères d'espacement ou de tabulations.
If (C <> " " And C <> vbTab) Then
' Ni espace ni tabulation.
' Vérifie une éventuelle présence dans l'argument.
If Not InArg Then
' Le nouvel argument commence.
' Vérifie si les arguments ne sont pas trop nombreux.
If NumArgs = MaxArgs Then Exit For
NumArgs = NumArgs + 1
InArg = True
End If
' Concatène un caractère à l'argument courant.
ArgArray(NumArgs) = ArgArray(NumArgs) & C
Else
' Recherche un espace ou une tabulation.
' L'indicateur InArg prend la valeur False.
InArg = False
End If
Next I
' Redimensionne le tableau pour qu'il puisse
' juste contenir les arguments.
ReDim Preserve ArgArray(NumArgs)
' Renvoie le tableau dans le nom de fonction.
GetCommandLine = ArgArray()
End Function


Hors, j'ai beau appeler mon fichier Excel de diverses façons, j'ai toujours rien en sortie de ma fonction...

En fait, je ne sais pas comment passer ma ligne de commande à mon fichier xls pour récupérer ces arguments dans la fonction donnée par Micro$oft...

voilà toutes les lignes que j'ai essayé depuis ma console dos:

C:\Program Files\Microsoft Office\OFFICE11>EXCEL.EXE c:\fichier.xls toto.txt
C:\Program Files\Microsoft Office\OFFICE11>EXCEL.EXE c:\fichier.xls toto.txt
C:\Program Files\Microsoft Office\OFFICE11>EXCEL.EXE c:\fichier.xls /fichier=toto.txt
C:\Program Files\Microsoft Office\OFFICE11>EXCEL.EXE c:\fichier.xls /fichier=toto.txt
C:\Program Files\Microsoft Office\OFFICE11>EXCEL.EXE c:\fichier.xls /fichier=toto.txt
C:\Program Files\Microsoft Office\OFFICE11>EXCEL.EXE c:\fichier.xls /cmd toto.txt

en fait, en retour de ma fonction, je veux retrouver: toto.txt

Quelqu'un aurait-il une idée... si vous avez compris mon problème ... ?!

Merci d'avance...


-=Zac
Que le source soit avec vous ...

4 réponses

CTAC Messages postés 133 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 8 juin 2012 5
18 janv. 2006 à 21:46
Bonjour,

L'exemple fournit dans Xl ne fonctionne pas.
Regarder ici!
http://xcell05.free.fr/pages/prog/parametres.htm

ctac
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
18 janv. 2006 à 18:33
Salut
Tout ce"ci est bien compliqué.
Pour séparer les arguments, il faut détecter les espaces (attention aux noms de fichier ou de répertoire qui en contiennent !)
Dim Tablo() As String
Tablo = Split(Command(), " ")
Et tu auras la liste des mots séparés par des espaces dans Tablo(0) à Tablo(UBound(Tablo)).
A toi de les analyser pour savoir si un espace est un séparateur ou un espace dans un nom de fichier ou répertoire

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
18 janv. 2006 à 18:35
Dans ton esemple, "toto.txt" se trouveras dans Tablo(UBound(Tablo))
0
cs_Zacland Messages postés 35 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 15 mai 2007
19 janv. 2006 à 09:35
Merciiiiiii !!! ^^
0
Rejoignez-nous