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

Macros et VBA Excel Discussion :

Récupération données WEB - JS via VBA dans Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Juin 2011
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 162
    Par défaut Récupération données WEB - JS via VBA dans Excel
    Bonjour,

    Je souhaite piloter un site web par VBA à partir d'Excel, notamment saisie de texte dans une zone de recherche, puis lancement de la recherche.

    Zone de saisie de texte :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
        <input class="search-form-input els-text-input-field ng-pristine ng-valid needsclick ng-empty ng-touched" id="id-quick-search-input" aria-invalid="false" ng-blur="buildQuery.saveResults()" ng-model="buildQuery.query.text" rx-autofocus="" autocomplete="off" rx-label-state="">

    Les essais par propriété "value" me permette d'écrire dans cette zone mais elle reste considérée comme vide si on lance la recherche.

    J'ai tenté sur la base des conseils dans ce forum de patricktoulon:
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    IE.Document.parentWindow.execScript "angular.element(document.getElementsByTagName('input')[0]).scope().buildQuery.Query.Text = 'TexteàrechercheràpartircelluleExcel';"


    mais obtient l'erreur suivante dans le débogueur web :
    Impossible d’obtenir la propriété « buildQuery » d’une référence null ou non définie

    Y a t il une erreur de syntaxe sur ce code ?

    Merci par avance de votre aide.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    si l'on a pas la page web ca va etre difficile
    cependant quand je vois les attributs de ton bouton on comprends tout de suite que cette page est protégée anti robot
    cela veut dire qu'il font en sorte que l'on puisse pas la piloter vba ou autre

    magré ca on peut se jouer et leurer la protection en donnant le focus a l'input avant de le cliker pour faire croire a la page web que c'est fait manuellement avec la souris

    pour plus: donner le lien sans ca t'es tout seul

    tu peux aussi te contenter d'executer le script puisque visiblement tu a le lien de la fonction
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Juin 2011
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 162
    Par défaut
    Bonsoir,

    Voici le lien : https://www.reaxys.com/#/search/quick

    Merci par avance de ton aide.

    Bcdt

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    je te fait la base
    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
    Sub test()
        Dim URL As String, IE As Object
        URL = "https://www.reaxys.com/#/login"
        Set IE = CreateObject("internetexplorer.application")
        With IE
            .Visible = True
            .navigate URL
            Do: DoEvents: Loop While .readystate <> 4' on attend le chargement de la page 
            With .document.getelementsbyname("username")(0): .Focus: .Value = "toto": End With 'on cible l'input username on lui donne le focus et lui met le login
            With .document.getelementsbyname("password")(0): .Focus: .Value = "machin": End With'pareil que pour le login 
            .document.getelementsbytagname("BUTTON")(0).Click'c'est facile y a qu'un bouton on click
            ' ici la page va se charger apres tes login et mdp donc une gestion d'attente est requise
            Do: DoEvents: Loop While .readystate <> 4 Or .busy
            'maintenant exploitation du document
            'reste du code d'exploitation
     
            '.Quit ' une fois le travail terminé on ferme IE 
        End With
    End Sub
    voila t'a de quoi demarrer
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Juin 2011
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 162
    Par défaut
    Bonjour,

    J'obtiens le même résultat qu'auparavant, cf commentaires dans le code :

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
        Dim URL As String, IE As Object
        URL = "https://www.reaxys.com/#/search/quick"
        Set IE = CreateObject("internetexplorer.application")
        With IE
            .Visible = True
            .navigate URL
            Do: DoEvents: Loop While .readystate <> 4 Or .busy ' on attend le chargement de la page : NE SEMBLE PAS SUFFISANT CAR LA LIGNE SUIVANTE RETOURNE UNE VALEUR NULL -> ERREUR. PAR CONTRE FONCTIONNE EN MODE EXECUTION LIGNE A LIGNE
            With .document.getElementsBytagName("input")(0): .Focus: .Value = "toto": End With 'ERREUR SUR Focus CAR GETELEMENT RETOURNE UN NULL MAIS FONCTIONNE EN EXECUTION LIGNE A LIGNE
            Do: DoEvents: Loop While .readystate <> 4 Or .busy
            .document.Forms("searchForm").submit 'lancement de la recherche : FONCTIONNE MAIS A VIDE CAR NE VOIT PAS LA VALEUR DANS LA ZONE INPUT
            .Quit ' une fois le travail terminé on ferme IE
        End With
    End Sub

    Merci de ton aide.
    Bcdt

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    oui j'ai pu constater dans plusieures discussions que ce qui utilisent 2013 et 2016 on des soucis de gestions de temp windows dans divers domaines (IE temps de clipboard,etc...)
    mais SVP pourrais tu tester le code comme on te le donne et pas le transformer sinon ca sert a rien hein
    je te le redonne comme tel et u change rien
    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
    Sub test()
        Dim URL As String, IE As Object
        URL = "https://www.reaxys.com/#/login"
        Set IE = CreateObject("internetexplorer.application")
        With IE
            .Visible = True
            .navigate URL
            Do: DoEvents: Loop While .readystate <> 4' on attend le chargement de la page 
            With .document.getelementsbyname("username")(0): .Focus: .Value = "toto": End With 'on cible l'input username on lui donne le focus et lui met le login
            With .document.getelementsbyname("password")(0): .Focus: .Value = "machin": End With'pareil que pour le login 
            .document.getelementsbytagname("BUTTON")(0).Click'c'est facile y a qu'un bouton on click
            ' ici la page va se charger apres tes login et mdp donc une gestion d'attente est requise
            Do: DoEvents: Loop While .readystate <> 4 Or .busy
            'maintenant exploitation du document
            'reste du code d'exploitation
     
            '.Quit ' une fois le travail terminé on ferme IE 
        End With
    End Sub

    je vais tester autre chose qui va sans doute resoudre ton soucis en ce qui concerne cette discussion mais si c'est ce que je crois je prend le 2013 ou 2016 et je le fout a la poubelle

    je reviens avec une autre solution mais en attendant test comme ca SANS RIEN CHANGER !!!

    voila teste cela aussi
    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
    Sub test()
        Dim URL As String, IE As Object
        URL = "https://www.reaxys.com/#/login"
        Set IE = CreateObject("internetexplorer.application")
        With IE
            .Visible = True
            .navigate URL
            Do: DoEvents: Loop While .readystate <> 4    ' on attend le chargement de la page
            Do: DoEvents: Set x = .document.getelementsbyname("username"): Loop While x.Length = 0
            With x(0): .Focus: .Value = "toto": End With    'on cible l'input username on lui donne le focus et lui met le login
            With .document.getelementsbyname("password")(0): .Focus: .Value = "machin": End With    'pareil que pour le login
            .document.getelementsbytagname("BUTTON")(0).Click    'c'est facile y a qu'un bouton on click
            ' ici la page va se charger apres tes login et mdp donc une gestion d'attente est requise
            Do: DoEvents: Loop While .readystate <> 4 Or .busy
            'maintenant exploitation du document
            'reste du code d'exploitation
            '.Quit ' une fois le travail terminé on ferme IE
        End With
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. [XL-2010] Récupérer donnée textbox access via VBA excel
    Par domibigoudi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/01/2016, 12h31
  2. Réponses: 2
    Dernier message: 16/09/2014, 13h01
  3. Réponses: 2
    Dernier message: 26/12/2013, 18h39
  4. [XL-2010] Extraction données formulaire Word via VBA Excel
    Par jojoSuperFripouille dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/04/2013, 17h18
  5. Insérer un Tableau excel dans Word via VBA depuis Excel
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/05/2008, 08h52

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