En VBA
Si Shell lance un programme .exe, par quel moyen peut-on faire attendre la
prochaine instruction d'excel ?
Excel continue, et peut ne pas tenir compte des résultats de retour du
prg.exe lancé.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-François Aubert
Salut Jacky, Je ne sais pas si c'est ce que tu souhaites. Si tu veux qu'Excel attende l'ouverture, ici c'est la calculatrice, tu peux utiliser ceci: (sur la base d'une API)
'************************* Private Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Declare Function PostMessage Lib "user32" _ Alias "PostMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long Private Declare Function GetClassName Lib "user32" _ Alias "GetClassNameA" (ByVal hwnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Private Declare Function ShowWindow Lib "user32" _ (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Sub Form_Load() ''''KPD-Team 1998 ''''URL: http://www.allapi.net/ ''''E-Mail: Dim WinWnd As Long, Ret As String Dim RetVal As Long, lpClassName As String
Ret = "calculatrice" ' <<<< le nom exacte de la fenêtre de ton programme
'''''Search the window WinWnd = FindWindow(vbNullString, Ret) If WinWnd = 0 Then estOuvert = False: Exit Sub '''''Show the window ' ShowWindow WinWnd, SW_SHOWNORMAL '''''Create a buffer ' lpClassName = Space(256) '''''retrieve the class name ' RetVal = GetClassName(WinWnd, lpClassName, 256) '''''''Show the classname ' MsgBox "Classname: " + Left$(lpClassName, RetVal)
estOuvert = True
''''''Post a message to the window to close itself ' PostMessage WinWnd, WM_CLOSE, 0&, 0& End Sub
' Exécute la calculatrice. RetVal = Shell("C:WINDOWSCALC.EXE", 1) Do While estOuvert = False Form_Load Loop
' la suite.... '...............
End Sub
'***************************
-- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"Jacky" a écrit dans le message de news:
Bonsoir,
En VBA Si Shell lance un programme .exe, par quel moyen peut-on faire attendre la prochaine instruction d'excel ? Excel continue, et peut ne pas tenir compte des résultats de retour du prg.exe lancé.
Bonne soirée JJ
Salut Jacky,
Je ne sais pas si c'est ce que tu souhaites.
Si tu veux qu'Excel attende l'ouverture, ici c'est la calculatrice, tu peux utiliser ceci:
(sur la base d'une API)
'*************************
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" _
Alias "PostMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Function GetClassName Lib "user32" _
Alias "GetClassNameA" (ByVal hwnd As Long, _
ByVal lpClassName As String, _
ByVal nMaxCount As Long) As Long
Private Declare Function ShowWindow Lib "user32" _
(ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Sub Form_Load()
''''KPD-Team 1998
''''URL: http://www.allapi.net/
''''E-Mail: KPDTeam@Allapi.net
Dim WinWnd As Long, Ret As String
Dim RetVal As Long, lpClassName As String
Ret = "calculatrice" ' <<<< le nom exacte de la fenêtre de ton programme
'''''Search the window
WinWnd = FindWindow(vbNullString, Ret)
If WinWnd = 0 Then estOuvert = False: Exit Sub
'''''Show the window
' ShowWindow WinWnd, SW_SHOWNORMAL
'''''Create a buffer
' lpClassName = Space(256)
'''''retrieve the class name
' RetVal = GetClassName(WinWnd, lpClassName, 256)
'''''''Show the classname
' MsgBox "Classname: " + Left$(lpClassName, RetVal)
estOuvert = True
''''''Post a message to the window to close itself
' PostMessage WinWnd, WM_CLOSE, 0&, 0&
End Sub
' Exécute la calculatrice.
RetVal = Shell("C:WINDOWSCALC.EXE", 1)
Do While estOuvert = False
Form_Load
Loop
' la suite....
'...............
End Sub
'***************************
--
Amicalement
Jean-François Aubert
{Vaudois de la Côte Lémanique}
"Jacky" <Jacky.jaeg@wanadoo.fr> a écrit dans le message de
news:eDwBkSgfDHA.460@TK2MSFTNGP12.phx.gbl...
Bonsoir,
En VBA
Si Shell lance un programme .exe, par quel moyen peut-on faire attendre la
prochaine instruction d'excel ?
Excel continue, et peut ne pas tenir compte des résultats de retour du
prg.exe lancé.
Salut Jacky, Je ne sais pas si c'est ce que tu souhaites. Si tu veux qu'Excel attende l'ouverture, ici c'est la calculatrice, tu peux utiliser ceci: (sur la base d'une API)
'************************* Private Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Declare Function PostMessage Lib "user32" _ Alias "PostMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long Private Declare Function GetClassName Lib "user32" _ Alias "GetClassNameA" (ByVal hwnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Private Declare Function ShowWindow Lib "user32" _ (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Sub Form_Load() ''''KPD-Team 1998 ''''URL: http://www.allapi.net/ ''''E-Mail: Dim WinWnd As Long, Ret As String Dim RetVal As Long, lpClassName As String
Ret = "calculatrice" ' <<<< le nom exacte de la fenêtre de ton programme
'''''Search the window WinWnd = FindWindow(vbNullString, Ret) If WinWnd = 0 Then estOuvert = False: Exit Sub '''''Show the window ' ShowWindow WinWnd, SW_SHOWNORMAL '''''Create a buffer ' lpClassName = Space(256) '''''retrieve the class name ' RetVal = GetClassName(WinWnd, lpClassName, 256) '''''''Show the classname ' MsgBox "Classname: " + Left$(lpClassName, RetVal)
estOuvert = True
''''''Post a message to the window to close itself ' PostMessage WinWnd, WM_CLOSE, 0&, 0& End Sub
' Exécute la calculatrice. RetVal = Shell("C:WINDOWSCALC.EXE", 1) Do While estOuvert = False Form_Load Loop
' la suite.... '...............
End Sub
'***************************
-- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"Jacky" a écrit dans le message de news:
Bonsoir,
En VBA Si Shell lance un programme .exe, par quel moyen peut-on faire attendre la prochaine instruction d'excel ? Excel continue, et peut ne pas tenir compte des résultats de retour du prg.exe lancé.