Q
quenotte65
Guest
Bonjour à tous,
Je débute dans le vba et je ne sais pas trop comment faire pour créer une macro qui attendrait la fin de l'éxecution d'un programme.
La difficulté première vient du fait que le programme doit remplir directement un modele qui sera enregistré ensuite en tant que xls.
J'ai mis trouvé un code dans la littérature pour attendre la fin de l'execution du programme mais le probleme est qu'il a besoin de declaration de fonction et le thisworkbook n'accepte pas les déclarations de fonctions apparament
voici ce code
Private Sub Workbook_Open()
'declarations
Dim TaskID As Long
Dim hProc As Long
Dim lExitcode As Long
'attributions aux variables
access_type = &H400
still_active = &H103
program = 'rapports.exe'
On Error Resume Next
TaskID = Shell(program, vbNormalFocus)
hProc = OpenProcess(acces_type, False, TaskID)
'traitements des erreurs
If Err <> 0 Then
MsgBox 'Impossible de démarrer' & program, vbCritical, 'erreur'
Exit Sub
End If
'boucle d'attente
Do
GetExitCodeProcess hProc, lExitcode
DoEvents
Loop While lExitcode = still_active
'fin boucle d'attente
MsgBox program & ' n'est plus l'application active'
'destruction du code du wb
With ActiveWorkbook.VBProject.VBComponents('ThisWorkbook').CodeModule
.DeleteLines 1, .CountOfLines
End With
'fin destruction du code du wb
End Sub
'fonctions
Declare Function OpenProcess Lib 'kernel32' (ByVal dwDesiredAccess As
Long,
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function GetExitCodeProcess Lib 'kernel32' (ByVal hProcess As
Long,
lpExitCode As Long) As Long
Quelqu un peut il m'aider pour resoudre ce probleme?
Je suis ouvert à toute suggestion
A bientot
Je débute dans le vba et je ne sais pas trop comment faire pour créer une macro qui attendrait la fin de l'éxecution d'un programme.
La difficulté première vient du fait que le programme doit remplir directement un modele qui sera enregistré ensuite en tant que xls.
J'ai mis trouvé un code dans la littérature pour attendre la fin de l'execution du programme mais le probleme est qu'il a besoin de declaration de fonction et le thisworkbook n'accepte pas les déclarations de fonctions apparament
voici ce code
Private Sub Workbook_Open()
'declarations
Dim TaskID As Long
Dim hProc As Long
Dim lExitcode As Long
'attributions aux variables
access_type = &H400
still_active = &H103
program = 'rapports.exe'
On Error Resume Next
TaskID = Shell(program, vbNormalFocus)
hProc = OpenProcess(acces_type, False, TaskID)
'traitements des erreurs
If Err <> 0 Then
MsgBox 'Impossible de démarrer' & program, vbCritical, 'erreur'
Exit Sub
End If
'boucle d'attente
Do
GetExitCodeProcess hProc, lExitcode
DoEvents
Loop While lExitcode = still_active
'fin boucle d'attente
MsgBox program & ' n'est plus l'application active'
'destruction du code du wb
With ActiveWorkbook.VBProject.VBComponents('ThisWorkbook').CodeModule
.DeleteLines 1, .CountOfLines
End With
'fin destruction du code du wb
End Sub
'fonctions
Declare Function OpenProcess Lib 'kernel32' (ByVal dwDesiredAccess As
Long,
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function GetExitCodeProcess Lib 'kernel32' (ByVal hProcess As
Long,
lpExitCode As Long) As Long
Quelqu un peut il m'aider pour resoudre ce probleme?
Je suis ouvert à toute suggestion
A bientot