Vba Excel: Comment utiliser la fonction Command() ? [Résolu]

cs_Zacland 36 Messages postés mercredi 1 janvier 2003Date d'inscription 15 mai 2007 Dernière intervention - 18 janv. 2006 à 17:48 - Dernière réponse : cs_Zacland 36 Messages postés mercredi 1 janvier 2003Date d'inscription 15 mai 2007 Dernière intervention
- 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 ...
Afficher la suite 

4 réponses

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

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

ctac
Cette réponse vous a-t-elle aidé ?  
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 18 janv. 2006 à 18:33
0
Utile
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)
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 18 janv. 2006 à 18:35
0
Utile
Dans ton esemple, "toto.txt" se trouveras dans Tablo(UBound(Tablo))
cs_Zacland 36 Messages postés mercredi 1 janvier 2003Date d'inscription 15 mai 2007 Dernière intervention - 19 janv. 2006 à 09:35
0
Utile
Merciiiiiii !!! ^^

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.