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 :

Exécution Shell bloquée dans un MDE


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 175
    Par défaut Exécution Shell bloquée dans un MDE
    Bonjour,

    j'ai un problème d'exécution de la commande Shell sur le PC de l'un de mes utilisateurs : je m'explique...

    Ma frontale est un fichier MDE stocké en local dans le répertoire C:\Program Files\Application\ de chaque poste utilisateur... Dans ce répertoire, je stocke également un petit fichier CopyMDE.bat qui me sert lors de la mise à jour de l'application. J'exécute alors le fichier .bat via le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function Mise_a_jour_MDE()
        ChDir "C:\Program Files\ApproVision\"
        Shell ("cmd /c CopyMDE.bat")
        DoCmd.Quit
    End Function

    Bref... voici mon problème :
    sur le poste d'un des utilisateurs, le code ne fonctionne pas. Je n'ai aucun message d'erreur mais pourtant le .bat n'est pas exécuté.
    Pourtant (c'est là que ça se complique !) lorsque je double-clique directement sur CopyMDE.bat, tout fonctionne bien. Et (encore pire !) lorsque je crée rapidement une nouvelle base .MDB locale et que j'y insère le code précédent, ça fonctionne aussi.

    Quelqu'un a-t-il une idée de l'origine du problème ?

    ---------------------------------------------------

    EDIT : Re-bonjour,

    en fait je viens de me rendre compte d'un truc incompréhensible sur ce problème :

    - je clique sur créer une nouvelle base de données
    - je colle mon code dans un module
    - je l'exécute
    - tout marche nickel
    - je sauvegarde le module
    - tout marche nickel

    - je ferme la nouvelle base de données (fichier .mdb)
    - je l'ouvre à nouveau
    - ça ne fonctionne plus...

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Essayes avec le l'option /k du cmd (qui laisse la fenêtre appelée ouverte), cela te permettra peut-être d'avoir une indication.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau candidat au Club
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Par défaut
    Je fais remonter la discussion car j'ai exactement le même pb.
    Je tente de lancer un .exe via un bouton de commande dans un formulaire. Mon appli lit des fichiers et en génèrent d'autres.
    Mon exe marche tout seul quand je le lance hors Access.
    Il marche aussi quand je crée pour la première fois ma BDD et mon formulaire (il génère les fichiers) et que je n'ai pas encore fermé la base.

    Par contre dès que j'ai fermé ma BDD et que je la rouvre, l'appli ne marche plus, elle se lance mais s'arrête car elle ne trouve pas les fichiers d'input (qui y sont toujours).

    Je suis sous Windows XP avec Access 2000. Par contre si je teste ça au boulot où j'ai accès à Access via un serveur ça marche normalement.

    Je ne comprends pas...

    Je vous mets mon code au cas où
    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
     
    Private Sub Commande0_Click()
    On Error GoTo Err_Commande0_Click
     
        Dim stAppName As String
     
        stAppName = "E:\blablabla\appli.exe"
        Call Shell(stAppName, 1)
     
    Exit_Commande0_Click:
        Exit Sub
     
    Err_Commande0_Click:
        MsgBox Err.Description
        Resume Exit_Commande0_Click
    Si qqun a une idée ? Est-ce que ça aurait avoir avec le chemin ? Ou d'un verrouillage quelconque ? :/

  4. #4
    Nouveau candidat au Club
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Par défaut
    Pb résolu.

    J'ai pensais pas que ça s'appliquait à mon cas et puis j 'avais testé mais pas toutes les combinaisons apparemment.
    Je me suis inspirée de ce post :
    http://www.developpez.net/forums/sho...d.php?t=568168

    Donc j'ai réutilisé ShellExecute surtout j'ai mis en Public à la fois la commande du formulaire et le module.

    le formulaire :
    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
     
    Public Sub Commande0_Click()
    On Error GoTo Err_Commande0_Click
     
    ShellExecute Me.hwnd, "open", "monappli.exe", "", CurrentProject.Path, 1
     
     
    Exit_Commande0_Click:
        Exit Sub
     
    Err_Commande0_Click:
        MsgBox Err.Description
        Resume Exit_Commande0_Click
     
    End Sub
    et le module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    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
    Et ça marche.
    Par contre je comprends pas pourquoi le fait de fermer la BDD faisait tout bugger sur mon précédent code. Je serais curieuse de comprendre la cuisine interne...si qqun peut m'expliquer.

Discussions similaires

  1. Lancement d'un shell Unix dans un proc stockée
    Par SBA03 dans le forum Oracle
    Réponses: 20
    Dernier message: 31/08/2006, 09h22
  2. Shell Script dans crontab
    Par Deepc dans le forum Linux
    Réponses: 3
    Dernier message: 30/03/2006, 11h39
  3. Réponses: 1
    Dernier message: 06/03/2006, 10h58
  4. Shell - Erreur dans une boucle for
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 11/01/2006, 13h45
  5. Script shell - écriture dans un fichier
    Par Leishmaniose dans le forum Linux
    Réponses: 6
    Dernier message: 13/12/2004, 22h48

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