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

Excel Discussion :

Lancement d'un executable avec SHELL dans le CMD (question simplifiée) [XL-2000]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 15
    Points
    15
    Par défaut Lancement d'un executable avec SHELL dans le CMD (question simplifiée)
    Bonjour à tous,

    Je cherche la syntaxe de la commande SHELL pour lancer le CMD et lui entrer la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monExecutable \fichier_entree_1.txt \fichier_entree_2.txt \fichier_sortie.txt
    J'ai déjà essayé plein de trucs, mais rien à faire, je ne comprends rien à la commande SHELL, please help !

    Merci d'avance,
    Gautier

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    salut,
    à toute fin utile, un exemple d'utilisation du batch avec Access...
    http://jpcheck.developpez.com/tutori...ge-parametres/

    si tu peux nous expliciter un peu mieux ton problème au passage
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Gautier.B et le forum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monExecutable \fichier_entree_1.txt \fichier_entree_2.txt \fichier_sortie.txt
    Pour moi, ce ne sont que des paramètres, et non une commande. Quelle application ?
    A+

  4. #4
    Membre éprouvé
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Points : 1 079
    Points
    1 079
    Par défaut
    Bonjour,

    Voici un exemple de lancement de shell dans une macro. Ce shell enchaîne plusieurs commandes dont une liste une arborescence.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Var = Shell("cmd /k echo Attendez...... && " & "Dir /s " & Chr(34) & Chemin & Chr(34) & " > listing.txt && Pause && Exit", 1)
    Un autre exemple pour la commande :
    csvde -s dserv71 -l "displayName,givenName,memberOf" -r "(postalcode=*71*)" -d "ou=ANNUAIRE,dc=intranet,dc=nom_domaine,dc=fr" -f personnes.csv, 4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Var = Shell("cmd /c " & "csvde -s serv71 -l " & """" & "displayName,givenName,memberOf" _
        & """" & " -r " & """" & "(postalcode=*71*)" & """" & " -d " & """" _
        & "ou=ANNUAIRE,dc=intranet,dc=nom_domaine,dc=fr" & """" & " -f personnes.csv", 4)
    Pour mettre au point des commandes complexes, je les affiche d'abord avec un MsgBox pour vérifier que la syntaxe est correcte

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Bonjour JP Check, Gorfael et ouisansdoute,

    J'ai vu vos réponses (merci !!!) et suis entrain d'essayer de les appliquer à mon cas (ça risque de me prendre un p'tit peu d'temps) car finalement c'est toute la syntaxe du CMD que je dois apprendre !

    En attendant, voici quelques détails sur mon cas :
    J'ai un exécutable codé en Fortran (monExec.exe) qui lit 2 fichiers d'entrée (fichier_entree1.txt et fichier_entree2.txt) devant se trouver dans le même répertoire que l'exécutable, fait des calculs, puis écrit ses résultats dans un fichier de sortie (fichier_sortie.txt) créé ou écrasé dans le même répertoire.

    Ce que je voudrais faire en VBA c'est, grâce à SHELL ou maintenant peut-être en passant par un .bat, d'abord me placer dans le bon répertoire, lancer mon executable et lui indiquer les fichiers d'entrée et les fichiers de sortie avec la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    monExec \fichier_entree1.txt \fichier_entree2.txt \fichier_sortie.txt
    'N.B.: monExec peut être interprété comme une commande externe au CMD
    A bientôt quand j'aurais fait quelques tentatives !

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Bonjour à tous,

    J'ai résolu mon cas en passant par un BATCH (que je crée, édite, exécute, puis détruis). Merci à JPCheck pour m'avoir orienté vers les bon tutos !
    Il est sans doute possible d'écrire les 3 lignes que je mets dans le BATCH directement dans le SHELL avec la syntaxe proposée par ouisansdoute mais dsl j'ai pas le temps de me pencher dessus.
    Voici le code qui crée, édite puis exécute mon BATCH (l'essentiel de ce qui me manquait)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    iNumFichier = FreeFile
    Open ActiveWorkbook.Path & "\monExec.bat" For Output As iNumFichier
    Print #iNumFichier, Left(ActiveWorkbook.Path, 2)
    Print #iNumFichier, "CD " & Chr$(34) & ActiveWorkbook.Path & Chr$(34)
    Print #iNumFichier, "monExec.exe \fichier_entree1.txt \fichier_entree2.txt \fichier_sortie.txt"
    Close iNumFichier
    lShell = Shell(ActiveWorkbook.Path & "\monExec.bat", vbMinimizedFocus)
    Par contre j'ai un autre soucis avec un autre executable du même acabit (codé en Fortran, réclame le nom du fichier d'entrée et le nom de 2 fichiers de sortie), sauf qu'il est plus contraignant dans l'appel des noms de ces différents fichiers. Je peux poser ma question ici ou j'ouvre un autre topic ?

  7. #7
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    bonjour,

    Il est plus simple d'ouvrir un autre topic.

    Il me semble en plus que tu est sur le forum excel, il vaut mieux le créer dans le sous-forum VBA.

    Juste une remarque sur ActiveWorkbook en testant il m'est arrivé de créer des fichiers ailleurs car mon classeur actif était différent, j'ai donc remplaçé ActiveWorkbook par ThisWorkbook, qui est a mon sens plus sur.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Merci pour l'info, je vais me renseigner sur ThisWorkbook (ça me rappelle le java!) pour voir si je peux rendre mon code plus propre !
    Au passage j'ai mis le topic en résolu, à l'époque je m'étais laissé une semaine avant de cliquer dessus et finalement j'ai oublié^^

  9. #9
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    En quelques mots ActiveWorkbook est le classeur actif et il n'est pas toujours aisé de savoir quel est le classeur actif au moment de l'execution d'une macro, par contre ThisWorkbook représente le classeur dans lequel on se trouve (ou se trouve la macro) son utilisation est donc à mon sens plus sure.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Merci pour l'info, je n'avais pas eu le temps aujourd'hui de chercher les explications, je vais appliquer ce conseil dès mes prochaines macro

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

Discussions similaires

  1. Ordre d'execution avec ajout dans DOM
    Par pelloq1 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/03/2012, 10h04
  2. Lancement d'un executable avec fichier associé
    Par EricNO dans le forum VB.NET
    Réponses: 2
    Dernier message: 09/03/2011, 09h04
  3. [XL-2000] Lancement d'executables avec Shell, générer des lignes de commande du CMD
    Par Gautier.B dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/04/2009, 09h29
  4. executer un shell dans un programme php?
    Par motivée dans le forum Ubuntu
    Réponses: 3
    Dernier message: 17/11/2008, 11h29
  5. Lancement de l'executable avec un fichier.bat
    Par krolineeee dans le forum Windows
    Réponses: 3
    Dernier message: 28/07/2006, 16h03

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