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 :

Shellexecute : Peut-on lancer un exécutable ? [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 395
    Par défaut Shellexecute : Peut-on lancer un exécutable ?
    Bonjour,

    j'hésite car je ne sais plus si ShellExecute permet aussi de lancer un exécutable (avec passage de paramètres) ou si Shellexecute permet seulement d'ouvrir/imprimer.... des fichiers au moyen du programme associé.

    je veux lancer Irfanview pour convertir un .PCX en .JPG.

    Je ne parviens pas à le faire avec Shellexecute mais avec Shell cela fonctionne.

    Voici mon code actuel avec Shell :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub test_pcx2()
    Dim quote As String
    Dim proc As String
    Dim parm1 As String
    Dim parm2 As String
    Dim cmd As String
    Dim ret As Variant
     
    proc = "C:\Program Files\IrfanView\i_view32.exe"
    parm1 = "C:\Dessins\06391.pcx"
    parm2 = "/convert=c:\Dessins\06391.jpg"
    quote = ""
     
     
    cmd = quote & proc & quote & " " & quote & parm1 & quote & " " & quote & parm2 & quote
    ret = Shell(cmd, vbNormalFocus)
    End Sub
    Merci de me dire si c'est possible et si oui de m'indiquer la syntaxe.

    La commande a lancer est donc C:\Program Files\IrfanView\i_view32.exe C:\Dessins\06391.pcx /convert=c:\Dessins\06391.jpg

    Pour la petite histoire, ce code est nécessaire car Excel ne permet plus d'importer des images sous formes PCX, mais pour les JPG pas de problème.

    D'avance merci.

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Hello,

    A priori oui, Shellexecute permet de lancer un exécutable.
    Voici ce qu'on peut lire sur le site "Aide et Support" de Microsoft
    Vous pouvez utiliser la fonction ShellExecute() de l'API Windows pour démarrer l'application associée à un document donné sans connaître le nom de l'application associée. Par exemple, vous pouvez démarrer le programme Paintbrush en passant le nom de fichier ARCADE.BMP à la fonction ShellExecute().
    Par contre en ce qui concerne le passage de paramètres et comment l'utiliser...aucune idée

    Un truc me chipote, tu dis :
    Je ne parviens pas à le faire avec Shellexecute mais avec Shell cela fonctionne
    ça fonctionne avec Shell alors pourquoi vouloir utiliser Shellexecute ?

  3. #3
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 395
    Par défaut
    Bonjour Fring,
    ça fonctionne avec Shell alors pourquoi vouloir utiliser Shellexecute ?
    Juste parce que je trouve ShellExecute beaucoup plus propre au niveau utilisation et bien moins fastidieux dans le gestion des quotes.

    _-------------------Edit

    Et puis ShellExecute est bien 10 x plus rapide que shell.

    Voilà, en fouillant sur le net, j'ai fini par trouver comment faire : (Edit : Et encore bien mieux.

    le code avec Shell :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    '***************************************************************************
    '*  Convert PCX File To JPG File using Irfanview Convertion functionnality *
    '***************************************************************************
    Sub Convert_Pcx_To_Jpg()
    Dim quote As String
    Dim Proc As String
    Dim parm1 As String
    Dim parm2 As String
    Dim cmd As String
    Dim ret As Variant
     
    Proc = PCX_Converter
    parm1 = From_Pcx_FullFileName
    parm2 = "/convert=" & To_Jpg_FullFileName
    quote = ""
     
     
    cmd = quote & Proc & quote & " " & quote & parm1 & quote & " " & quote & parm2 & quote
    ret = Shell(cmd, vbNormalFocus)
    End Sub
    qui devient le code suivant avec ShellExecute bine plus performant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    '***************************************************************************
    '*  Convert PCX File To JPG File using Irfanview Convertion functionnality *
    '***************************************************************************
    Sub Convert_Pcx_To_Jpg()
     
    Dim Proc As String
    Dim parm1 As String
    Dim parm2 As String
    Dim Parms As String
    Dim ret As Variant
     
    Proc = PCX_Converter
    parm1 = From_Pcx_FullFileName
    parm2 = "/convert=" & To_Jpg_FullFileName
    quote = ""
     
     
    Parms = parm1 & " " & parm2
    ret = ShellExecute(0, "open", Proc, Parms, "", 0)
    End Sub
    Merci pour ton aide Fring.

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 96
    Par défaut
    shellExecute n'est pas reconnu en vba
    j'ai beau essayé mis ca ne marche pas
    j'ai procéder autrement
    j'ai créer un fichier .bat qui exécute le raccourci
    et je lance mon .bat avec la commande shell
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Shell("C:\test.bat", vbHide)
    en mettant le vbHide pour lancer l'exécution en arrière plan
    même si c'est visible dans la barre d'état mais c'est pas un gros problème

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

Discussions similaires

  1. [Système] Problème pour lancer un exécutable
    Par zackrel dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2006, 08h21
  2. Réponses: 2
    Dernier message: 18/02/2006, 02h53
  3. [Unix] Lancer un exécutable
    Par Flo2 dans le forum Cobol
    Réponses: 2
    Dernier message: 02/10/2005, 21h57
  4. [D7] Comment lancer un exécutable à distance ?
    Par raoulmania dans le forum Web & réseau
    Réponses: 10
    Dernier message: 20/09/2005, 18h47
  5. Lancer un exécutable en PL/SQL
    Par Doctor Z dans le forum PL/SQL
    Réponses: 23
    Dernier message: 01/02/2005, 14h51

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