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

Macros et VBA Excel Discussion :

Lancer une commande windows depuis une macro Excel


Sujet :

Macros et VBA Excel

  1. #1
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 264
    Points : 19 430
    Points
    19 430
    Billets dans le blog
    63
    Par défaut Lancer une commande windows depuis une macro Excel
    Bonjour à tous,

    Je souhaiterai utiliser un programme MAFFT pour effectuer un alignement/formatage de séquences d'acides aminés :
    http://mafft.cbrc.jp/alignment/softw...ut_cygwin.html

    Le programme prend en arguments 2 fichiers texte (input/output) pour "formater" le fichier input et le copier dans l'output.

    Je souhaiterais donc lancer cette ligne de commande en VBA depuis EXcel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell("cmd.exe /C " & chemin & "\mafft.bat --localpair --out output.txt input.txt", vbNormalFocus)
    où chemin désigne le dossier du fichier mafft.bat

    Malheureusement ça ne passe pas...
    Il me dit toujours, impossible d'ouvrir le fichier Input.txt

    Par contre, quand j'exécute cette commande depuis Windows tout se passe correctement

    Est-ce que je peux exécuter cette commande en VBA ?

    Merci bien

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Test comme ça
    Call Shell("cmd.exe '/C " & chemin & "\mafft.bat --localpair --out output.txt input.txt'", vbNormalFocus)Il est possible qu'il faille encadrer tous les termes par des[']

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Il me semble que Shell est quelquefois capricieux et qu'il faille tripler les guillemets.

    J'essaierais quelque chose comme ceci pour voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell("""cmd.exe /C """ & chemin & """\mafft.bat --localpair --out output.txt input.txt""", vbNormalFocus)
    MPi²

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 264
    Points : 19 430
    Points
    19 430
    Billets dans le blog
    63
    Par défaut
    Bonjour et merci,

    Malheureusement ça ne fonctionne pas :

    Bonsoir,
    Test comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell("cmd.exe '/C " & chemin & "\mafft.bat --localpair --out output.txt input.txt'", vbNormalFocus)
    Il est possible qu'il faille encadrer tous les termes par des[']
    Malheureusement ça ne change rien il lance le batch mais ne peut ouvrir le fichier input.txt comme précédemment

    Bonjour,

    Il me semble que Shell est quelquefois capricieux et qu'il faille tripler les guillemets.

    J'essaierais quelque chose comme ceci pour voir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell("""cmd.exe /C """ & chemin & """\mafft.bat --localpair --out output.txt input.txt""", vbNormalFocus)
    Dans ce cas il ne trouve pas le fichier batch.

    Je vais continuer de chercher dans cette direction

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Peut-être tripler seulement la première partie ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell("""cmd.exe /C """ & chemin & "\mafft.bat --localpair --out output.txt input.txt", vbNormalFocus)
    MPi²

  6. #6
    Invité
    Invité(e)
    Par défaut
    Envois ta commande dans le dans la fenêtre d'exécution début.print et colle la dans la barre d'adresses de Winndows explorer.

    Elle devrait ce lancer.si elle ne marche pas corrige dans la barre d'adresses.

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 264
    Points : 19 430
    Points
    19 430
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par parmi Voir le message
    Peut-être tripler seulement la première partie ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell("""cmd.exe /C """ & chemin & "\mafft.bat --localpair --out output.txt input.txt", vbNormalFocus)
    Même punition, désolé

    Merci à toi de t'intéresser à ce sujet mais je ne comprends pas pourquoi quand il trouve le fichier batch, il indique qu'il ne peut ouvrir l'input.txt

    Est-ce parce qu'il ne le trouve pas ?
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    En fait le problème vient probablement du fait qu'il y a des espaces dans le chemin du fichier.
    Et je pense que c'est là qu'il faudrait tripler...

    Dernier essai pour ma part...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell("cmd.exe /C """ & chemin & """\mafft.bat --localpair --out output.txt input.txt", vbNormalFocus)
    Difficile sans pouvoir tester...
    MPi²

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 264
    Points : 19 430
    Points
    19 430
    Billets dans le blog
    63
    Par défaut
    Désolé toujours pas,

    Merci pour l'info et le reste,

    je vais continuer de mon côté et te souhaite une bonne soirée
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 264
    Points : 19 430
    Points
    19 430
    Billets dans le blog
    63
    Par défaut
    OK, je crois avoir trouvé :

    Il fallait indiquer le chemin complet pour les fichiers input/output.

    Je teste encore demain matin et fermerai la discussion si c'est confirmé

    Merci encore,
    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

Discussions similaires

  1. Lancer une commande telnet depuis une webpage
    Par El-guarro dans le forum ASP.NET
    Réponses: 8
    Dernier message: 04/04/2012, 11h15
  2. Insérer une "command window" dans une GUI
    Par guinotfr dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 09/03/2011, 12h53
  3. Créer une fenêtre Windows depuis une application console
    Par khayyam90 dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/12/2010, 23h56
  4. Réponses: 0
    Dernier message: 28/12/2010, 19h36
  5. Comment récupérer la classe window d'une application wpf depuis une application ext
    Par rsiwpf dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 14/10/2008, 15h10

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