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 :

Cliquer sur un élément d'une page internet en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 35
    Par défaut Cliquer sur un élément d'une page internet en VBA
    Bonjour à tous,

    Je souhaite cliquer sur une div qui contient une image sur une page web.
    Dans le code source l'élément est identifié par id="A9", identifiant unique dans tout le code source, je pensais donc utiliser getElementsByID("A9") pour l'identifier dans le code vba.

    J'ai essayé de multiples choses mais ça me renvoie toujours des erreurs.

    Voila ou j'en suis actuellement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test()
     
    navigate = "www.dl-ligue.com/DL-ligue/menu_CDF/_BIAAC8ZHBIMAA"
    Shell ("C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe -url " & navigate)
    Set element = ie.document.getElementsByID("A9")
    element.Click
    End Sub
    A la fin de l'url il y a un identifiant de session que j'ajoute a chaque fois que je veux lancer la macro.

    Donc si vous voulez un apperçu de la page il faut aller sur www.dl-ligue.com a gauche dans espace joueur cliquer sur championnat de France et sur ce qui s'affiche je souhaite cliquer sur le carré "consulter niveau"

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Salut,

    Pour interragir avec les navigateurs moderne (Edge, Chrome, firefox), il faut passer par Selenium Web Driver.
    Malheureusement, je n'ai pas plus d'informations à ce sujet.

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 35
    Par défaut
    J'ai un peu avancé mais la je suis bloqué:

    Je n'arrive pas a faire comprendre à la macro qu'après avoir testé le numéro en A1 (dans la feuille1 du classeur) il faut qu'elle passe à A2 puis A3 etc etc jusqu'à ce que la colonne soit vide.
    La elle fait A1 et j'ai le message "traitement terminé"

    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
    31
    32
    33
    34
    35
    Sub test()
     
        Dim IE As Object
        Dim IEdoc As Object
        Dim DOCelement As Object
        Static L As Long
     
        Set IE = CreateObject("InternetExplorer.Application")
     
        IE.Visible = True
     
        IE.Navigate ("www.dl-ligue.com")
     
        Call pause
     
        Do Until IE.ReadyState = 4
            DoEvents
        Loop
     
        Set IEdoc = IE.document
     
        If Cells(1, 1) Then L = 0
            L = L + 1
            With DOCelement
            Set DOCelement = IEdoc.getElementsByName("A3").Item
            DOCelement.Value = Cells(L, 1).Text
            Set DOCelement = IEdoc.getelementsbytagname("button")(12)
            DOCelement.Click
            End With
     
        If Cells(L + 1, 1) <> "" Then MsgBox ("Traitement terminé !")
     
        Set IE = Nothing
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub pause()
          Application.Wait Now() + TimeValue("00:00:10")
    End Sub
    Si quelqu'un peut me corriger le code merci d'avance.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 228
    Par défaut
    Hello,
    Citation Envoyé par Icedarts Voir le message
    Donc si vous voulez un apperçu de la page il faut aller sur www.dl-ligue.com a gauche dans espace joueur cliquer sur championnat de France et sur ce qui s'affiche je souhaite cliquer sur le carré "consulter niveau"
    Pour arriver à ta page tu peux essayer ceci (en espérant que les Id (ex: M21) ne changent pas dans le temps) :
    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
    31
    32
    33
    34
    35
    Sub testJP()
        Dim IE As Object
        Dim IEdoc As Object
        Dim DOCelement As Object, FrameLeftDoc As Object
        Set IE = CreateObject("InternetExplorer.Application")
        IE.Visible = True
        IE.Navigate ("www.dl-ligue.com")
        WaitIE IE
        Set IEdoc = IE.document
        Set FrameLeftDoc = IEdoc.frames("leftframe").document
        Set DOCelement = FrameLeftDoc.all("M21")
        DOCelement.Click
        WaitIE IE
        Set IEdoc = IE.document
        Application.Wait Now() + TimeValue("00:00:01")
        Set FrameLeftDoc = IEdoc.frames("leftframe").document
        'Application.Wait Now() + TimeValue("00:00:5")
        Set DOCelement = FrameLeftDoc.all("A9")
        DOCelement.Click
        WaitIE IE
        Application.Wait Now() + TimeValue("00:00:20")
        IE.Quit
        Set IE = Nothing
     
     
    End Sub
     
     
    Sub WaitIE(IE As Object)
       'On boucle tant que la page n'est pas totalement chargée
       Do Until Not IE.Busy And IE.readyState = 4
          Application.Wait Now() + TimeValue("00:00:01")
          DoEvents
       Loop
    End Sub
    Ami calmant, J.P

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 35
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,

    Pour arriver à ta page tu peux essayer ceci (en espérant que les Id (ex: M21) ne changent pas dans le temps) :

    Ami calmant, J.P
    Merci ça fonctionne parfaitement bien.

    Peux tu m'aider pour la suite de mon code?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        If Cells(1, 1) Then L = 0
            L = L + 1
            With DOCelement
            Set DOCelement = IEdoc.getElementsByName("A3").Item
            DOCelement.Value = Cells(L, 1).Text
            Set DOCelement = IEdoc.getelementsbytagname("button")(12)
            DOCelement.Click
            End With
     
        If Cells(L + 1, 1) <> "" Then MsgBox ("Traitement terminé !")
    Je pense qu'il me manque quelque chose pour qu'après le End With ça revienne a L = L + 1 mais je ne trouve pas quoi :/

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 228
    Par défaut
    Plutôt que de me montrer un code que je ne comprend pas dis moi ce que tu veux faire exactement ?

  7. #7
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 35
    Par défaut
    Alors attention ça va être long ^^

    J'essaie de faire un fichier qui m'ouvre la page internet que tu as vu.
    Qui va tester plein de numéro (qui seront dans la colonne A de la feuille 1 du classeur)
    J'y suis presque mais je n'arrive pas a faire boucler la macro pour qu'après avoir testé A1 elle passe a A2 et ainsi de suite.
    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
    31
    32
    33
    34
    35
    36
    Sub testJP()
        Dim IE As Object
        Dim IEdoc As Object
        Dim DOCelement As Object, FrameLeftDoc As Object
        Set IE = CreateObject("InternetExplorer.Application")
        IE.Visible = True
        IE.Navigate ("www.dl-ligue.com")
        WaitIE IE
        Set IEdoc = IE.document
        Set FrameLeftDoc = IEdoc.frames("leftframe").document
        Set DOCelement = FrameLeftDoc.all("M21")
        DOCelement.Click
        WaitIE IE
        Set IEdoc = IE.document
        Application.Wait Now() + TimeValue("00:00:01")
        Set FrameLeftDoc = IEdoc.frames("leftframe").document
        'Application.Wait Now() + TimeValue("00:00:5")
        Set DOCelement = FrameLeftDoc.all("A9")
        DOCelement.Click
        WaitIE IE
     
            If Cells(1, 1) Then L = 0
            L = L + 1
            With DOCelement
            Set DOCelement = IEdoc.getElementsByName("A3").Item
            DOCelement.Value = Cells(L, 1).Text
            Set DOCelement = IEdoc.getelementsbytagname("button")(12)
            DOCelement.Click
            End With
     
        If Cells(L + 1, 1) <> "" Then MsgBox ("Traitement terminé !")
     
        Set IE = Nothing
     
     
    End Sub
    Avec ce code ça teste A1 et j'ai le message "Traitement terminé"

    Après cette étape je pourrais passer à la suite qui est de récupérer en feuille 2 le texte qui s'affiche après le clique sur le bouton valider ("button")(12)
    Texte identifié par l'id tzA5
    Nom : qywc.jpg
