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 de texte dans le code source d'une page internet [Toutes versions]


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
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Par défaut Récupération de texte dans le code source d'une page internet
    Bonjour,

    Présentation : je suis juriste et je bidouille quelques macros excel pour m'amuser le WE sans avoir aucune base vba requise (donc je galère pas mal)

    Je cherche au moyen d'une macro excel à récupérer diverses informations comprises dans une page web et à les ordonner dans une feuille de classeur.

    J'ai lu et essayer de comprendre l'article sur la manipulation d'IE par VBA https://www.developpez.net/forums/d1...lorer-via-vba/ et http://qwazerty.developpez.com/tutor...-et-vba-excel/

    J'ai parcouru d'autres discussions dont
    https://www.developpez.net/forums/d1...ls-d-page-web/

    et surtout https://www.developpez.net/forums/d1...cles-internet/

    Je n'ai pas retenu la méthode de l'article car il faut activer des librairies et je sais que l'utilisateur final ne saura pas comment procéder.

    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
    Sub DemoIE()
     Dim yNum As Byte
    Dim zNum As Byte
      Const URL$ = "https://www.xxxxxx"
     
        With CreateObject("InternetExplorer.Application")
            .navigate URL
            While .Busy Or .readyState < 4:  DoEvents:  Wend
     
     
            With .document.all.TABLE2
                T$ = .all(0).innerText
            End With
     
            .Quit
        MsgBox T, vbInformation, "          Résultat"
     
          End With
     
     
     
    End Sub
    J'ai 4 difficultés principales (rien que ça).


    1°) les informations que je cherche à reprendre sont comprises dans 4 tables numérotées de 2 à 5. je pourrai évidemment copier le code 3 fois en modifiant le nom de la table (TABLE2, TABLE3, TABLE4, TABLE5) mais je voudrai boucler mais je ne parviens pas trouver la bonne syntaxe With .document.all.TABLE <-(variableYNum)

    2°) la je récupère dans ma variable l'ensemble des éléments de la table mais au sein de chacune des tables je souhaiterai davantage récupérer séparément dans chacune des lignes un texte suivant toujours le même texte.
    par exemple, je voudrais récupérer ce qui suit "Nom :" , "Prénom :", "Age :"
    la structure de la table est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <tr><td>Nom :</td><td> xxxx</td></tr>
    <tr><td>Prénom : </td><td>yyyy</td></tr>
    <tr><td>Age : </td><td>29 ans</td></tr>
    A priori les données cherchées ne sont pas affublées d'id ou de name (vous m'aurez compris).


    Est-il possible de récupérer ce qui est compris dans les balises td qui suivent le texte recherché ?


    EDIT : je récupère désormais avec children les seules données qui m'intéressent. J'aimerai donc savoir s'il existe une instruction qui permet de rechercher dans le code de la page source une chaine de 15 caractères commençant par "dans le " et de copier cette chaine dans une variable.

    3°) en fait les données à collecter sont dans 16 tables réparties dans 4 pages internet ayant toutes la même url (il faut cliquer sur les numéros des pages suivantes pour accéder aux tables suivantes)
    J'aurai voulu trouver comment faire pour charger la page suivante sachant que c'est une fonction javascript pageSearch (avec la méthode décrite dans l'article sus-visé cela aurait été
    IEDoc.parentWindow.execScript "pageSearch(" & zNum & ")", "JavaScript")

    4°) concerne la mise en forme des résultats dans une feuille excel mais c'est trop éloigné du sujet.


    Merci à ceux qui ont pris la peine de me lire et au sein d'eux à ceux qui pourrait me donner des pistes.

    nullos

  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
    sans connaitre le lien de cette page ou son code source en entier (ce qui reviens au même) il nous sera difficile de t'aider car on ne peut pas deviner la structure de la page
    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 averti
    Homme Profil pro
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Par défaut
    Bonjour et merci de t'être intéressé à mes problèmes. Je comprends que mes questions sans code source rendent très difficile les réponses à celles-ci. Mais je suis désolé je dois hélas garder pour moi le code source.

    Je suis parvenu en tâtonnant à trouver pour ne récupérer que les données m'intéressant dans une table (je pense avoir compris l'utilisation de children).

    Maintenant, j'aimerai savoir s'il existe une instruction qui permet de rechercher dans le code source de la page une chaine de 15 caractères commençant par "dans le " et de copier cette chaine dans une variable.

    pour mon premier problème, je dupliquerai tant pis.

    et pour mon troisième problème je continue à fouiller

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    en dehors de l'aide VBA interne contenant déjà tout le nécessaire concernant les fonctions texte
    voir aussi le tutoriel de ce forum Manipuler les chaînes de caractères en VB6 et VBA Excel

    ___________________________________________________________________________________________________________
    Je suis Paris, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  5. #5
    Membre averti
    Homme Profil pro
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Par défaut
    Bon vu que je sais même pas dans quoi est stocké le code de la page, je me vois pas faire des manipulations de chaine.

    Pour l'aide interne de VBA c'est pas mieux vu que je sais pas ce que c'est

    Donc c'est mort.

    Merci encore

    nullos

  6. #6
    Membre averti
    Homme Profil pro
    Juriste
    Inscrit en
    Mars 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Juriste
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2004
    Messages : 49
    Par défaut
    Bonjour les gens

    Je rouvre le sujet, j'envisage les choses d'un manière différente (sans piloter IE).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Function WebPage$(URL$)
        With CreateObject("MSXML2.XMLHTTP")
            .Open "POST", URL, False
            On Error Resume Next
            .send
            On Error GoTo 0
            If .Status = 200 Then WebPage = .responseText
        End With
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Test()
    Dim URL1 As String
    Dim result As String
     
     
    URL1 = Cells(1, 1)
     
     result = WebPage$(URL1)
     MsgBox Len(result)
     
    End Sub
    Avec cette fonction, sur la page testée, le nombre de caractères renvoyés est de 21.945 alors qu'en réalité le code source de la page en compte plus de 149.000.

    Quelqu'un a-t-il une explication ?

    Merci d'avance

    nullos

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

Discussions similaires

  1. [Toutes versions] Extraire des données en ciblant des ID, dans le code source d'une page web ?
    Par Dan.exe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/10/2014, 05h32
  2. [WD12] Info manquante dans le code source d'une page web
    Par zouzoukha dans le forum WinDev
    Réponses: 12
    Dernier message: 18/06/2012, 04h21
  3. [XL-2003] Vb auto récupération de valeur dans le code source de plusieurs pages web
    Par Supremereboot dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/04/2011, 12h36
  4. Réponses: 0
    Dernier message: 08/04/2010, 11h29
  5. Récupérer le code source d'une page Internet
    Par sango85 dans le forum MATLAB
    Réponses: 2
    Dernier message: 06/11/2008, 09h02

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