Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Effectuer la même chose qu'un bat ?

  • Initiateur de la discussion Initiateur de la discussion Benoit.Be
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Benoit.Be

Guest
Bonjour,

J'ai une macro qui lance un fichier load.bat celui ci contient les lignes suivante :
Code:
d:
cd:\Temp
db_load.exe %1
Pause

Dans ma macro j'execute un
Code:
Shell("c:\Test\load.bat " & myFile,vbMaximizedFocus)

Ceci marche très bien. Excel lance une boite de commande qui execute mon db_load et attend que j'appuie sur une touche pour la fermer.

J'aurai voulu savoir si il y a moyen d'effectuer le code du .bat sans executer celui-ci pour rendre ma macro excel autonome et ne plus devoir recopier le fichier .bat
 
Re : Effectuer la même chose qu'un bat ?

Bonjour

Tu peux assu utiliser VBS couplé avec VBA

(Windows Script Host)

exemple:
SOURCE:Batch Scripts for Windows
Code:
'//========================================
'// start an application, feed key strokes
'//========================================
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run("notepad")
WScript.Sleep(100)
'// wait 100 ms
WshShell.AppActivate("Notepad")
WScript.Sleep(100)
WshShell.SendKeys("Hello, Jialong")
WshShell.SendKeys("~")
WshShell.SendKeys("From WHS script")
 
Dernière édition:
Re : Effectuer la même chose qu'un bat ?

Merci de vos réponse

Avec
Code:
Shell("d:\Temp\db_load.exe " & myFile,vbMaximizedFocus)
il ne fait pas la pause 🙄

Je vais approfondir la solution de Staple1600
 
Re : Effectuer la même chose qu'un bat ?

Re all,

Pour attendre la fin d'un process, met ce code dans une module

Code:
'S'appelle comme cela :
'TaskId = Shell("C:\Program Files\WinZip\WINZIP32.EXE -min -a -ex -r " & Chr(34) & RepTemp & FichierZip & Chr(34) & " " & Chr(34) & RepTemp & FichierSource & Chr(34))
'Call CheckEndOfProcess ' Appelle la vérification de fin de ZIP
'DoEvents
Dim TaskId As Long
 
Private Const WAIT_INFINITE = -1&
Private Const SYNCHRONIZE = &H100000
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
  
Private Declare Function RegisterWindowMessage _
        Lib "user32" Alias "RegisterWindowMessageA" _
        (ByVal lpString As String) As Long
Private Declare Function FindWindow Lib "user32" _
        Alias "FindWindowA" (ByVal lpClassName As Any, _
        ByVal lpWindowName As Any) As Long
Private Declare Function SendMessage Lib "user32" _
        Alias "SendMessageA" (ByVal hwnd As Long, _
        ByVal wMsg As Long, ByVal wParam As Long, _
        lParam As Any) As Long
Sub CheckEndOfCompress() ' Procédure trouvée sur le net !
Dim hProcess As Long
   hProcess = OpenProcess(SYNCHRONIZE, True, TaskId)
   Call WaitForSingleObject(hProcess, WAIT_INFINITE)
   CloseHandle hProcess
End Sub
Ce n'est pas de moi, mais je l'ai trouvé je ne sais plus où ! Et comme indiqué dans les commentaires tu l'appelles comme ceci :

Code:
TaskId = Shell("C:\Program Files\WinZip\WINZIP32.EXE -min -a -ex -r " & Chr(34) & RepTemp & FichierZip & Chr(34) & " " & Chr(34) & RepTemp & FichierSource & Chr(34))
Call CheckEndOfProcess ' Appelle la vérification de fin de ZIP
DoEvents

Tant que la procédure que tu envoies à la fonction n'est pas finie, elle ne rend pas la main !

A+

Creepy
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…