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 :

interagir sur internet avec vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant en finance
    Inscrit en
    Décembre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en finance
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 15
    Par défaut interagir sur internet avec vba
    Bonjour,

    J'essaye de faire une macro excel vba pour lancer la recherche d'une page d'entreprise sur le site Societe.com à partir de son numéro de SIREN.

    J'arrive à aller sur la page de recherche du site Societe.com et à renseigner le numéro de SIREN .... mais pas à lancer la recherche. Code ci-dessous.
    La commande [With CreateObject("wscript.shell"): .SendKeys "{ENTER}": End With] ne marche pas.

    Si quelqu'un peut m'aider : merci d'avance !

    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
    Public Sub SOCIETE()
    ' Recherche la page societe.com d'une entreprise à partir de son numéro de SIREN
     
    Dim oNav As SHDocVw.InternetExplorer
    Dim oDoc As MSHTML.HTMLDocument
    Set oNav = New SHDocVw.InternetExplorer
    NumSIREN = "831267992"
     
            ' Va sur la page recherche de societe.com
            URLcible = "https://www.societe.com/cgi-bin/recherche"
            oNav.navigate URLcible
            oNav.Visible = True
     
            ' Attend le chargement de la page
            Do Until oNav.readyState = READYSTATE_COMPLETE
                DoEvents
            Loop
     
            ' Renseigne le numéro de  SIREN
            With oNav.document.getElementById("entreprncs")
            .Value = NumSIREN
            .Focus
            End With
     
            ' Lance la recherche
            With CreateObject("wscript.shell"): .SendKeys "{ENTER}": End With
     
    End Sub

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Par défaut
    Bonjour,
    Essaie en remplaçant ton Sendkeys par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oNav.document.getElementById("recherche_entrep1").submit

  3. #3
    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
    a ce que je vois encore c'est un exemple de code qui date de jerusalem

    un exemple
    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
    Public Sub SOCIETE()
    ' Recherche la page societe.com d'une entreprise à partir de son numéro de SIREN
        Dim oNav As Object
        Set oNav = CreateObject("internetexplorer.application")
        NumSIREN = "831267992"
        delay = 1000
        With oNav
            URLcible = "https://www.societe.com/cgi-bin/recherche"
            .navigate URLcible    ' Va sur la page recherche de societe.com
            '.Visible = True    'application IE visible(facultatif)
            Do: DoEvents: Loop While .readyState <> 4    ' Attend le chargement de la page
            .document.getelementbyid("input_search").Value = NumSIREN    ' Renseigne le numéro de  SIREN
            .document.getelementbyid("buttsearch").Click    ' submit
            Do: DoEvents: x = x + 0.5: Loop While .busy Or .locationurl = URLcible Or x = delay
            If x < delay Then
                Do: DoEvents: Loop While .document.getelementbyid("company_identity") Is Nothing
     
                Set descriptif = .document.getelementbyid("presentation")
     
                Set renseignement = .document.getelementbyid("renseignement")
                renseignement.Focus
                MsgBox descriptif.innertext
                MsgBox Replace(renseignement.innertext, vbCrLf & vbCrLf, vbCrLf)
            Else
                MsgBox "delay depassé ca rame aujourd'hui revenez plus tard"
            End If
            .Quit
        End With
     
    End Sub
    il faut que tu comprenne que le site web te redirige vers une autre page l'ors du clique sur rechercher
    il te faut donc gerer une nouvelle fois le redy mais cette fois ci par raport a la propriété locationurl
    il te faut aussi par securité gerer l'attent par un indice valable a savoir par exemple l'existance d'un element qui n'y ai pas au depart du genre l'element id("company_identity") qui constitue le titre des donnée de l'entreprise
    de plus sur certaine gestion d'attente il te faut limiter un delay pour ne pas etre bloqué, et pour ce site plutot 2 fois qu'une
    bref maintenant tu sais
    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

  4. #4
    Membre averti
    Homme Profil pro
    Consultant en finance
    Inscrit en
    Décembre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en finance
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 15
    Par défaut MERCI
    Bonsoir, oui, merci, ça marche !
    Et merci pour les explications sur la temporisation : utile.

    Une question : pourquoi la commande [ .Click] que tu m'as indiquée marche et pas SENDKEY que j'avais utilisée ? Quelles sont les différences entre les 2 ?

    Et ça marche aussi avec la commande [.submit] ?

    Encore merci pour ton aide. Luc

  5. #5
    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
    re
    sendkeys fonctionne pas car la protection antirobot "onwindows" est plus performante sur ce site
    avec un peu de temps j'arriverais a la déjouer mais runner le click ou le submit est mieux dans tout les cas de figures ce qui est norlement plus difficile avec la protection onwindow de google
    quand tu a une page web a gérer par robot avant de te lancer dans le codage regarde bien les balises script dans le head et body du document de la page web ca te donne le depart et une idée de la la facon ou methode que tu va choisir de coder ton robot(vba ou autre)pour sa manipulation
    je sais des fois c'est pas de la tarte meme avec les lien des script on arrive pas a voir le code des scripts il faut tourner virer mais avec un peu de patience on y arrive
    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

  6. #6
    Membre averti
    Homme Profil pro
    Consultant en finance
    Inscrit en
    Décembre 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en finance
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2017
    Messages : 15
    Par défaut Encore merci et nouvelle enigme
    Encore merci pour tes précisions - vraiment utiles.

    Je continue tant que ça marche ;-) :
    la vieille routine de Jerusalem (moi j'aime bien les vieux trucs qui marchent) plante sur le code ci-dessous.
    J'ai l'impression qu'il n'arrive pas à rédupérer l'ID mentionnée sur la page mentionnée (qui existe bien pourtant).
    C'est parce qu'il y a un pb d'évitement des robots sur la page ?

    Bon weekend. Luc


    PS : oui, d'accord, les temporisations sont gérées de manière pas très élégantes dans mon exemple ;-)

    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
    Sub Macro1()
    '
     
    Dim oNav As SHDocVw.InternetExplorer
    Set oNav = New SHDocVw.InternetExplorer
     
    ' Ouvre la page recherche
    URLcible = "https://enseignement-catholique.fr/repertoire-de-l-enseignement-catholique-rechercher-etablissement/"
    oNav.navigate URLcible
    oNav.Visible = True
     
            ' Attend le chargement de la page
            Do Until oNav.readyState = READYSTATE_COMPLETE
                DoEvents
            Loop
     
            ' Temporise le chargement de la page
            newMinute = Minute(Now())
            newSecond = Second(Now()) + 15
            waitTime = TimeSerial(Hour(Now()), newMinute, newSecond)
            Application.Wait waitTime
     
    ' Renseigne le département
    CodePostal = oNav.document.getElementsById("ville_etb")
    MsgBox (CodePostal.Length)
     
     
     
    End Sub

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/03/2014, 14h43
  2. [XL-2007] Agir sur les options internet avec VBA
    Par lenovo49 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/02/2012, 11h35
  3. Se connecter sur internet avec suse 9.3
    Par zui dans le forum Matériel
    Réponses: 5
    Dernier message: 09/07/2006, 18h25
  4. Réponses: 4
    Dernier message: 13/02/2006, 11h13
  5. Envoyer une page sur internet avec delphi 7
    Par Stephane1 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 02/01/2006, 19h12

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