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 Discussion :

Encore une régression d'automation IE


Sujet :

VBA

  1. #1
    Membre régulier Avatar de Gorzyne
    Profil pro
    Collégien
    Inscrit en
    Janvier 2008
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2008
    Messages : 323
    Points : 115
    Points
    115
    Par défaut Encore une régression d'automation IE
    Au secours la communauté

    IE est malheureusement le seul navigateur avec lequel on peut faire une automation intéressante en vba, et au fil du temps on perd ne fonctionnalité, sans possibilité de switcher sur un autre navigateur. En son temps il y avait bien eu la tentative ambitieuse selenium wrapper mais qui n'a pas survécu faute de maintenance

    du coup je me trouve en régression sur une page toute bête sur yahoo finance, par exemple celle ci

    https://fr.finance.yahoo.com/quote/V...o&guccounter=1

    si vous allez dans un navigateur moderne, vous avez un lien de téléchargement de la data
    en IE, jusqu'à il y a de cela quelque mois, le lien de téléchargement existait aussi

    En gros je lançait le téléchargement avec une petite boucle sur les liens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Each O In IEdoc.Links
                If O Like "*query*download*" Then
                    O.Click
                End If
    Next O
    mais maintenant ce lien a disparu, j'ai essayé sous plusieurs configs.
    J'ai essayé de regarder dans les options internet de IE mais j'ai rien trouvé et je patauge sur ce sujet.

    Si vous avez la soluce pour refaire apparaître ce bouton magique dans IE, ou au moins déclencher le téléchargement ça serait vraiment sweet.
    J'imagine qu'il peut y avoir 2 types de solutions, ou tweeker IE pour qu'il remette ce *** lien, ou alors trouver le moyen de trigger le lien de téléchargement (ce que je n'arrive pas non plus à faire)


    Merci à tous,
    Gorz

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Salut,

    dans Edge, il y a toujours un lien "Télécharger les données", ca ne peut pas faire l'affaire ?
    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 :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    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
    Membre régulier Avatar de Gorzyne
    Profil pro
    Collégien
    Inscrit en
    Janvier 2008
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2008
    Messages : 323
    Points : 115
    Points
    115
    Par défaut
    bah non hein vu que ça doit être automatisé, par exemple sur le CAC je devrais faire 40 fois la manip ? soyons sérieux

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 250
    Points
    34 250
    Par défaut
    Je ne fais qu'émettre des suggestions, le côté sérieux, c'est plus une volonté qu'une obligation. Nous n'avons aucune obligation de t'aider, aussi ne sois pas ingrat avec nous

    En ouvrant le lien avec IE, ca m'indique clairement ceci :
    Certaines parties de cette page ne sont pas prises en charge dans la version actuelle de votre navigateur. Mettez le navigateur à niveau vers la dernière version.
    Donc je te recommande de voir les options qui se présentent pour basculer d'IE à un autre fureteur.
    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 :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    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

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello
    Citation Envoyé par Gorzyne Voir le message
    En son temps il y avait bien eu la tentative ambitieuse selenium wrapper mais qui n'a pas survécu faute de maintenance
    SeleniumBasic fonctionne toujours sous VBA , il faut juste mettre les webdrivers à jour. Voici comment procéder :
    • 1 - Installer Selenium Basic
    • 2 - Télécharger le webdriver qui correspond à votre navigateur installé
    • 3 - Remplacer le webdriver qui se trouve dans le répertoire c:\Utilisateurs\<UserName>\AppData\Local\SeleniumBasic par le nouveau.
    • 4 - Dans VBA dans Outils/References cocher la référence Selenium Type Library


    J'ai testé cela sous Windows 10 - Excel 2010 avec les navigateurs Chrome 80.0 et Chromium Edge 80.0 (le nouveau Edge qui s'appuie sur Chromium).
    Voici 2 exemples d'utilisation
    1 - Pour avoir une copie d'écran d'une page Web :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Sub seleniumCapturePage()
    'J.P  Février 2020
    Dim robot As New WebDriver
    robot.Start "chrome", "https://www.developpez.net/forums/f289/logiciels/microsoft-office/general-vba/"
    robot.Get "/"
    robot.TakeScreenshot.SaveAs ("M:\\test\screenshotForumDeveloppez.jpg")
    robot.Quit
    End Sub
    2 - Pour récupérer ton fichier . Comme je ne maitrise pas Selenium et que ta page a quelques pièges j'ai dû appliquer quelques ruses :
    Sans gestion des cookies j'ai systématiquement une fenêtre qui apparaît avec un gros bouton bleu OK quand j'ouvre la page. Dans le code il y a un clic sur ce bouton.
    Pour repérer le lien avec query1 j'utilise un xpath.
    Il y a un Wait à la fin car si on quitte trop top le téléchargement ne s'effectue pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Sub RecupereFinanceYahoo()'J.P  Février 2020
    Dim robot As New WebDriver
    Dim elem, elems As Object
    robot.Start "chrome", "https://fr.finance.yahoo.com/quote/VIV.PA/history?period1=1383260400&period2=1548975600&interval=1mo&filter=history&frequency=1mo&guccounter=1"
    robot.Get "/"
    robot.FindElementByName("agree").Click
    Set elem = robot.FindElementByXPath("//a[contains(@href,'query1')]", timeout:=15000)
    Debug.Print elem.Attribute("href")
    elem.SendKeys ("")
    elem.Click
    robot.Wait (2000)
    robot.Quit
    End Sub
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Membre régulier Avatar de Gorzyne
    Profil pro
    Collégien
    Inscrit en
    Janvier 2008
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2008
    Messages : 323
    Points : 115
    Points
    115
    Par défaut
    je me suis déjà arraché les cheveux à plusieurs reprises sur Selenium mais ok je vais réessayer à l'occasion
    enfin dans l'immédiat je vais tout faire à la main

  7. #7
    Membre régulier Avatar de Gorzyne
    Profil pro
    Collégien
    Inscrit en
    Janvier 2008
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2008
    Messages : 323
    Points : 115
    Points
    115
    Par défaut
    mec de ouf ton code en fait c'était pas Selenium le problème il était bien installé mais le package de webdriver qu'il fallait substituer
    j'avais écrit à Selenium qui m'avait dit un truc dans le genre mais en mode plus laconique aussi j'avais abandonné

    du coup ton code est top moumoute mais je remarque que la syntaxe est pas du tout la même que pour de l'automation IE
    est ce que ça serait abusé que d'avoir un lien de ressources sur la syntaxe spécifique

    est ce qu'on a
    - toutes les fonctionnalités habituelles de l'automation IE (je pense à tout ce qui est les parents, getbyname, byID, etc...)
    - d'autres fonctionnalités plus puissantes ?

    mais du coup je me demande quand même pourquoi il y a eu la regression, je pensais que IE était une sorte de gros machin inerte, j'ose pas penser aux applis d'entreprises basées sur des automations IE

    Merci mille fois encore
    Gorzygorz

  8. #8
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    En regardant dans le code source de la page
    Nom : 2020-02-18_183059.png
