J'ai créé une macro qui lance un fichier .bat dans une fenêtre DOS.
Comment indiquer à cette macro d'attendre la fin du traitement .bat pour
exécuter la suite ?
A l'heure actuelle, la macro s'exécute sans attendre la fermeture de cette
fenêtre.
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
Loutox
salut bernard voici un truc que j'avais récupéré sur le ng access (vba) c'est brut de fonderie et je ne l'ai pas testé, mais si ça peut t'aider :
c'est une fonction pour attendre la fin d'une commande DOS
Option Explicit
Private Type STARTUPINFO cb As Long lpReserved As String lpDesktop As String lpTitle As String dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Long hStdInput As Long hStdOutput As Long hStdError As Long End Type
Private Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessID As Long dwThreadID As Long End Type
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _ hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32" (ByVal _ lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _ lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _ ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _ ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _ lpStartupInfo As STARTUPINFO, lpProcessInformation As _ PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal _ hObject As Long) As Long
' Wait for the shelled application to finish: Do ReturnValue = WaitForSingleObject(proc.hProcess, 0) DoEvents Loop Until ReturnValue <> 258
ReturnValue = CloseHandle(proc.hProcess) End Sub
salut bernard
voici un truc que j'avais récupéré sur le ng access (vba)
c'est brut de fonderie et je ne l'ai pas testé, mais si ça peut t'aider :
c'est une
fonction pour attendre la fin d'une commande DOS
Option Explicit
Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessID As Long
dwThreadID As Long
End Type
Private Declare Function WaitForSingleObject
Lib "kernel32" (ByVal _
hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32"
(ByVal _
lpApplicationName As Long, ByVal lpCommandLine As
String, ByVal _
lpProcessAttributes As Long, ByVal lpThreadAttributes
As Long, _
ByVal bInheritHandles As Long, ByVal dwCreationFlags As
Long, _
ByVal lpEnvironment As Long, ByVal lpCurrentDirectory
As Long, _
lpStartupInfo As STARTUPINFO, lpProcessInformation As _
PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal
_
hObject As Long) As Long
salut bernard voici un truc que j'avais récupéré sur le ng access (vba) c'est brut de fonderie et je ne l'ai pas testé, mais si ça peut t'aider :
c'est une fonction pour attendre la fin d'une commande DOS
Option Explicit
Private Type STARTUPINFO cb As Long lpReserved As String lpDesktop As String lpTitle As String dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Long hStdInput As Long hStdOutput As Long hStdError As Long End Type
Private Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessID As Long dwThreadID As Long End Type
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _ hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32" (ByVal _ lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _ lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _ ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _ ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _ lpStartupInfo As STARTUPINFO, lpProcessInformation As _ PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal _ hObject As Long) As Long
' Wait for the shelled application to finish: Do ReturnValue = WaitForSingleObject(proc.hProcess, 0) DoEvents Loop Until ReturnValue <> 258
ReturnValue = CloseHandle(proc.hProcess) End Sub
Denis Michon
Bonsoir Bernard,
Un truc qui je crois provient de Laurent Longre ...."trafiqué" peut être par Frédéric Sigonneau !!!
Pour tes besoins, tu n'as qu'à renseigner dans la procédure : " Sub TestWait() " , le chemin du fichier .Bat à exécuter dans la ligne de code suivante : chemin = "c:Windowssystem32Winmine.exe"
à copier dans un module standard : '======================= 'Cette section doit être dans le HAUT d'un module standard. 'C'est la déclaration des API Declare Function WaitForSingleObject Lib "Kernel32" _ (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Declare Function OpenProcess Lib "Kernel32" _ (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long Public Const INFINITE = &HFFFF
Function LanceEtAttendLaFin(ByVal CheminComplet As String) As Long Dim ProcessHandle As Long Dim ProcessId As Long, ret&
Function WaitForEnd(Fichier) As Long Set wsh = CreateObject("WScript.Shell") WaitForEnd = wsh.Run(Fichier, 1, True)
End Function
Sub TestWait() chemin = "c:Windowssystem32Winmine.exe" WaitForEnd chemin MsgBox "terminé" End Sub '=======================
Salutations!
"Bernard CLAUSSE" a écrit dans le message de news:bmmp04$7ma$
Boujour à tous,
J'ai créé une macro qui lance un fichier .bat dans une fenêtre DOS. Comment indiquer à cette macro d'attendre la fin du traitement .bat pour exécuter la suite ?
A l'heure actuelle, la macro s'exécute sans attendre la fermeture de cette fenêtre.
Merci Bernard
Bonsoir Bernard,
Un truc qui je crois provient de Laurent Longre ...."trafiqué" peut être par Frédéric Sigonneau !!!
Pour tes besoins, tu n'as qu'à renseigner dans la procédure : " Sub TestWait() " , le chemin du fichier .Bat à
exécuter dans la ligne de code suivante : chemin = "c:Windowssystem32Winmine.exe"
à copier dans un module standard :
'======================= 'Cette section doit être dans le HAUT d'un module standard.
'C'est la déclaration des API
Declare Function WaitForSingleObject Lib "Kernel32" _
(ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Declare Function OpenProcess Lib "Kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Public Const INFINITE = &HFFFF
Function LanceEtAttendLaFin(ByVal CheminComplet As String) As Long
Dim ProcessHandle As Long
Dim ProcessId As Long, ret&
Function WaitForEnd(Fichier) As Long
Set wsh = CreateObject("WScript.Shell")
WaitForEnd = wsh.Run(Fichier, 1, True)
End Function
Sub TestWait()
chemin = "c:Windowssystem32Winmine.exe"
WaitForEnd chemin
MsgBox "terminé"
End Sub
'=======================
Salutations!
"Bernard CLAUSSE" <bernard.clausse@wanadoo.fr> a écrit dans le message de news:bmmp04$7ma$1@news-reader5.wanadoo.fr...
Boujour à tous,
J'ai créé une macro qui lance un fichier .bat dans une fenêtre DOS.
Comment indiquer à cette macro d'attendre la fin du traitement .bat pour
exécuter la suite ?
A l'heure actuelle, la macro s'exécute sans attendre la fermeture de cette
fenêtre.
Un truc qui je crois provient de Laurent Longre ...."trafiqué" peut être par Frédéric Sigonneau !!!
Pour tes besoins, tu n'as qu'à renseigner dans la procédure : " Sub TestWait() " , le chemin du fichier .Bat à exécuter dans la ligne de code suivante : chemin = "c:Windowssystem32Winmine.exe"
à copier dans un module standard : '======================= 'Cette section doit être dans le HAUT d'un module standard. 'C'est la déclaration des API Declare Function WaitForSingleObject Lib "Kernel32" _ (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Declare Function OpenProcess Lib "Kernel32" _ (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long Public Const INFINITE = &HFFFF
Function LanceEtAttendLaFin(ByVal CheminComplet As String) As Long Dim ProcessHandle As Long Dim ProcessId As Long, ret&
Function WaitForEnd(Fichier) As Long Set wsh = CreateObject("WScript.Shell") WaitForEnd = wsh.Run(Fichier, 1, True)
End Function
Sub TestWait() chemin = "c:Windowssystem32Winmine.exe" WaitForEnd chemin MsgBox "terminé" End Sub '=======================
Salutations!
"Bernard CLAUSSE" a écrit dans le message de news:bmmp04$7ma$
Boujour à tous,
J'ai créé une macro qui lance un fichier .bat dans une fenêtre DOS. Comment indiquer à cette macro d'attendre la fin du traitement .bat pour exécuter la suite ?
A l'heure actuelle, la macro s'exécute sans attendre la fermeture de cette fenêtre.
Merci Bernard
Denis Michon
Bonsoir Bernard,
Si ton problème est de réussir à fermer la fenêtre "Dos" à la fin du batch file, voici une procédure plus facile d'application :
Sub PlusSimple() Shell ("command.com /C C:ExcelMonFichier.bat") End Sub
Si tu veux que la fenêtre DOS reste ouverte après exécution, remplace /c par /k
Salutations!
"Bernard CLAUSSE" a écrit dans le message de news:bmmp04$7ma$
Boujour à tous,
J'ai créé une macro qui lance un fichier .bat dans une fenêtre DOS. Comment indiquer à cette macro d'attendre la fin du traitement .bat pour exécuter la suite ?
A l'heure actuelle, la macro s'exécute sans attendre la fermeture de cette fenêtre.
Merci Bernard
Bonsoir Bernard,
Si ton problème est de réussir à fermer la fenêtre "Dos" à la fin du batch file, voici une procédure plus facile
d'application :
Sub PlusSimple()
Shell ("command.com /C C:ExcelMonFichier.bat")
End Sub
Si tu veux que la fenêtre DOS reste ouverte après exécution, remplace /c
par /k
Salutations!
"Bernard CLAUSSE" <bernard.clausse@wanadoo.fr> a écrit dans le message de news:bmmp04$7ma$1@news-reader5.wanadoo.fr...
Boujour à tous,
J'ai créé une macro qui lance un fichier .bat dans une fenêtre DOS.
Comment indiquer à cette macro d'attendre la fin du traitement .bat pour
exécuter la suite ?
A l'heure actuelle, la macro s'exécute sans attendre la fermeture de cette
fenêtre.
Si ton problème est de réussir à fermer la fenêtre "Dos" à la fin du batch file, voici une procédure plus facile d'application :
Sub PlusSimple() Shell ("command.com /C C:ExcelMonFichier.bat") End Sub
Si tu veux que la fenêtre DOS reste ouverte après exécution, remplace /c par /k
Salutations!
"Bernard CLAUSSE" a écrit dans le message de news:bmmp04$7ma$
Boujour à tous,
J'ai créé une macro qui lance un fichier .bat dans une fenêtre DOS. Comment indiquer à cette macro d'attendre la fin du traitement .bat pour exécuter la suite ?
A l'heure actuelle, la macro s'exécute sans attendre la fermeture de cette fenêtre.
Merci Bernard
Bernard CLAUSSE
Merci beaucoup pour vos coups de mains !
Je teste de suite.
Bernard
"Denis Michon" a écrit dans le message news: LdGjb.139$
Bonsoir Bernard,
Si ton problème est de réussir à fermer la fenêtre "Dos" à la fin du batch file, voici une procédure plus facile
d'application :
Sub PlusSimple() Shell ("command.com /C C:ExcelMonFichier.bat") End Sub
Si tu veux que la fenêtre DOS reste ouverte après exécution, remplace /c par /k
Salutations!
"Bernard CLAUSSE" a écrit dans le message de news:bmmp04$7ma$
Boujour à tous,
J'ai créé une macro qui lance un fichier .bat dans une fenêtre DOS. Comment indiquer à cette macro d'attendre la fin du traitement .bat pour exécuter la suite ?
A l'heure actuelle, la macro s'exécute sans attendre la fermeture de cette fenêtre.
Merci Bernard
Merci beaucoup pour vos coups de mains !
Je teste de suite.
Bernard
"Denis Michon" <denis.michon@cgocable.ca> a écrit dans le message news:
LdGjb.139$V11.108@charlie.risq.qc.ca...
Bonsoir Bernard,
Si ton problème est de réussir à fermer la fenêtre "Dos" à la fin du batch
file, voici une procédure plus facile
d'application :
Sub PlusSimple()
Shell ("command.com /C C:ExcelMonFichier.bat")
End Sub
Si tu veux que la fenêtre DOS reste ouverte après exécution, remplace /c
par /k
Salutations!
"Bernard CLAUSSE" <bernard.clausse@wanadoo.fr> a écrit dans le message de
news:bmmp04$7ma$1@news-reader5.wanadoo.fr...
Boujour à tous,
J'ai créé une macro qui lance un fichier .bat dans une fenêtre DOS.
Comment indiquer à cette macro d'attendre la fin du traitement .bat pour
exécuter la suite ?
A l'heure actuelle, la macro s'exécute sans attendre la fermeture de cette
fenêtre.
"Denis Michon" a écrit dans le message news: LdGjb.139$
Bonsoir Bernard,
Si ton problème est de réussir à fermer la fenêtre "Dos" à la fin du batch file, voici une procédure plus facile
d'application :
Sub PlusSimple() Shell ("command.com /C C:ExcelMonFichier.bat") End Sub
Si tu veux que la fenêtre DOS reste ouverte après exécution, remplace /c par /k
Salutations!
"Bernard CLAUSSE" a écrit dans le message de news:bmmp04$7ma$
Boujour à tous,
J'ai créé une macro qui lance un fichier .bat dans une fenêtre DOS. Comment indiquer à cette macro d'attendre la fin du traitement .bat pour exécuter la suite ?
A l'heure actuelle, la macro s'exécute sans attendre la fermeture de cette fenêtre.