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 :

Automatisation requète POST en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 38
    Par défaut Automatisation requète POST en VBA
    Bonjour,

    Je souhaite automatiser sous excel le résultat d'une requête HTML par la méthode POST :

    Ci-joint le code HTML source qui fonctionne :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <html>
    <head>
    </head>
    <body>
    <form method="post" action="http://premium-5vch0vnec1h5ui.eu.clickandbuy.com/php3/FFTTlca.php3">
    <input type='hidden' name='reqid' value=237>
    <input type='hidden' name='precision' value=01>
    <input type="submit" value="Soumettre">
    </form>
    </body>
    </html>


    et le code VBA proposé mais qui lui ne fonctionne pas (la requête est bien envoyée au serveur, mais la page html retournée envoie un message d'erreur)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub TestPost()
        Dim xml As MSXML2.XMLHTTP60
        Dim result As String
      ' Const BASE_URL As String = "http://premium-5vch0vnec1h5ui.eu.clickandbuy.com/php3/FFTTlca.php3?reqid%3D237%26precision%3D01"
        Const BASE_URL As String = "http://premium-5vch0vnec1h5ui.eu.clickandbuy.com/php3/FFTTlca.php3?reqid=237&precision=01"
        Set xml = CreateObject("MSXML2.XMLHTTP.6.0")
        xml.Open "POST", BASE_URL, False
        xml.send
        result = xml.responseText
        Range("A1").Value = result
    End Sub
    (Nécessite d'activer la référence Microsoft xml, v6.0)

    Code testé avec les 2 variantes de syntaxes (= et & ou %3D et %26 mais sans succès...)

    (Nota, c'est un bout de code pour tester, afin de visualiser simplement le résultat manuellement, il suffit de copier dans le Clipboard le texte de la cellule A1 et de le coller à coté dans la page Excel, et la le résultat de la page "html" devient "décodé lisible")

    Merci pour votre aide (je n'ai pas trouvé ou était l'erreur...)

  2. #2
    Invité
    Invité(e)
    Par défaut
    dans la mesure ou tu utilise CreateObject pas besoin de la référence Microsoft xml, v6.0.
    ce code fonctionne chez moi je ne sais pas si c'est le resultat escompté!!!!

    Code HTML : 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>
    <style type='text/css'>a {  color: #094098; line-height: normal; text-decoration: none; font-family: Verdana, Arial, Helvetica, sans-serif; letter-spacing: normal; cursor: hand}td { line-height: normal; text-decoration: none; font-family: Verdana, Arial, Helvetica, sans-serif; letter-spacing: normal; font-size: 10px;}a:hover      { color: #000000; background-color: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; }P {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;}body {
    	background-image: url(../Image/fond.gif);
    }.p1 { font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; }.p_jaune { color: #FFFF00; font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; }</style><body bgcolor=#FFFFFF background='http://premium-5vch0vnec1h5ui.eu.clickandbuy.com/Image/fond.gif'><base target='_self'>
    <body background=""http://premium-5vch0vnec1h5ui.eu.clickandbuy.com/Image/fond.gif"">
     
    <head>
     
    <meta http-equiv=""description"" content=""Classement national des pongistes français."">
     
    <meta http-equiv=""keywords"" content=""Classement, FFTT, pongistes, français, tennis, table"">
     
    <meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1"">
     
    <title> www.fftt.com - Classement </title>
     
    </head>
     
    <body bgcolor='#FFFFFF' background='http://www.fftt.com/' bgproperties='fixed'>
     
    <style type='text/css'>a {  color: #094098; line-height: normal; text-decoration: none; font-family: Verdana, Arial, Helvetica, sans-serif; letter-spacing: normal; cursor: hand}td { line-height: normal; text-decoration: none; font-family: Verdana, Arial, Helvetica, sans-serif; letter-spacing: normal; font-size: 10px;}a:hover      { color: #000000; background-color: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; }P {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;}body {
    	background-image: url(../Image/fond.gif);
    }.p1 { font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; }.p_jaune { color: #FFFF00; font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; }</style><body bgcolor=#FFFFFF background='http://premium-5vch0vnec1h5ui.eu.clickandbuy.com/Image/fond.gif'><base target='_self'>
     
    <div align=""center""><center>
    <table border=""1"" width=""52%"" bgcolor=""#FFFFFF"">
    <tr>
    <td width=""100%"" bgcolor=""#FFFFFF""><p align=""center""><strong>Aucune information trouvée</strong></td>
    </tr>
    </table>
    <p>&nbsp;</p>
    </center></div><div align=""center""><center>
    <table border=""0"" width=""80%"">
    <tr>
    <td width=""100%""><font color=""#FF0000""><strong>La recherche n'est pas valide !</strong></font></td>
    </tr>
    </table>
    </center></div>
     
    <meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1""></head>
     
     
    <table border=""0"" width=""100%"" style=""border-top: 1px ridge rgb(0,128,128)"">
      <tr>
        <td width=""100%""><font color=""#408080""><small>© Fédération Française de Tennis de
        Table</small></font></td>
      </tr>
    </table>
    </body>
    </html>"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    End Sub
    Sub TestPost()
        Dim xml
       ......
        Set xml = CreateObject("MSXML2.XMLHTTP.6.0")
        xml.Open "POST", BASE_URL, False
        xml.send
        result = xml.responseText
        Range("A1").Value = result
    End Sub
    ceci dit attention à la version sur la machine:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xml = CreateObject("MSXML2.XMLHTTP")
    Dernière modification par Invité ; 14/01/2014 à 15h29.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 38
    Par défaut
    Justement non, ce n'est pas le résultat attendu.

    Il y a bien une page en retour du serveur, mais elle contient un message "Le code n'est pas valide"

    Si on fait la "même requète" à partir de la page html (cf code ci-dessus à mettre dans un fichier .htm), le retour du serveur après clic est celui attendu : une liste de joueurs avec des informations associée...

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 38
    Par défaut
    Bon, pas de bol le lien maitre a expiré (valable 3 mois) donc on ne peut plus tester dans l'immédiat...

    Je corrigerai le lien dès que j'aurai payé ma cotisation...

    Si quelqu'un a déjà utilisé ce mécanisme je suis intéressé par la mise en oeuvre (notamment s'il y a des différences côté serveur entre une requète provenant d'Internet Explorer par rapport à une requête POST provenant d'Excel, car j'étais très surpris de ne pas avoir le même retour entre la page html et la "même" requête effectuée à partir d'Excel...)

    Merci et je vous tiens au courant dès que le test est à nouveau possible

Discussions similaires

  1. [Socket] Réponse à la requête POST
    Par cilv1 dans le forum Langage
    Réponses: 4
    Dernier message: 20/10/2005, 18h18
  2. Requête et Module VBA
    Par Telemak dans le forum Access
    Réponses: 1
    Dernier message: 15/10/2005, 13h04
  3. Comment envoyer une requête POST via HTTP ?
    Par pdtor dans le forum C++
    Réponses: 2
    Dernier message: 13/09/2005, 05h54
  4. Analyse de code HTML en réponse a une requête post.
    Par ghost942 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 04/06/2005, 21h40
  5. Conversion d'une requête SQL en VBA
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 26/10/2004, 17h33

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