Affichages : 1664
Taille : 25,2 Ko
    Le lien est fourni est permet de télécharger un fichier.csv contenant probablement les données escomptées.

    Par contre pour pointer l'élément... c'est coton, ni Name, ni Id. Le meilleur moyen serait sans doute de le chercher par ClassName et de rechercher ensuite l'élément qui contient un "http:\\" en href.
    De mémoire il y a un getElementsByClassName dans document.all, sinon il y a ça.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    Citation Envoyé par Qwazerty Voir le message
    Salut

    En regardant dans le code source de la page
    Nom : 2020-02-18_183059.png
Affichages : 1664
Taille : 25,2 Ko
    Le lien est fourni est permet de télécharger un fichier.csv contenant probablement les données escomptées.

    Par contre pour pointer l'élément... c'est coton, ni Name, ni Id. Le meilleur moyen serait sans doute de le chercher par ClassName et de rechercher ensuite l'élément qui contient un "http:\\" en href.
    Qwaz
    Qwaz, c'est ce que fait mon sous programme RecupereFinanceYahoo en cherchant un href qui contient query1 :

    Nom : Selenium_vba.PNG
Affichages : 1660
Taille : 27,2 Ko

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Citation Envoyé par jurassic pork Voir le message
    hello,

    Qwaz, c'est ce que fait mon sous programme RecupereFinanceYahoo en cherchant un href qui contient query1 :

    Nom : Selenium_vba.PNG
Affichages : 1660
Taille : 27,2 Ko

    Ami calmant, J.P
    J'avoue ne pas avoir regardé de quoi il s'agissait parce que j'ai vu "installation" et que souvent les personnes qui postent ici développe des choses au sein d'une entreprise et que bien souvent les entreprises interdisent l'installation de complément.
    Pour ma part c'est le cas, donc installer un addon à la maison mais qui n'a aucune chance de pouvoir être utilisé au boulot, je n'y trouve pas d'intérêt. Bien sûr le coté, je demande un élément ça le recherche est alléchant.

    Ceci dit j'ai peut-être pas prit suffisamment d'informations sur le sujet étant donné que je me suis arrêté aux quelques lignes de présentation que tu as placé sur le fil.
    Je garde ça dans un coin pour regarder quand j'aurais un moment.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  11. #11
    Membre régulier Avatar de Gorzyne
    Profil pro
    Collégien
    Inscrit en
    Janvier 2008
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Janvier 2008
    Messages : 323
    Points : 115
    Points
    115
    Par défaut
    merci pour vos retours

    en fait il y a un point juste, c'est que l'automation par Selenium aura des difficultés à être installée en entreprise alors que l'automation par IE est native

    Le lien est fourni est permet de télécharger un fichier.csv contenant probablement les données escomptées.
    Au niveau de la récupération du lien query pas de souci, mais c'est l'activation du lien qui ne fonctionne plus depuis VBA, et c'est ça qui est étrange

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

Discussions similaires

  1. Encore une question licence
    Par Neilos dans le forum C++Builder
    Réponses: 4
    Dernier message: 27/01/2005, 09h48
  2. Encore une jointure sous Oracle pour la route
    Par ebaynaud dans le forum Langage SQL
    Réponses: 15
    Dernier message: 04/11/2004, 11h40
  3. Encore une question sur malloc
    Par IG88 dans le forum C
    Réponses: 5
    Dernier message: 23/06/2004, 15h35
  4. Encore une requête complexe sur plusieurs tables
    Par DenPro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2003, 19h05

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