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 :

Requete Web HTML pour récupérer les données dans Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 74
    Par défaut Requete Web HTML pour récupérer les données dans Excel
    Bonjour,

    Je n’arrive pas à recupérer le body d’une page web dans une feuille excel.
    Comme vu avec PatrickToulon, j’ai essayé d’adapter les 2 solutions de code qu’il me proposa :

    la 1ere avec internet explorer
    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 test()
        Dim IE, URL, code, elem
        URL = "http://evpt-webprod.eu.airbus.corp/E760/displaySchedule.php?day=0"
        'URL = "https://en.wikipedia.org/wiki/2016%E2%80%9317_Ligue_1"
        Set IE = CreateObject("internetexplorer.application")
        IE.navigate URL: IE.Visible = True
        Do: DoEvents: Loop While IE.readyState <> 4
        With IE.document
            code = .getElementsByClassName(" gridbox gridbox_dhx_web isIE")(0).outerHTML
           End With
        IE.Quit
        With CreateObject("htmlfile")
            .body.innerHTML = code
            For Each elem In .all
                If elem.tagName = "TD" Then elem.innerHTML = elem.innerText
            Next
            If .parentWindow.clipboardData.setData("text", .body.innerHTML) Then
                With Sheets(1): Cells.Clear: .Cells(1, 1).Select: .Paste: End With
                .parentWindow.clipboardData.clearData ("text")
            End If
        End With
    End Sub
     Probleme : le lien URL = http://evpt-webprod.eu.airbus.corp/E...dule.php?day=0 me génère cette erreur :
    Erreur d’exécution ‘2147417848 (80010108)’ :
    Erreur automation
    L’objet invoqué s’est déconnecté de ses clients

    la 2nd solution avec une requête
    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
    Sub test2()
    Dim ReQ, URL, code, elem
    URL = "http://evpt-webprod.eu.airbus.corp/E760/displaySchedule.php?day=0"
       Set ReQ = CreateObject("microsoft.xmlhttp")
     ReQ.Open "POST", URL, False
    ReQ.send
    With CreateObject("htmlfile")
            .body.innerHTML = ReQ.responseText
            'Range("A12") = ReQ.responseText
             code = .getElementsByClassName(" gridbox gridbox_dhx_web isIE")(0).getElementById("gridboxOPS").outerHTML
    ‘code = .getElementsByClassName(" gridbox gridbox_dhx_web isIE")(0). outerHTML
    ‘code = .getElementsByClassName("gridbox gridbox_dhx_web isIE")(0). outerHTML
     
     
             .body.innerHTML = code
            For Each elem In .all
                If elem.tagName = "TD" Then elem.innerHTML = elem.innerText
            Next
            If .parentWindow.clipboardData.setData("text", .body.innerHTML) Then
                With Sheets("Feuil1"): Cells.Clear: .Cells(1, 1).Select: .Paste: End With
                .parentWindow.clipboardData.clearData ("text")
            End If
        End With
    End Sub
     Probleme :
    Le message suivant s’ affiche à cette ligne de code:
    code = .getElementsByClassName(" gridbox gridbox_dhx_web isIE")(0).getElementById("gridboxOPS").outerHTML

    Message errreur :
    Erreur d’exécution ‘438’ :
    Propriété ou méthode non gérée par cet objet.

    J’ai beau essayé plusieurs code ca ne fonctionne pas .

    La ligne HTML que je souhaite récupérer est celle ci:
    <div class=" gridbox gridbox_dhx_web isIE" id="gridboxOPS" style="width: 1915px; height: 595px; cursor: default;">
    Vous avez plus de précision dans la pj

    Merci d'avance pour votre temps

    Bonne journée
    Jerome
    Fichiers attachés Fichiers attachés

  2. #2
    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,

    comme nous ne pouvons pas accéder à cette URL, nous ne pouvons pas tester !

    La procédure doit attendre qu'un objet soit disponible ou / et vérifier qu'il l'est toujours.
    Une faute d'orthographe dans l'ID ou la classe d'un élément pouvant aussi être fatale …

    Et puis côté logique, on accède à un élément soit par sa classe soit par son ID, pas les deux !

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Au pire fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug.print ReQ.responseText
    et regardes ce que tu obtiens

  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
    Bonjour chez moi même dans IE directement l'URL est non valide ceci explique peut être cela
    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
    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

    C'est de l'Intranet et juste un problème de logique …

    Le souci vient de sa ligne de code n°10 si tu compares avec la ligne HTML plus bas
    car il suffit de pointer l'élément par sa classe ou par son ID mais pas les deux ‼

    _________________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  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
    re
    @marc
    ben en fait ca dépend de l'élément qu'il souhaite récupérer c'est mouliner pour rien mais pas faux
    ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    code = .getElementsByClassName(" gridbox gridbox_dhx_web isIE")(0).getElementById("gridboxOPS").outerHTML
    pourait etre l'equivalent de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    code = .getElementsByClassName(" gridbox gridbox_dhx_web isIE")(0).children(X).outerHTML
    X étant son index dans la hiérarchie

    si c'est bien cet élément qu'il veut alors le id suffit aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    code=.getElementById("gridboxOPS").outerHTML
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 74
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    Bonjour chez moi même dans IE directement l'URL est non valide ceci explique peut être cela
    Bonjour Patricktoulon,

    Merci pour ton retour
    Je te confirme l'adresse URL fonctionne bien mais il faut être sur site/réseau de l'entreprise en question.

    Cdt
    Jerome

  8. #8
    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
    Bonjour v
    u le responsetext que tu reçois je soupçonne le besoins du header de la requête
    est ce que tu sais te servir de l'inspecteur de ton navigateur(touche F12) ???
    si oui on pourrait récupérer ce header ca changerait la donne a mon avis
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 74
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Au pire fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug.print ReQ.responseText
    et regardes ce que tu obtiens
    Merci pour l'information, j'y avais pas pensé. Du coup ca me donne une piste car dans le debug print j'obtiens:
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <HTML>
    <HEAD>
    	<TITLE>Launching EV Planning Tool Web Consultation [H01]</TITLE>
    	<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    	<LINK href="css/styles.css" type=text/css rel=stylesheet>
    	<LINK REL="shortcut icon" HREF="img/favicon16.ico" type="image/icon">
    	<LINK REL="icon" HREF="img/favicon.png" type="image/png">
    	<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
    	<SCRIPT>
            function initLauncher() {
                $("#evptscreenwidth").val(screen.width);
                var is_firefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
                if(!is_firefox)
                    $("#evptscreenheight").val(screen.height - 100);
                else
                    $("#evptscreenheight").val(screen.height - 50);
                $("#loadingform").submit();
            }
    	</SCRIPT>
    </HEAD>
    	<!-- we need to first load Airbus People to be able to load old evpt pages -->
    <BODY ID="index" onload="initLauncher();">
    	<!-- only supersede user if not passed in secret parameter -->
    	<form id="loadingform" method='POST' ACTION='displaySchedule.php?day=0' target="_self">
    				<input id='evptscreenheight' name='evptscreenheight' type='hidden' value=''>
    		<input id='evptscreenwidth' name='evptscreenwidth' type='hidden' value=''>
    		<input name='PAGE' type='hidden' value=''>
    	</form>
    
    	<center>
    	<DIV ID="TITLE"> Loading EV PLANNING TOOL WEB</DIV>
    	<BR><bR><BR>
    	<img src='img/loading_animation.gif'>
    	<BR>
    	<I>
    	If this page does not unload by itself after about 2-3 seconds, this means there is a configuration issue on your Internet Explorer.
    	<BR>
    	If run for the first time, you may need to <B>accept</B> to let Microsoft Activex get your local identity.
    	<BR>This is needed for single sign-on mechanism. Simply click on "accept" or "authorize" if you receive a questioning security pop-up.
    	<BR><B style='font-size:11px'>If still blocked, please proceed as explained in the
    	<A style='font-size:11px' class="plainlink" TARGET="_BLANK" HREF='help/launchHelp.avi' Title='How to unlock the launching page'>help video</A>
    	or <A style='font-size:11px' class="plainlink" TARGET="_BLANK" HREF='help/launchHelp.htm' Title='How to unlock the launching page'>static page</A> (use this last link for MTAD users)</B>.
    	<BR><BR>
    	Please note that Airbus standard configuration of Internet Explorer does not require any user action on that matter (Local Network Activex are accepted). You should not even be able to read that message.
    	<P></P>
    	<BR>
    	This application is <u>not</U> to be run under any other browser than Microsoft Internet Explorer.
    	</I>
    	</center>
    </BODY>
    </HTML>
    Je pense que c'est mort car meme si je suis déjà logué avec mon compte Airbus People, le message reste le même
    Peut être avez vous une idée ?

    Cdt
    Jerome

Discussions similaires

  1. [XL-2010] Récupérer les données dans un message HTML
    Par Daniel.C dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/04/2016, 11h26
  2. Réponses: 2
    Dernier message: 17/11/2015, 10h14
  3. Réponses: 4
    Dernier message: 16/06/2011, 12h07
  4. Réponses: 4
    Dernier message: 25/11/2010, 20h14
  5. [VBA-E]Formulaire word, récupérer les données dans excel
    Par sablier dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 30/05/2006, 07h38

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