OVH Cloud OVH Cloud

instruction shell

1 réponse
Avatar
Jacky
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

1 réponse

Avatar
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

Const SW_SHOWNORMAL = 1
Const WM_CLOSE = &H10
Const gcClassnameMSWord = "OpusApp"
Const gcClassnameMSExcel = "XLMAIN"
Const gcClassnameMSIExplorer = "IEFrame"
Const gcClassnameMSVBasic = "wndclass_desked_gsk"
Const gcClassnameNotePad = "Notepad"
Const gcClassnameMyVBApp = "ThunderForm"

Public estOuvert As Boolean


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

'...................................................................................................
..

Sub lance_programme()
Dim RetVal

' 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