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 :

Lancement executable via VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut Lancement executable via VBA
    Bonjour,

    Quelqu'un saurait-il m’expliquer en détail le code ci dessous (tout ce qu'il y a après la commande Shell) ainsi que la finalité des dll chargées
    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
    23
    24
    25
    26
    Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
     
    Function Lance_Exe(ByVal Executable As String, Optional ByVal Parametres As String = "") As Boolean
     
        Const SYNCHRONIZE = &H100000
        Const WAIT_TIMEOUT = &H102&
        Const TIMEOUT = 100
     
        Dim RetVal, Handle, PIDexe As Long, retour As Boolean
     
        retour = False
        PIDexe = Shell(Executable & " " & Parametres, vbNormalFocus)
        If PIDexe > 0 Then
            Handle = OpenProcess(SYNCHRONIZE, True, PIDexe)
            Do
                RetVal = WaitForSingleObject(Handle, TIMEOUT)
                If RetVal <> WAIT_TIMEOUT Then Exit Do
                DoEvents
            Loop
            CloseHandle (Handle)
            retour = True
        End If
        Lance_Exe = retour
     
    End Function
    J'aurais peut être du poster dans le forum VB, mais je me sers de cette fonction dans le VBA Excel pour lancer des exécutables.

    Merci d'avance

  2. #2
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665

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

Discussions similaires

  1. Lancement executable via Tâches planifiées Windows
    Par nico1492 dans le forum VB.NET
    Réponses: 3
    Dernier message: 14/03/2012, 13h58
  2. [AC-2010] Problème lancement requete via VBA
    Par ijunior dans le forum VBA Access
    Réponses: 11
    Dernier message: 09/10/2011, 16h28
  3. lancement exécutable via un autre executable
    Par roseau dans le forum Windows XP
    Réponses: 2
    Dernier message: 29/04/2008, 08h52
  4. Lancement d'une application via vba
    Par sefir dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/10/2007, 12h00
  5. execute une macro via vba sous access
    Par nes dans le forum Access
    Réponses: 4
    Dernier message: 28/03/2006, 23h15

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