IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Problème execution .bat à partir d'access


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Par défaut Problème execution .bat à partir d'access
    J'essaye d'écrire un code (en ACCESS) qui crée un fichier .bat et ensuite l'exécute. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim vPath As String
    Dim vFile As String
    Dim fNum As Integer
    Dim batFileHandle As Integer
    Dim RetVal As Integer
    vPath = Application.CurrentProject.Path
    vFile = Fichier
    fNum = FreeFile()
    batFileHandle = FreeFile()
     
    Open vPath & "\FtpComm.txt" For Output As fNum
    Connexion (fNum)
    Print #fNum, "put " & vFile & " Temp.mdb" 'upload local filename to server file  : LocalFile [RemoteFile] LocalFile
    Deconnexion (fNum)
    Close fNum
    Open vPath & "\doFtp.bat" For Output As batFileHandle
    Print #batFileHandle, "ftp -s:FtpComm.txt >output.txt" 'execute le fichier batch et écrit les output dans le fichier output
    Close batFileHandle
    RetVal = ExecCmd(vPath & "\doFtp.bat")
    Et le code de la fonction ExecCmd:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function ExecCmd(cmdstr As String) As Long
    Dim wsh As Object
    Set wsh = CreateObject("Wscript.Shell")
    ExecCmd = wsh.Run(cmdstr, 0, True)
    MsgBox ExecCmd
    End Function
    Je ne comprend pas pourquoi mais la valeur retournée par ExecCmd est 2 et le .bat n'a pas été éxécuté.
    J'ai essayé plusieurs codes différent pour ExecCmd avec la fonction Shell et en attendant la fin de l'exécution etc. mais quelque soit le code j'ai tjs le même problème...
    Le problème ne vient pas du fichier .bat car si je clique manuellement dessus pour l'exécuter, ça fonctionne et il fait exactement ce qu'il doit.
    Le chemin vers le .bat est correct lui aussi car dans certains cas cette fonction fonctionne mais pas dans d'autres. Si j'appelle d'abord la fonction GetOpenFileName tout fonctionne parfaitement jusqu'à ce que je referme le fichier acces, sans même que je sélectionne le .bat, je peux appeler cette fonction sans en utiliser le résultat, ça suffit.

    Quelqu'un aurait une idée de ce que ce 2 signifie? Quel est le problème?
    Une solution?

    Merci beaucoup!

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    au lieu de passer par ta fonction ExecCmd qui créer un objet, pourquoi ne pas passer par un plus direct Shell(path_de_ton_fichier_bat) ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Expert confirmé
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Billets dans le blog
    2
    Par défaut
    hmaskens,

    Je ne connaissais cette méthode pour executer un .bat

    Personnellement j'utilise soit le shell décrit par jpcheck voire shellexecute (avec déclaration de l'api)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    'Declaration
     
    Const SW_SHOW = 1
     
    Const SW_SHOWMAXIMIZED = 3
     
    Public Declare Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" _
     
    (ByVal hwnd As Long, _
     
    ByVal lpOperation As String, _
     
    ByVal lpFile As String, _
     
    ByVal lpParameters As String, _
     
    ByVal lpDirectory As String, _
     
    ByVal nShowCmd As Long) As Long
     
    'Encapsulation
     
    Sub RunProgram(ProgramPath As String, Optional args As String, Optional folder As String)
     
    Dim RetVal As Long
     
    On Error Resume Next
     
    RetVal = ShellExecute(0, "open", ProgramPath, args, folder, SW_SHOWMAXIMIZED)
     
    End Sub
    Sinon pour le maniement d'un FTP, j'utilise la librairie WinInet qui te permet de gérer également tes répertoires, transactions...

    JimBoLion

Discussions similaires

  1. [AC-2010] Problème execution de tâches planifiées Access 2010
    Par AudREN dans le forum Access
    Réponses: 7
    Dernier message: 26/09/2014, 16h03
  2. [AC-2010] Problème d'execution javascript sous VBA Access
    Par lololebricoleur dans le forum VBA Access
    Réponses: 1
    Dernier message: 31/10/2013, 11h23
  3. [Débutant] Problème executer un fichier .bat avec ASP .net (script en vb)
    Par MidoKorg dans le forum ASP.NET
    Réponses: 1
    Dernier message: 30/09/2011, 17h45
  4. executer une commande mysql à partir d'ACCESS
    Par humanchris dans le forum Access
    Réponses: 2
    Dernier message: 10/11/2009, 15h48
  5. problème pour lire une feuille excel a partir d'Access
    Par h_adil dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/07/2008, 23h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo