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

Access Discussion :

Exécuter un programme externe avec WshShell ne fonctionne pas [AC-2010]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut Exécuter un programme externe avec WshShell ne fonctionne pas
    Bonjour à tous,

    Je souhaite ouvrir à partir d'un formulaire une page Web et d'y envoyer des séquences de touches sans y parvenir.
    Il y a une erreur de syntaxe dans la ligne "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objShell.Run = "C:\Program Files (x86)\Mozilla Firefox\firefox.exe https://moviecovers.com/", 1
    ", mais je ne vois pas où.
    Voici le code (j'utilise Access 2010) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim objShell
    'Copie txtTitre dans le presse-papier
    	Me!txtTitre.SetFocus
    	DoCmd.RunCommand acCmdCopy
    'Lance le navigateur et ouvre le site
    	Set objShell = WScript.CreateObject("WScript.Shell")
    	objShell.Run = "C:\Program Files (x86)\Mozilla Firefox\firefox.exe https://monsite.com/", 1
    'Envoi CTRL+v et Entrée
    	SendKeys "^v", True
    	SendKeys "{ENTER]", True
    Si quelqu'un peut m'aider j'en serais ravi :-)

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Peut-être le = entre .run et "C:\Program Files (x86)\Mozilla Firefox\firefox.exe https://monsite.com/".

    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
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    Bonjour marot_r,

    Merci pour ta réponse,

    Lorsque j'enlève le "=" il me dit "Erreur de compilation: Attendu : =", si je le remet le message dit : "Erreur de compilation: Attendu : )" à la virgule après "...monsite.com/"

    J'écris donc : objShell.Run = ("C:\Program Files (x86)\Mozilla Firefox\firefox.exe https://monsite.com/") en enlevant le ,1 ,True --> plus d'erreur de syntaxe, mais lorsque j'exécute le code il me donne une autre erreur à la ligne 7 "Erreur d’exécution '424' : Objet requis"




    Apparemment je ne reçois pas de notifications par e-mail alors que l'option est bien coché...

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Je ne me suis jamais servi de cela.

    J'ai trouvé https://www.vbsedit.com/html/6f28899...640b0e32ea.asp avec des exemples de la commande, ça t'aidera peut-être.

    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.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut Balises de code
    Bonjour,

    J'ai déjà essayé un tas de scripts glanés sur Internet, mais j'ai toujours les mêmes erreurs :
    Dans les exemples que tu me propose :

    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "%windir%\notepad " & WScript.ScriptFullName
    2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim oShell
    Set oShell = WScript.CreateObject("WSCript.shell")
    oShell.Run "cmd /K CD C:\ & Dir"
    Set oShell = Nothing
    Dans ces deux cas j'ai le message :

    Nom : Objet requis.jpg
Affichages : 356
Taille : 10,4 Ko

    3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Return = WshShell.Run("notepad " & WScript.ScriptFullName, 1, true)
    Dans ce dernier cas j'obtiens :

    Nom : Erreur de compilation 1.jpg
Affichages : 353
Taille : 10,5 Ko

    Nom : Erreur de compilation 2.jpg
Affichages : 353
Taille : 8,3 Ko

    Ne serait-il pas possible qu'il me manque une bibliothèque ?

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    Bonjour,

    Visiblement les sites que tu consultes ne donnent pas tout ou sont moisis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim WshShell As Object
     
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run "notepad.exe"

    1) on déclare l'objet (dim)
    2) on lui affecte un objet Wscript.shell
    3) on utilise la méthode Run

    Le wscript.machin je ne vois pas d'où ça sort.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    bonjour Gaston62 et loufab
    en effet le wscript.machin c'est du VbScript, dans Access ce serait à la rigueur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VBA.CreateObject("WScript.Shell")
    mais, je pense, inutile puisque c'est l'environnement par défaut.
    Il faut, de toute évidence, regarder avec attention les bouts de codes trouvés sur le web
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    Bonjour Loufab et tee_grandbois,

    Merci pour votre aide, en effet ça marche nettement mieux avec le code fournie.
    Comment fait-on du coup pour envoyer des séquences de touches à l'application? Dans mon cas CTRL+V et Entrée.

    le code suivant ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Envoi CTRL+v et Entrée
    	SendKeys "^v", True
    	SendKeys "{ENTER]", True
    Cordialement,

    Gaston

  9. #9
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    En fait ce que je voudrais obtenir en cliquant sur un bouton dans un formulaire, c'est :

    1) Copier le texte d'un contrôle texte du formulaire
    2) ouvrir Mozilla Firefox sur une page html spécifié dans le code
    3) envoyer la séquence des touches (CTRL+V) pour coller le texte précédemment copier suivi de la séquence de la touche Enter

    Quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        Me!text1.SetFocus
        DoCmd.RunCommand acCmdCopy
        Set WshShell = CreateObject("WScript.Shell")
        WshShell.Run """C:\Program Files (x86)\Mozilla Firefox\firefox.exe https://monsite/"""
        SendKeys "^v", True
        SendKeys "{ENTER]", True
    Lorsque j'ajoute l'URL, j'ai un message d'erreur :

    Nom : Erreur méthode Run.jpg
Affichages : 349
Taille : 12,4 Ko

    et les SendKeys n'envoient rien

    Comment dois-je procéder ?

  10. #10
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour Gaston62,

    et les SendKeys n'envoient rien
    Si le code avant les SendKeys ne plante pas, les SendKeys fonctionnent, cependant c'est beaucoup trop rapide alors la page Web n'est pas encore "loader" et les SendKeys sont envoyés. Vous vous retrouvez donc avec un coller qui va nulle part.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  11. #11
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Tu peux peut-être ajouter une temporisation entre la commande d'ouverture, avec Sleep ou autre chose, et le sendkey.
    Mais, sache que le sendkey est très "fragile" et que dans la mesure du possible on lui préféra un autre méthode.

    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.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    Bonjour Robert1957 et marot_r,

    Pouvez-vous me donner quelques exemples de temporisation ou carrément d'une autre méthode à utiliser?
    Le code suivant ne fonctionne pas (Erreur de compilation: Membre de méthode ou de données introuvable)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Call Shell("C:\Windows\system32\Notepad.Exe", vbNormalFocus)
    Application.Wait (Now() + TimeValue("00:00:10"))
    Call SendKeys("This is Some Text", True)

  13. #13
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Oui c'est normal, Wait c'est un truc de Excel il me semble, pas disponible dans Access.

    La méthode la plus brutale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim dateFin as date: dateFin=dateadd("s", 30, now()) 'Ajoute 30 secondes à la date courante.
     
    do while now()<=dateFin
       'Ne rien faire
    loop
    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.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    Bonjour à tous,

    J'ai trouvé la solution en m'aidant de toutes vos réponses, voici le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Me!texte1.SetFocus
        DoCmd.RunCommand acCmdCopy
        Shell "C:\Program Files (x86)\Mozilla Firefox\firefox.exe https://monsite.com/"
        Dim dateFin As Date: dateFin = DateAdd("s", 2, Now())
        Do While Now() <= dateFin
        Loop
        SendKeys "^v", True
        SendKeys "{ENTER}", True
    J'aurais appris au moins deux choses, c'est que VBA Access, VBA Excel et VB Script utilisent ni les mêmes méthodes, ni les mêmes arguments et que beaucoup de sites comportent des erreurs.

    Merci à tous pour votre aide et bonne journée,

    Gaston

  15. #15
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 004
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 004
    Points : 24 592
    Points
    24 592
    Par défaut
    VBA est le tronc commun.

    Ensuite il y a les bibliothèques utilisées qui diffèrent.
    Word, Excel, Access, Powerpoint, Autocad, DAO, ADO ...

    En bref tout ce que tu as dans Références ou par CreateObject() ensuite viennent les API.

    Mais VB script est au VBA ce que le foot et au tennis.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/08/2008, 10h00
  2. [PHP-JS] Exécuter un programme externe
    Par MagicManu dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/05/2008, 08h35
  3. [Système] Exécuter un programme perso avec php
    Par blastafarie dans le forum Langage
    Réponses: 3
    Dernier message: 19/10/2007, 09h39
  4. Exécuter un programme externe
    Par nourbane dans le forum ASP
    Réponses: 3
    Dernier message: 07/09/2006, 18h52
  5. Comment exécuter un programme externe ?
    Par spikto dans le forum Langage
    Réponses: 12
    Dernier message: 27/06/2005, 16h18

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