Affichages : 186
Taille : 129,1 Ko

    Dernière chose qu'il faudra gérer c'est l'apparition d'une pop-up quand le numéro n'est pas valide
    Nom : 7gc2.jpg
Affichages : 183
Taille : 65,1 Ko

    Tu peux avoir cette pop-up avec le numéro 48009.

    Fichier test en pièce jointe

    Merci de ton aide
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 228
    Par défaut
    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
    31
    32
    33
    Sub testJP()
        Dim IE As Object
        Dim IEdoc As Object, Res as Object
        Dim DOCelement As Object, FrameLeftDoc As Object
        Dim Championnat As Object, NumEquipe As Object, btnValider As Object
        Set IE = CreateObject("InternetExplorer.Application")
        IE.Visible = True
        IE.Navigate ("www.dl-ligue.com")
        WaitIE IE
        Set IEdoc = IE.document
        Set FrameLeftDoc = IEdoc.frames("leftframe").document
        Set DOCelement = FrameLeftDoc.All("M21")
        DOCelement.Click
        WaitIE IE
        Set IEdoc = IE.document
        Set FrameLeftDoc = IEdoc.frames("leftframe").document
        Set DOCelement = FrameLeftDoc.All("A9")
        DOCelement.Click
        WaitIE IE
        Set IEdoc = IE.document
        Set Championnat = IEdoc.All("A1")
        Championnat.Value = "2"  'Doublette
        Set NumEquipe = IEdoc.All("A3")
        NumEquipe.Value = "48001"
        Set btnValider = IEdoc.All("A4")
        btnValider.Click
        WaitIE IE
        Set Res = IEdoc.All("tzA5")
        Debug.Print Res.innerText
        Application.Wait Now() + TimeValue("00:00:10")
        IE.Quit
        Set IE = Nothing
    End Sub

Discussions similaires

  1. [XL-2016] Récupération d'info sur une page internet en vba
    Par ericlb56 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 22/04/2018, 22h29
  2. cliquer sur un bouton d'une page HTML avec excel
    Par gaby2006 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/06/2017, 17h58
  3. Réponses: 5
    Dernier message: 19/05/2015, 01h38
  4. Réponses: 1
    Dernier message: 08/07/2013, 07h30
  5. [XL-2010] Cliquer sur un bouton d'une page HTML
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/05/2013, 21h43

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