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 d'info sur une page internet en vba [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    passionné
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : passionné

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Récupération d'info sur une page internet en vba
    Bonjour à toutes et à tous, je n'ai pas pour habitude d'exposer mes problèmes de vba, mais là je suis vraiment coincé.
    Après lecture et relecture puis essai et re-essai des diverses informations trouvées dans les post du forum développez.net je n'arrive pas à trouvé de solution à mon code.

    En effet, j'essais de réaliser une feuille d'engagé pour course cycliste en récupérant directement le nom, prénom, date de naissance…. des concurrents sur le site fédéral: https://www.ffc.fr/licencies/
    Pour l'instant j'arrive en entrant dans un userform le numéro de licence du concurrent à le coller sur le site mais je n'arrive pas à valider la recherche du concurrent et par conséquent à récupérer les infos le concernant pour inscription sur ma feuille.

    Merci a celles et ceux qui pourraient m'aiguiller, car le html je n'y comprend pas grand chose.
    Ci joint mon classeur.






    ENGAGEMENT SUR LA LIGNE.xlsm

  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 594
    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 594
    Points : 34 263
    Points
    34 263
    Par défaut
    Salut,

    j'imagine que tu as déjà eu l'occasion de lire le tuto de Qwazerty à ce sujet :
    https://qwazerty.developpez.com/tuto...-et-vba-excel/

    A noter également que ton fichier ne sera pas téléchargé pour des tas de raisons évoquées maintes fois.

    Aussi je te suggère de nous copier la partie du code VBA dans un poste (encadré des balises CODE) afin que nous puissions aisément le lire et te venir en aide.
    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
    Futur Membre du Club
    Homme Profil pro
    passionné
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : passionné

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour et merci de votre réponse,

    En effet,
    j'ai lu ce tuto en long, en large et en travers, mais je n'arrive pas à définir les balises dans la page internet.

    Pour mon fichier, il ne contient aucunes données et le site web internet visé est destiné à cet usage, donc je ne vois pas trop le soucis, sans doute une autre raison que j'ai zappé.

    Pour insérer mon code, j'essai au plus vite.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re exemple
    bonsoir
    un petit exemple vite fait pour la route
    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
    Sub test()
        Dim IE, URL
        URL = "https://www.ffc.fr/licencies/"
        Set IE = CreateObject("internetexplorer.application")
        With IE
            .navigate URL
            .Visible = True
            Do: DoEvents: Loop While .readystate <> 4
            .document.getelementbyid("num").Value = 123456789    'nom ou numero du licencié
            .document.getelementbyid("club").Value = "les fous volants"    'nom du club
            .document.getelementsbyname("disc")(0).selectedIndex = 2    'selection de la discipline dans la liste deroulante
            .document.getelementbyid("male").Checked = True    ' pour cocher "homme"
            .document.getelementbyid("female").Checked = True    ' pour cocher "femme"
            .document.getelementbyid("fake-search").Click
        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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    passionné
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : passionné

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci Patrick,
    pour mon second post sur le forum, c'est encore une fois vous qui me répondez!
    j'ai adapté votre code avec un N° de licence valide, mais comme pour mon code, la validation de la recherche ne s'effectue pas!
    voici mon code:

    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
    Sub inscription_concurrent()
    '  N?c?ssite d'activer les r?f?rences
    '   - Microsoft HTML Object Library
    '   - Microsoft Internet Controls
    '   - barre de menu => Outils => r?f?rences, il faut la cocher...
     
        Dim IE As New InternetExplorer
        Dim IEDoc As HTMLDocument
        Dim NLicence As HTMLInputButtonElement
        Dim FindClick As HTMLInputButtonElement
     
        IE.navigate "https://www.ffc.fr/licencies"
        IE.Visible = True
        Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
     
        Set IEDoc = IE.document
     
        Set NLicence = IEDoc.getElementsByName("num").Item
        NLicence.Value = Sheets("liste").Cells(1, "F")
        DoEvents
        Set FindClick.getElementById("fake-search") = Click
     
    End Sub

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    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
    Sub inscription_concurrent()
    '  N?c?ssite d'activer les r?f?rences
    '   - Microsoft HTML Object Library
    '   - Microsoft Internet Controls
    '   - barre de menu => Outils => r?f?rences, il faut la cocher...
     
        Dim IE As New InternetExplorer
        Dim IEDoc As HTMLDocument
        Dim NLicence As object
        Dim FindClick As object
     
        IE.navigate "https://www.ffc.fr/licencies"
        IE.Visible = True
        Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
     
        Set IEDoc = IE.document
     
        Set NLicence = IEDoc.getElementByid("num")
        NLicence.Value = Sheets("liste").Cells(1, "F").Value
        'DoEvents
        Set FindClick = .getElementByid("fake-search")
        FindClick.Click
     
    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

  7. #7
    Futur Membre du Club
    Homme Profil pro
    passionné
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : passionné

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci Patrick,
    J'ai adapté mon code et il fonctionne, maintenant j'aimerais pouvoir récupérer sur ma feuille liste les infos affichées après un click sur le nom du coureur que l'on vient de chercher. Pour l'instant je recherche comment clicker sur le nom du coureur en suivant le même raisonnement que celui que vous m'avez indiqué, mais je ne trouve pas . Par ailleurs je recherche comment je vais m'y prendre pour rapatrier les infos dont j'ai besoin et il semblerait que le click sur le nom du coureur ne soit pas forcément nécéssaire car les données sont contenu dans une table. J'y vais à taton, j'aimerais trouvé un début de solution par moi même ( du moins une méthode pour arriver à mes fins) ça risque de me prendre un peu de temps vu mon niveau, mais à force de chercher et d'essayer on progresse !
    Je donnerai des nouvelles de l'avancée de mes recherches régulièrement mais je reste preneur de toutes aides et infos.

    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
    37
    38
    39
    40
    41
     Sub CommandButton1_Click()
    'on active la feuille des inscriptions
    Sheets("liste").Activate
    'on recherche la derni?re ligne vide de la colonne Licence
    Range("C" & Range("C" & Cells.Rows.Count).End(xlUp).Row + 1).Select
    ActiveCell.Value = NLICENCEtextbox.Value
    '  N?c?ssite d'activer les r?f?rences
    '   - Microsoft HTML Object Library
    '   - Microsoft Internet Controls
    '   - barre de menu => Outils => r?f?rences, il faut la cocher...
     
        Dim IE          As New InternetExplorer
        Dim IEDoc       As HTMLDocument
        Dim num         As Object               ' il s'agit du num?ro de licence
        Dim FindClick   As Object               ' il s'agit du click sur rechercher
        Dim Coureur     As Object               ' il s'agit du click sur le coureur rechercher
     
     
        IE.navigate "https://www.ffc.fr/licencies"
        IE.Visible = True
        Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
     
        Set IEDoc = IE.document
     
        Set num = IEDoc.getElementById("num")
        num.Value = NLICENCEtextbox.Value
        'DoEvents
     
        Set FindClick = IEDoc.getElementById("fake-search")
        FindClick.Click
        'la page internet s'ouvre et le coureur recherch? est affich?
     
        'on click sur le courreur pour afficher ses donn?es
        Set Coureur = IEDoc.getElementById("table-comites")
        Coureur.Click
     
     
    Unload Me
    End Sub

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    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
    37
    38
    39
    40
    Sub CommandButton1_Click()
    'on active la feuille des inscriptions
    Sheets("liste").Activate
    'on recherche la derni?re ligne vide de la colonne Licence
    Range("C" & Range("C" & Cells.Rows.Count).End(xlUp).Row + 1).Select
    ActiveCell.Value = NLICENCEtextbox.Value
    '  N?c?ssite d'activer les r?f?rences
    '   - Microsoft HTML Object Library
    '   - Microsoft Internet Controls
    '   - barre de menu => Outils => r?f?rences, il faut la cocher...
     
        Dim IE          As New InternetExplorer
        Dim IEDoc       As HTMLDocument
        Dim num         As Object               ' il s'agit du num?ro de licence
        Dim FindClick   As Object               ' il s'agit du click sur rechercher
        Dim Coureur     As Object               ' il s'agit du click sur le coureur rechercher
     
     
        IE.navigate "https://www.ffc.fr/licencies"
        IE.Visible = True
        Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
     
        Set IEDoc = IE.document
     
        Set num = IEDoc.getElementById("num")
        num.Value = NLICENCEtextbox.Value
        'DoEvents
     
        Set FindClick = IEDoc.getElementById("fake-search")
        FindClick.Click
        'la page internet s'ouvre et le coureur recherch? est affich? mais il faut lui laisser le temps de s'affichher
     Do While IE.readyState <> 4 Or IE.busy
            DoEvents
        Loop
     
        'on click sur le courreur pour afficher ses donn?es
        Set Coureur = IEDoc.getElementById("table-comites")
        Coureur.Click
    est ce que la table html que tu veux récuoérer est cet element "table-comites"?????

    si c'est ca alors c'est coureur.outerhtml et la tu a tout le code de la table
    parti de la il y a 36 facon de rapatrier les données mais me faudrait un numero pour mes tests
    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

  9. #9
    Futur Membre du Club
    Homme Profil pro
    passionné
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : passionné

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour, j'ai effectivement l'impression que table-comite est ma cible!
    Voici un code pour essai: 43560170701.
    Merci

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    tu a tout ce qu'il te 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
    Sub inscription_concurrent()
    'pas de reference a activer!!!!!!!!!!!!!!!!!!!
        Dim IE As Object, IEDoc As Object, NLicence As Object, FindClick As Object    'les variables
        Set IE = CreateObject("internetexplorer.application")    'instance de ie (late binding)sans reference
        IE.navigate "https://www.ffc.fr/licencies"    'navigation
        IE.Visible = True
        Do While IE.readyState <> 4: DoEvents: Loop    'attente de chargement de la page
        Set IEDoc = IE.document    'IEDoc= le document de la page
        Set NLicence = IEDoc.getelementbyid("num"): NLicence.Value = "43560170701"    'entrée du numero
        Set FindClick = IEDoc.getelementbyid("fake-search"): FindClick.Click    'click sur rechercher
        Do While IE.readyState <> 4: DoEvents: Loop    'attente de la fin de la recherche
        Do: DoEvents: Loop While IEDoc.getelementbyid("table-comites").getelementsbytagname("TD").Length < 2    'attente fin du chargement complet de la table
        code = IEDoc.getelementbyid("table-comites").outerhtml    'recuperation du code outerhtml de la table
        IE.Quit    'on peut fermer ie on en a plus besoins
        With CreateObject("htmlfile")    'creation d'un documenthtml virtuel
            .body.innerhtml = code    'incription du code html de la table précédement recupéré
            'pour suprimer tout les icon et image et compagnie on remplace le innerhtml de chaque elements par leur innertext
            For Each elem In .all
                If elem.classname <> "hidden" And elem.tagname = "TD" Then elem.innerhtml = elem.innertext
            Next
            r = .parentwindow.clipboardData.setData("TEXT", .body.innerhtml)    'on met la table netoyée dans le clipboard
        End With
        'on peut maintenant coller sur la premiere cellule vide(dispo) de la colonne "A"
        With ActiveSheet: .Cells(Rows.Count, 1).End(xlUp).Select: .Paste: 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

  11. #11
    Futur Membre du Club
    Homme Profil pro
    passionné
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : passionné

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Quelle réactivité Mr Patrick!
    J'ai même pas le temps de me documenter, un grand merci à vous! J'essai quand même de comprendre les solutions que vous me donnez, la dernière est d'une approche différente et provoque une erreur en ligne 5, sans commentaire, mais la ligne toute entière est écrite en rouge.
    IE.navigate "<a href="https://www.ffc.fr/licencies" target="_blank">https://www.ffc.fr/licencies</a>" 'navigation


    En tout cas merci beaucoup pour le temps que vous m'accordez.

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    oui j'ai corrigé l'url
    pour pas avoir ce truc dans l'url il faut cliquer sur le bouton entouré dans le wysiwyg de DVP j'oublie tres souvent
    Nom : Capture.JPG
Affichages : 261
Taille : 23,5 Ko
    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

  13. #13
    Futur Membre du Club
    Homme Profil pro
    passionné
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : passionné

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Un immense merci Monsieur Patrick!

    C'est incroyable de trouver des gens comme vous, encore merci pour ce code que je vais adapter à mon classeur!

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    de rien
    j'ai mis des commentaires pour t'aider a comprendre
    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

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

Discussions similaires

  1. Activer un bouton sur une page internet
    Par Slimounet45 dans le forum C#
    Réponses: 2
    Dernier message: 24/03/2007, 16h09
  2. [AJAX] Avoir des infos sur une page web
    Par Skieur38 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/03/2007, 21h38
  3. Récupérer des infos sur une page externe
    Par Horrigan dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/07/2006, 14h46
  4. Comment récupérer une info d'une page internet ?
    Par Magicien d'Oz dans le forum Réseau
    Réponses: 3
    Dernier message: 12/10/2005, 07h38
  5. Obtenir des infos sur une page web en ligne
    Par Logan_Cale dans le forum Web & réseau
    Réponses: 1
    Dernier message: 20/08/2005, 15h36

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