Vba Excel: Comment utiliser la fonction Command() ?

Résolu
Signaler
Messages postés
35
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2007
-
Messages postés
35
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2007
-
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

Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
8 juin 2012
4
Bonjour,

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

ctac
3
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Dans ton esemple, "toto.txt" se trouveras dans Tablo(UBound(Tablo))
0
Messages postés
35
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2007

Merciiiiiii !!! ^^
0