Macro & Shell

Darkblaste

XLDnaute Nouveau
Rebonjour le forum,

Je vous pose une autre question sur le shell (qui n'a pas vraiment de rapport avec mon autre question de récupe de résultat) pour savoir un petit truck.

Voila ma macro execute plusieur commande shell et je souhaiterai savoir si il est possible que ma macro s'arrete pendant l'execution des commande et reprenne dés que la commande shell se ferme... :huh:

Merci
 

Creepy

XLDnaute Accro
Hello le Forum, Darkblaste,

Oui oui c'est tout à fait possible. Il suffit de faire appel à une api et voila le tour est joué.

1 - Dans un module au début colle ca :
Code:
Private Declare Function OpenProcess Lib 'kernel32' _
  (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
   
Private Declare Function CloseHandle Lib 'kernel32' _
  (ByVal hObject As Long) As Long
Public FichierSave As Variant, taskId As Long

2 - Juste en dessous copie cette function :
Code:
Sub CheckEndOfCompress()
Dim hProcess As Long
   hProcess = OpenProcess(SYNCHRONIZE, True, taskId)
   Call WaitForSingleObject(hProcess, WAIT_INFINITE)
   CloseHandle hProcess
End Sub

3 - Et enfin pour l'appeller fait comme ceci :

Code:
taskId = Shell(Chr(34) & Chemin & Compresseur & Chr(34) & ' ' & LigneCommande & ' ' & Chr(34) & CheminSave & FichierZip & Chr(34) _
    & ' ' & Chr(34) & CheminSave & FichierSave & Chr(34))
Call CheckEndOfCompress

Ici je passe en Taskid un shell qui execute une compression avec Winzip et ensuite j'appelle la sub qui vérifie le fin de la compression puis rend la main pour finir mon code

Voila

@+

Creepy
 

Darkblaste

XLDnaute Nouveau
Bonjour le forum, bonjour Creepy

Voila j'ai testé, mais mon soucis est que la macro créée un .bat (qui est composé de plusieurs ligne de ping redirigeant les résultats dans un fichier txt), l'éxecute mais la macro continue sans attendre la fin de tous les ping ce qui pose probleme.
 

Discussions similaires

Réponses
2
Affichages
365
Réponses
1
Affichages
511
Compte Supprimé 979
C