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

VBA Discussion :

pilotage internet explorer suite


Sujet :

VBA

  1. #1
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut pilotage internet explorer suite
    Bonjour,

    Encore besoin d’un petit coup de pouce car depuis votre aide j’ai réussi à adapter les diverses modifications faites pour récupérer les informations...Mais là cette fois je n’y arrive pas...
    En effet malgré tout un tas de tentatives, impossible de passer à la récupération des données de la page2... (il est possible de passer à la page 2 en cliquant sur l’onglet en bas indiquant 2 et ainsi de suite pour toutes les pages)
    Pour visualiser les cours et le code pour la requête il faut aller sur l'adresse suivante : https://www.euronext.com/en/listings/issuers-directory.
    Pour vous remettre à jour Euronext a changé son adresse URL de lancement de la requête et surtout les fichiers contenant les datas sont maintenant de type JS et non plus html mais par contre l’onglet réponse contient bien toujours du html.
    Pour la requête l’URL est maintenant :
    URL = "https://www.euronext.com/pd/stocks/data?formKey=nyx_pd_filter_values:b9301b0a52857fbdc601dbd15864fdff"
    et l’URL reste toujours la même pour toutes les pages de datas seul iDisplayStart=0 to x varie...comme avant.

    Mais pour le moment impossible d’aller chercher les datas en page2 par la requête!!!
    Voici le code pour tout se remémorrer facilement :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Sub EURONEXT_ALL_EQUITIES()
        'cette sub va interroger le serveur pour récupérer toutes les données du jour à l'instant t
        'Il faut activer la bibliothèque Microsoft WinHTTP Service
        'il faut tout d'abord récupérer le NBPAGES en envoyant une 1° requête pour cela
        Dim i As Long, ARGTS_send As String, Fso As Object
        NBPAGES = 0
        Dim DemandeFichier As Object, URL As String
        Dim FSys As Object, MonFic
        Dim texte As String
        Set DemandeFichier = CreateObject("Microsoft.XMLHTTP")
        URL = "https://www.euronext.com/pd/stocks/data?formKey=nyx_pd_filter_values:b9301b0a52857fbdc601dbd15864fdff"
        'On génère la 1 ere requête afin d'obtenir les 20  1ere lignes ainsi que le nombre de page
        DemandeFichier.Open "POST", URL, False
        DemandeFichier.setRequestHeader "Accept", "application/json, text/javascript, */*"
        DemandeFichier.setRequestHeader "Referer", ":https://www.euronext.com/en/equities/directory"
        DemandeFichier.setRequestHeader "Host", "www.euronext.com"
        DemandeFichier.send "sEcho=null&iColumns=7&sColumns=&iDisplayStart=0&iDisplayLength=20&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=true&bSortable_2=true&bSortable_3=true&bSortable_4=true&bSortable_5=true&bSortable_6=true"
        NBPAGES = Round(Val(Split(Split(DemandeFichier.responseText, "iTotalRecords"":")(1), ",")(0)) / 20)
        MsgBox ("Nombre de pages " & NBPAGES)
        'suppression\création du répertoire response pour les fichiers DemandeFichier.responseText
        On Error Resume Next
        Kill "C:\Users\...\response\*.*"
        RmDir "C:\Users\...\response"
        MkDir "C:\Users\...\response"
        On Error GoTo 0
     
    creationvbs2
     
        requetevbs = "C:\Users\...\requeteallequities.vbs"
        SC = """" & requetevbs & """ "
        For i = 0 To NBPAGES
            ARGsending = i * 20 '=WScript.Arguments(1)
            Set sh = CreateObject("WScript.Shell")
            sh.Run SC & URL & " " & ARGsending
        Next
    End Sub
     
    Sub creationvbs2()
        Dim code As String, sending As String, Parser As String, FSys As Object, MonFic As Object
        code = code & vbCrLf & "Set DemandeFichier = CreateObject(""Microsoft.XMLHTTP"")"
        code = code & vbCrLf & "DemandeFichier.Open ""POST" & """, WScript.Arguments(0), False" & vbCrLf
     
        code = code & vbCrLf & "DemandeFichier.setRequestHeader ""Accept"", ""application/json, text/javascript, */*""" & vbCrLf & _
                  "DemandeFichier.setRequestHeader ""Host"", ""euronext.com""" & vbCrLf & _
                  "DemandeFichier.setRequestHeader ""Referer"", ""https://www.euronext.com/fr/equities-directory"""
     
       ARGTS_send = """sEcho=null&iColumns=7&sColumns=&iDisplayStart=""" & "& WScript.Arguments(1) & " & """&iDisplayLength=20&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=false&bSortable_2=false&bSortable_3=false&bSortable_4=false&bSortable_5=false&bSortable_6=false"""
     
      code = code & vbCrLf & "DemandeFichier.send " & ARGTS_send
      code = code & vbCrLf & "str_demande_fich = DemandeFichier.responseText"
      code = code & vbCrLf & "MsgBox(""iDisplayStart= "" & WScript.Arguments(1))" 'pour visualiser iDisplayStart oui monte de 20 en 20
      code = code & vbCrLf & "MsgBox(""DemandeFichier.responseText = "" & str_demande_fich)" 'pour visualiser le fichier html de réponse du
      'serveur => problème c'est toujours le même, soit la 1° page
     
          With ThisWorkbook
            'On copie le code dans un fichier
            Set FSys = CreateObject("Scripting.FileSystemObject")
            Set MonFic = FSys.CreateTextFile("C:\Users\...\requeteallequities" & ".vbs")
            With MonFic    'Pour écrire dans le fichier texte
                .write code
            End With
        End With
    End Sub

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    A priori rien de particulier au niveau des requêtes serveur.
    Le seul doute c'est au niveau des "events" lié au numéro de page sur la page du site. Il y a deux events en plus du Click, la page se sert peut-être de ses deux events pour repérer les bots. Mais si c'est le cas, je ne comprends pas comment est transmise l'info au serveur. Il n'y a pas d'autre requête que celle visant à demander les datas au serveur et je ne voit rien dans cette dernière qui viserait à indiquer au server que je suis humain.

    Une remarque tout de même, sur le site, si on relance un requête en modifiant le paramètre iDisplayStart, les données ne sont pas modifiées sur la page web... mais la réponse contient bien les bonnes informations (celles qu'on lui a demandées).

    Il faudrait peut-être refaire un code qui exécute la requête à partir du code VBA plutôt que de passer par le VBS, il serait plus aisé de faire des essai et de contrôler le contenu des variables.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    Merci de ta réponse si rapide

    Oh oui j'ai fait des essais mais rien n'y fait cette fois...ou alors je n'ai pas tout compris de tes anciennes explications de l'époque

    Tu peux tester le code mis en post#1 mais rien à faire c'est toujours la 1° page qui revient!!!

    Une remarque tout de même, sur le site, si on relance une requête en modifiant le paramètre iDisplayStart, les données ne sont pas modifiées sur la page web... mais la réponse contient bien les bonnes informations (celles qu'on lui a demandées).
    C'est ce point qui me pose problème, je n'arrive pas à envoyer de requête pour récupérer les informations la page 2 même en mettant iDisplayStart=20 aussi bien en VBS, qu'en VBA...c'est toujours les données de la 1° page qui reviennent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DemandeFichier.send "sEcho=null&iColumns=7&sColumns=&iDisplayStart=20&iDisplayLength=20&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=false&bSortable_2=false&bSortable_3=false&bSortable_4=false&bSortable_5=false&bSortable_6=false"
    sur cette ligne j'ai fait des tests sEcho=1, sEcho=2, sEcho=5 ca compte juste le nombre de requêtes envoyées au serveur

    Oui les events perturbent peut être mais comme toi je ne vois pas comment, ni pourquoi...et le code VBS jusqu'à présent nettement plus pratique que du VBA...donc si possible je voudrais rester avec lui...et surtout éviter de devoir valider page par page cliquant à chaque fois (car ca serait surement interminable)!!!

    Où est ce que je fais une erreur stp?

  4. #4
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut
    Bonjour,

    Pour le moment retour en arrière en cliquant page par page...je ne trouve pas de moyen pour lancer directement la requête sur la page2 même en VBA (c’est toujours les données de la page1 qui reviennent !!!)
    Les données de la page2 ne semblent disponible qu’après clic sur le bouton de la page2...Tu as réussi à charger directement la page2 sans cliquer sur le bouton grâce à iDisplayStart=20 ?
    Comment as-tu fait stp

    les events à contourner sont bien ceux là ?
    Nom : euronext_tc_page_suivante.jpg
Affichages : 405
Taille : 273,3 Ko

    Merci de ton aide, en plus depuis le temps je t’avoue que j’espèrais contourner cela en 2 temps 3 mouvements et bien pas du tout...

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    Pour les sEcho, j'avais aussi gratté de ce coté et j'en étais arrivé à la même conclusion.

    Citation Envoyé par itwoo Voir le message
    Tu as réussi à charger directement la page2 sans cliquer sur le bouton grâce à iDisplayStart=20 ?
    Comment as-tu fait stp
    Dans tous les cas ça ne résoudra pas ton problème mais la manip est la suivante
    Nom : Renvoyer (Copier).png
Affichages : 377
Taille : 85,0 Ko

    Ensuite je modifie la requête

    Nom : Modifier (Copier).png
Affichages : 371
Taille : 56,2 Ko
    et je la retourne au serveur.
    Une nouvelle ligne est crée dans réseau et si tu vas dans l'onglet réponse, les données correspondent bien au informations demandées (ici de la page 3).
    Malgré tout, le contenu de la page lui ne change pas, mais les données sont les bonnes.

    Nom : Onblet réponse (Copier).png
Affichages : 373
Taille : 118,5 Ko

    S'agissant du code du porte #1, j'ai modifié deux trois lignes pour qu'il "fonctionne" (sans pour autant régler ton problème, juste pour pouvoir faire des essais )
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    Option Explicit
     
    Sub EURONEXT_ALL_EQUITIES()
        'cette sub va interroger le serveur pour récupérer toutes les données du jour à l'instant t
        'Il faut activer la bibliothèque Microsoft WinHTTP Service
        'il faut tout d'abord récupérer le NBPAGES en envoyant une 1° requête pour cela
        Dim i As Long, ARGTS_send As String, Fso As Object
        Dim NBPAGES As Integer, RequeteVBS As String, SC As String, ARGsending As Integer, Sh As Object
        Dim DemandeFichier As Object, URL As String
        Dim FSys As Object, MonFic
        Dim texte As String
     
        NBPAGES = 0
        Set DemandeFichier = CreateObject("Microsoft.XMLHTTP")
        URL = "https://www.euronext.com/pd/stocks/data?formKey=nyx_pd_filter_values:b9301b0a52857fbdc601dbd15864fdff"
        'On génère la 1 ere requête afin d'obtenir les 20  1ere lignes ainsi que le nombre de page
        DemandeFichier.Open "POST", URL, False
        DemandeFichier.setRequestHeader "Accept", "application/json, text/javascript, */*"
        DemandeFichier.setRequestHeader "Referer", ":https://www.euronext.com/en/equities/directory"
        DemandeFichier.setRequestHeader "Host", "www.euronext.com"
        DemandeFichier.send "sEcho=null&iColumns=7&sColumns=&iDisplayStart=0&iDisplayLength=20&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=true&bSortable_2=true&bSortable_3=true&bSortable_4=true&bSortable_5=true&bSortable_6=true"
        NBPAGES = Round(Val(Split(Split(DemandeFichier.responseText, "iTotalRecords"":")(1), ",")(0)) / 20)
        'MsgBox ("Nombre de pages " & NBPAGES)
        'suppression\création du répertoire response pour les fichiers DemandeFichier.responseText
        On Error Resume Next
        'Kill ThisWorkbook.Path & "\response\*.*"
        'RmDir ThisWorkbook.Path & "\response"
        'MkDir ThisWorkbook.Path & "\response"
        On Error GoTo 0
     
        creationvbs2
        'CreationVBS1
     
        RequeteVBS = ThisWorkbook.Path & "\requeteallequities.vbs"
        SC = """" & RequeteVBS & """ "
        For i = 0 To NBPAGES
            ARGsending = i * 20 '=WScript.Arguments(1)
            Set Sh = CreateObject("WScript.Shell")
            Sh.Run SC & URL & " " & ARGsending
        Next
    End Sub
     
    Sub creationvbs2()
        Dim code As String, sending As String, Parser As String, FSys As Object, MonFic As Object
        Dim ARGTS_send As String
        code = code & vbCrLf & "Set DemandeFichier = CreateObject(""Microsoft.XMLHTTP"")"
        code = code & vbCrLf & "DemandeFichier.Open ""POST" & """, WScript.Arguments(0), False" & vbCrLf
     
        code = code & vbCrLf & "DemandeFichier.setRequestHeader ""Accept"", ""application/json, text/javascript, */*""" & vbCrLf & _
                  "DemandeFichier.setRequestHeader ""Host"", ""euronext.com""" & vbCrLf & _
                  "DemandeFichier.setRequestHeader ""Referer"", ""https://www.euronext.com/fr/equities-directory"""
     
       ARGTS_send = """sEcho=null&iColumns=7&sColumns=&iDisplayStart=""" & "& WScript.Arguments(1) & " & """&iDisplayLength=20&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=false&bSortable_2=false&bSortable_3=false&bSortable_4=false&bSortable_5=false&bSortable_6=false"""
      code = code & vbCrLf & "DemandeFichier.send " & ARGTS_send
      code = code & vbCrLf & "str_demande_fich = DemandeFichier.responseText"
      code = code & vbCrLf & "MsgBox(""iDisplayStart= "" & WScript.Arguments(1))" 'pour visualiser iDisplayStart oui monte de 20 en 20
      code = code & vbCrLf & "MsgBox(""DemandeFichier.responseText = "" & str_demande_fich)" 'pour visualiser le fichier html de réponse du
      'serveur => problème c'est toujours le même, soit la 1° page
     
        'Le with suivant est inutile
          With ThisWorkbook
            'On copie le code dans un fichier
            Set FSys = CreateObject("Scripting.FileSystemObject")
            Set MonFic = FSys.CreateTextFile(ThisWorkbook.Path & "\requeteallequities" & ".vbs")
            With MonFic    'Pour écrire dans le fichier texte
                .write code
            End With
        End With
    End Sub
     
    '///////////////////////////////////////////////////////////////////////////////////////////////////////////
    '                                                   CREATION DU VBS UNIQUE
    '///////////////////////////////////////////////////////////////////////////////////////////////////////////
     
     
    Sub CreationVBS1()
    'cette sub va écrire le texte des requêtes vbs (en fait toutes les requêtes sont écrites dans un seul fichier *.vbs
     
        Dim code As String, sending As String, Parser As String, FSys As Object, MonFic As Object
        Dim ARGTS_send As String, Enreg As String
     
        code = "dim tablo,tablo2(20,7)" & vbCrLf
        code = code & "do" & vbCrLf
        code = code & "b=b+1" 'en place du rupteur b qui quitte si b=10
        code = code & vbCrLf & "Set DemandeFichier = CreateObject(""Microsoft.XMLHTTP"")"
        code = code & vbCrLf & "DemandeFichier.Open ""POST" & """, WScript.Arguments(0), False" & vbCrLf
     
        code = code & vbCrLf & "DemandeFichier.setRequestHeader ""Accept"", ""application/json, text/javascript, */*""" & vbCrLf & _
                 "DemandeFichier.setRequestHeader ""Accept-Encoding"", ""gzip , deflate""" & vbCrLf & _
                 "DemandeFichier.setRequestHeader ""Content-Type"", ""application/x-www-form-urlencoded; charset=UTF-8""" & vbCrLf & _
                 "DemandeFichier.setRequestHeader ""Content-Length"", ""231""" & vbCrLf & _
                 "DemandeFichier.setRequestHeader ""Cache-Control"", ""no-cache""" & vbCrLf & _
                 "DemandeFichier.setRequestHeader ""Accept-Language"", ""fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3""" & vbCrLf & _
                 "DemandeFichier.setRequestHeader ""Connection"", ""keep-alive""" & vbCrLf & _
                 "DemandeFichier.setRequestHeader ""Host"", ""europeanequities.nyx.com""" & vbCrLf & _
                 "DemandeFichier.setRequestHeader ""Pragma"", ""no-cache""" & vbCrLf & _
                 "DemandeFichier.setRequestHeader ""Referer"", ""https://europeanequities.nyx.com/fr/equities-directory""" & vbCrLf & _
                 "DemandeFichier.setRequestHeader ""User-Agent"", ""Mozilla/5.0 (Windows NT 6.0; rv:29.0) Gecko/20100101 Firefox/29.0""" & vbCrLf
     
        ARGTS_send = """sEcho=5&iColumns=7&sColumns=&iDisplayStart=""" & "& WScript.Arguments(1) & " & """&iDisplayLength=20&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=false&bSortable_2=false&bSortable_3=false&bSortable_4=false&bSortable_5=false&bSortable_6=false"""
     
        code = code & vbCrLf & "DemandeFichier.send " & ARGTS_send
     
        'ici ajout de if status = 200 pour être sûr que le script revient bien
       code = code & vbCrLf & "If DemandeFichier.status <>200 then MsgBox(""Pas de retour de connexion""):z =100 : MsgBox(""Quit n° "" & z):WScript.Quit 100"
       code = code & vbCrLf & "str_demande_fich = DemandeFichier.responseText"
     
       'test pour le dernier response vide
        'si la réponse à cette forme il s'agit du fichier de queue qui est vide...donc inutile de le garder oui mais
        'seulement dans ce cas il y a la perte du timer car dans Feuil1 il faut If comptechangement = NBPAGES + 1 Then
       code = code & vbCrLf & "if str_demande_fich= ""{""""sEcho"""":""""5"""",""""iTotalRecords"""":0,""""iTotalDisplayRecords"""":0,""""aaData"""":[],""""error"""":false}"" then "
        code = code & vbCrLf & "GetObject(, ""Excel.Application"").Workbooks(""" & ThisWorkbook.Name & """).Worksheets(1).Range(""B"" & WScript.Arguments(2)) = """""
        'ici mise en retour d'un GetObject pour déclencher le compteur et donc le Timer, seulement cela va déclencher plage qui va déclencher cadre
        'donc affichage d'une cellule violette vide...mais pour éviter cela inscription en colonne B (=colonne 2) et mise en
        'code Feuil1 if Target.Column <>2 pour déclencehr le plage comme cela il n'y a plus de fond violet intempestif
        code = code & vbCrLf & "Ag= true"
        code = code & vbCrLf & "End If"
     
       'par précaution mettre un rupteur pour b par exemple 10
         code = code & vbCrLf & "If b>9 then"
     
         'si erreur elle est signalée par un rapport d'erreur en colonne i
         code = code & vbCrLf & "GetObject(, ""Excel.Application"").Workbooks(""" & ThisWorkbook.Name & """).Worksheets(1).Range(""I""&(WScript.Arguments(1)/20)+6 ).Value=""page ""  & (WScript.Arguments(1)/20)+1 &"" = "" & b & ""  essai"""
         code = code & vbCrLf & "GetObject(, ""Excel.Application"").Workbooks(""" & ThisWorkbook.Name & """).Worksheets(1).Range(""A"" & WScript.Arguments(2)).Value = WScript.Arguments(1)/20"
         'pour afficher le n° du script défectueux dans la cellule en colonne A
         'Par contre lors de la sortie par WScript.Quit le théme du fond d'écran n'est pas perdu puisqu'il y a bien GetObject qui va déclencher le plage dans la Feuil1
         code = code & vbCrLf & "WScript.Quit 1" 'WScript.Quit 1 marche mais 1 n'apaprait pas
         code = code & vbCrLf & "Exit Do" 'le WScript.Quit étant actif exit do ne sert plus à rien
         code = code & vbCrLf & "End If"
     
         'ici vérification avec la condition sur code
         code = code & vbCrLf & "Eg = instr(str_demande_fich, """"""error"""":true"")>0" '=> ""error"":true
         'code = code & vbCrLf & "Eg = instr(str_demande_fich, ""error"""":true}"")>0" '=> error"":true} version Pat
         code = code & vbCrLf & "Loop While instr(str_demande_fich, """"""error"""":true"")>0"
      'ici les syntaxes pour echo:true différent mais cela dit elle ne sont pas contradictoire il va falloir vérifier si elles
      'sont justes en regardant si dans les cellules du tableau de rapport il y a eu parfois des relances => valeur de b <> 1  'dans le tableau mais pas possible pour le moment car plus d'erreur de relance de retours des scripts!!!
     
         'ici ce message ne s'affiche plus si b=10 le Wscript.Quit a fait quitter le script=>
         code = code & vbCrLf & "If b=10 then MsgBox(""Script non quitté WScript.Quit 1 défectueux car pourtant instr= "" & Eg)"
     
            code = code & vbCrLf & "resultat = Replace(DemandeFichier.responseText, ""["", vbCrLf)" & vbCrLf & _
                 "tablo = Split(resultat, vbCrLf)" & vbCrLf & "Z = 0" & vbCrLf & _
                 "For i = 2 To UBound(tablo)" & vbCrLf & _
                 "tablo2(Z, 0) = Split(Split(tablo(i), ""\u003e"")(1), ""\"")(0)" & vbCrLf & _
                 "reponse = reponse & tablo2(Z, 0)" & vbCrLf & _
                 "tablo(i) = Split(Split(tablo(i), ""/div\u003e"""","""""")(1), ""]"")(0)" & vbCrLf & _
                 "tablo2(Z, 1) = Split(tablo(i), """""","""""")(0)" & vbCrLf & _
                 "reponse = reponse & chr(9) & tablo2(Z, 1)" & vbCrLf & _
                 "tablo2(Z, 2) = Split(tablo(i), """""","""""")(1)" & vbCrLf & _
                 "reponse = reponse & chr(9) & tablo2(Z, 2)" & vbCrLf & _
                 "tablo2(Z, 3) = Split(tablo(i), """""","""""")(2)" & vbCrLf & _
                 "reponse = reponse & chr(9) & tablo2(Z, 3)" & vbCrLf & _
                 "tablo2(Z, 4) = Replace(Split(tablo(i), """""","""""")(3),"","",""."")" & vbCrLf & _
                 "reponse = reponse & chr(9) & tablo2(Z, 4)" & vbCrLf & _
                 "tablo2(Z, 6) = Replace(Split(tablo(i), """""","""""")(5), Chr(34),"""")" & vbCrLf & _
                 "reponse = reponse & chr(9) & tablo2(Z, 6)" & vbCrLf & _
                 "On Error Resume Next" & vbCrLf & _
                 "tablo2(Z, 5) = Split(Split(tablo(i), ""\u003e"")(1), ""\"")(0)" & vbCrLf & _
                 "reponse = reponse & chr(9) & tablo2(Z, 5) & vbcrlf" & vbCrLf & _
                 "Err.Clear" & vbCrLf & _
                 "Z = Z + 1" & vbCrLf & _
                 "Next"
     
         code = code & vbCrLf & "reponse = reponse & vbcrlf & str_demande_fich" 'ici reponse à toutes les datas de tablo2
         '+ demandefichier.responsetext
     
         code = code & vbCrLf & "GetObject(, ""Excel.Application"").Workbooks(""" & ThisWorkbook.Name & """).Worksheets(1).Range(""I""&(WScript.Arguments(1)/20)+6 ).Value=""page ""  & (WScript.Arguments(1)/20)+1 &"" = "" & b & ""  essai"""
        'pour l'affichage du tableau de rapport du nombre de relance
        'ici introduction de la condition Ag=False (pour ne pas afficher si il existe le fichier de queue des data
        code = code & vbCrLf & "If Ag = False Then"
        code = code & vbCrLf & "GetObject(, ""Excel.Application"").Workbooks(""" & ThisWorkbook.Name & """).Worksheets(1).Range(""A"" & WScript.Arguments(2)).Resize(UBound(tablo2), 7) = tablo2"
        'pour l'affichage des datas suite au retour des scripts
        code = code & vbCrLf & "End If"
     
         'pour enregistrer sous fichier response au format texte le retour des datas
          Enreg = "Set FSys = CreateObject(""Scripting.FileSystemObject"")"
         Enreg = Enreg & vbCrLf & "Set MonFic = FSys.CreateTextFile("".\response"" & WScript.Arguments(1)/20 & "".txt"")"
         Enreg = Enreg & vbCrLf & "With MonFic" & vbCrLf & ".write reponse" & vbCrLf & "End With"
     
        code = code & vbCrLf & Enreg
     
          With ThisWorkbook
            'On copie le code dans un fichier
            Set FSys = CreateObject("Scripting.FileSystemObject")
            Set MonFic = FSys.CreateTextFile(.Path & "\requeteallequities" & ".vbs")
            With MonFic    'Pour écrire dans le fichier texte
                .write code
            End With
        End With
    End Sub


    ++
    Qwaz
    Images attachées Images attachées  

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    Bonjour,

    Désolé du retard..je regarde tout ça sous peu et te dis...mais si je comprends bien on ne peut plus charger directement toutes les pages par requêtes successives comme avant mais juste une par une?

  7. #7
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    Bonjour,

    Aujourd’hui Euronext a encore mis à jour son site...donc je vais regarder pour voir ce qu’il se passe...


  8. #8
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut Re
    Bonjour Qwaz,

    En fait le code html de la page web de présentation tout comme l’onglet reponse de la requête du 1° fichier ne contient pas les informations souhaitées…c’est un autre fichier qui les contient…seulement la question est de savoir comment aller les récupérer dans cet autre fichier plus bas dans le listing…
    Je refais le code juste pour récupérer pour une valeur tout simplement mais ca ne marche plus non plus car le fichier est par exemple le 20° !!!et je ne sais pas comment aller récupérer les infos du 20° fichier dans son onglet reponse même en envoyant le requête avec l’URL au serveur…je revérifie le code et le poste…sous peu

  9. #9
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Bonjour, Avez-vous essayé d'enregistrer une macro exploitant le ruban "Data/GetDataFromWeb" ? Il y a moyen d'y récupérer le code généré pour ensuite l'adapter en fonction des besoins.

  10. #10
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    Bonjour,

    Merci de votre aide, non et je ne connais pas Data/GetDataFromWeb…

    Pour donner une idée du problème rencontré : prenons l’exemple Econocom…

    L’objectif est de télécharger son cours tout simplement à un instant t et aussi sa variation et son volume…

    Euronext a mis a jour son site web et depuis c’est devenu très dur…

    Voici des explications hors code juste pour montrer ce qui bloque :
    La page générale d’accueil pour la cotation des diverses valeurs et devenue :
    https://live.euronext.com/en/products/equities/list
    Attention ici l’url a un s à products !!!
    Nom : euronext_page_accueil.jpg
Affichages : 341
Taille : 30,5 Ko

    Une fois sur cette page d’accueil il va falloir s’orienter en fonction de son choix en entrant l’isin BE0974313455 ou le nom de la valeur ECONOCOM.
    (Remarque la page d’accueil peut en fait être shunter pour arriver directement sur la 2° page)

    Cela va déclencher une 2° page web qui est celle contenant les informations désirées…(attention ici product n'a plus de s à la fin)
    https://live.euronext.com/en/product...974313455-XBRU

    C’est ici que les problèmes commencent pour plusieurs raisons :
    Bien que cette page affiche toutes les informations souhaitées (cours, variation, volume…) à l’écran ces informations ne sont pas disponibles dans le code de la page web !!!
    Pour le cours : il se trouve dans le header-instrument-price
    Nom : econocom_code_html.jpg
Affichages : 379
Taille : 48,0 Ko

    Seulement problème pas moyen de trouver header-instrument-price dans le code source html de la page web !!!
    Idem par exemple € ou volume n’existent pas dans le code source de la page web…alors que tout est bien visible à l’écran !!!
    Il y a par contre un formulaire qui doit interroger le serveur pour extraire les bonnes informations avec une ligne de code du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <form class="quote-search form-inline  d-lg-flex" data-drupal-selector="awl-tophat-header-search-box-form-3" action="/en/product/equities/BE0974313455-XBRU" method="post" id="awl-tophat-header-search-box-form--3" accept-charset="UTF-8">
      <div class="quote-search-toggle"></div><div class="header__form form-inline d-lg-flex">
    En fait en étudiant avec F12 pour établir une requête le 1° fichier va être comme une sorte de cadre général qui est ensuite composé d’une multitude de sous cadres qui contiennent bien touutes les informations voulues mais pour aller les chercher c’est ca le problème !!!

    La cadre général est le fichier qui revient en lancant la requête
    https://live.euronext.com/en/product...974313455-XBRU

    le 1° fichier affiché il s’appelle BE0974313455-XBRU…
    Nom : econocom_requete1.jpg
Affichages : 376
Taille : 47,6 Ko
    sous document il est appelé source mais il ne contient pas dans son onglet Réponse les informations voulues car en fait il ne les a pas…
    Voici son aperçu dans l’onglet réponse : ET LA SURPRISE IL N’Y A PAS LE CADRE WEB (header-instrument-price) CONTENANT LE COURS
    Nom : econocom_requete1_reponse.jpg
Affichages : 357
Taille : 48,0 Ko


    il faut attendre le fichier denouveau appelé BE0974313455-XBRU mais qui cette fois sous document est appelé source XHR… URL de la requête :https://live.euronext.com/en/ajax/ge...974313455-XBRU
    Nom : econocom_fichier_data_ok.jpg
Affichages : 363
Taille : 46,5 Ko
    et qui ne se charge qu’après le fichier https://live.euronext.com/modules/cu...mages/load.gif
    Nom : econocom_loadgif.jpg
Affichages : 351
Taille : 48,6 Ko

    En espérant avoir été clair au moins sur ce qui bloque...
    Merci de votre aide à tous...

  11. #11
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    Bonjour,


    PS: pour le moment désolé pas encore regardé Data/GetDataFromWeb mais ca viendra...

    Ca avance, ca avance...juste des petites questions pour pouvoir tout remettre en marche correctement.

    Qwaz découvert qu'il est possible d'envoyer les requêtes directement sur les sous cadres..car ils possédent leur propre URL, ici mis des explications complémentaires...et pour la date j'ai repris ce que tu faisais ou même cherché pour la faire coincider mais pour le moment la fin ne colle pas...

    Voici l’adresse URL générale qui permet de faire cette 1° partie d’étude :
    https://www.boursedeparis.fr/fr/prod...42-ALXP/quotes

    puis le fichier quote? posséde les informations suivantes :
    URL de la requête :https://www.boursedeparis.fr/fr/nyx_...02342&mic=ALXP

    En fait la page web d’accueil à l’URL https://www.boursedeparis.fr/fr/prod...42-ALXP/quotes se compose de cadres où se trouvent les informations voulues. Ces cadres qui sont eux même lié à des URL permettent de lancer des requêtes directement dessus pour récupérer les informations voulues...
    Par exemple en cherchant dans tous les fichiers de la requête principale donc liés à l’URL https://www.boursedeparis.fr/fr/prod...42-ALXP/quotes
    Il va y avoir le fichier quote?=… qui contient les informations voulues à l’URL :
    https://www.boursedeparis.fr/fr/nyx_...02342&mic=ALXP

    NB : la requête fonctionne même si le chiffre =1 ou même si carrément il n’y a pas de chiffre !!!
    https://www.boursedeparis.fr/fr/nyx_...02342&mic=ALXP


    1° question pour lancer une requête faut il toujours la lancer sur une URL ? et si oui du type www.htpp ou www.htpps ?

    2° question dans cette URL il y a un chiffre à 13 nombres qui semblent représenter la date + heure
    Si vous pouvez m’aider à le reconstruire ca m’interesse : par exemple aujourd’hui le
    31/07/19 cette date en format long est : 1564531200
    Ou même à 07:15:54 cette date en format long est 1564557354
    Cependant pour l’URL celle-ci va avoir comme date + heure 1564550173682…comment est elle calculée svp ?

  12. #12
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Hum j'avoue que ça fait beaucoup de chose.... je suis un peu dans le flou
    Désolé si j'enfonce des portes ouvertes du fait d'avoir un peu lu les messages en diagonale

    Pour l'histoire des "cadres" en regardant vite fait
    <div id="awl-detailed-quote-container"></div>
    Semble en effet être un container placé dans le code pour ensuite recevoir d'autres données
    Pour ce qui est de la mise à jour des données, le site se rafraichi toutes les 30 secondes.
    Il produit 2 POST et 2 GET.
    Les informations que tu recherches se trouvent dans le second POST.
    Ces informations sont données en temps réel, il ne me semble donc pas possible de fournir une date au sein de la requête. La requête (toujours la même, à moins que je n'ai manqué quelques choses) est transmise au serveur toutes les 30 seconde et le serveur retourne les valeurs courantes actuelles.
    Si ce sont uniquement ces valeurs que tu veux, il faudrait tenter de créer la requête en VBA et voir si le serveur te retourne les informations actuelles.

    Tu recherches l'historique des valeurs?

    En regardant d'autres valeurs, la différenciation semble être faite via la dernière partie du lien
    BE0389856130-XBRU pour BEL MID INDEX
    BE0974313455-XBRU pour ECONOCOM GROUP


    Pour tes deux dernières questions:
    1°: Il faut que je reprenne tes postes pour comprendre pourquoi tu veux cette information à laquelle apriori je n'ai pas de réponse.
    2°: Il semble y avoir 3 caractères de plus, ça correspondrait pas aux millisecondes ?

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  13. #13
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    Bonjour,

    Oh oui ca fait beaucoup en peu de temps
    Encore désolé de te solliciter autant.

    Pour la 2° question le chiffre je regarde s'il s'agit des millisecondes (mais tu les ajoutes comment les millisecondes?)...mais la requête fonctionne sans ce chiffre ou simplement en mettant un chiffre simple...donc ca colmate déjà une partie du problème. Cela dit par sécurité il vaut mieux avoir la bonne requête.

    Pour la 1° question je suis embêté car parfois la pop up de téléchargement des données a une adresse URL parfois non suivant où se trouve l'adresse URL du lien qui est cliqué pour l'ouvrir...
    Voici les 2 liens et le fichier retour de la pop up n'a pas du coup tout à fait les mêmes données (et comme par hasard c'est celui sans URL qu'il me faut!!!)
    https://www.boursedeparis.fr/cours/actions-paris
    puis clic sur le bouton téléchargement et la pop up avec son URL s’ouvre :
    https://www.boursedeparis.fr/popup/d...e320314cf0bc49
    alors qu’avec l’URL :
    https://live.euronext.com/en/products/equities/list
    puis clic sur le bouton téléchargement et la pop up s’ouvre sans son URL et donc du coup je ne sais pas comment lui envoyer une requête, donc en attendant au pire il va me rester le pilotage avec IE


    Pour l'historique je refais une analyse...mais oui absolument je recherche aussi l'historique des valeurs...

    Ca plaisir au moral d'avoir de l'aide parce que ce n'est pas si facile que cela je trouve...

    A bientôt

  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
    re
    bonjour itwoo
    je viens de regarder Euronext et effectivement tout a changé le code initial que tu a présenté en post 1 n'est donc plus d'actualité

    il faut donc tout reprendre a zero
    il ne travaille plus en json mais avec des xml
    pour le nombre de pages "itotalrecord" n'existe plus dans le code
    tu a cette donnée dans l'element ID "stocks-data-table_info" dans le 2d strong
    Nom : Capture.JPG
Affichages : 337
Taille : 142,2 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

  15. #15
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    Bonjour Pat,

    Oui tout a totalement changé...je m’y mets pour faire de l’ordre et tout reprendre...et bien essayer de structurer les questions posées...
    En plus il y a des différences entre les 2 URL live.euronext et boursedeparis...

    Merci de ton aide...

    Je bloque sur l’URL de la pop up pour live.euronext alors que pour boursedeparis aucun problème elle existe bien...mais pour boursedeparis il manque des données...donc je préférerais utiliser live.euronext

    Ensuite pour boursedeparis (pas encore testé pour live.euronext) j’arrive à récuperer tous les cours un par un avec les requêtes en temps réel et cela alors que pourtant il manque le chiffre inclus dans la requête (Qwaz m’indique qu’il s’agit surement des millisecondes...je n’ai pas encore régardé comment faire les millisecondes)
    https://www.boursedeparis.fr/fr/nyx_...02342&mic=ALXP
    NB : la requête fonctionne même si le chiffre =1 ou même si carrément il n’y a pas de chiffre !!!
    https://www.boursedeparis.fr/fr/nyx_...02342&mic=ALXP
    en fait tu sélectionnes une valeur et lorsque tu cliques dessus ce chiffre apparait dans les paramètres de la requête sous le fichier quote ?...

    il faut aussi que je refasse l’historique des valeurs...

    et ensuite il y a aussi la sélection page par page comme tu l’indiques à étudier...
    Bref il y a du taf en perspective...

    Le plus urgent va être l’historique car moyen de contourner la pop up et moyen de récupérer même sans le chiffre les cours...

    Voili voilou 

  16. #16
    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
    je m'avance peut etre je n'ai pas testé toutes mes astuces mais je crois que par requete ca n'est plus possible hors Windows IE
    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

  17. #17
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    Bonjour,

    Perso je ne sais pas du tout et j’essaie de comprendre mieux les requêtes car tout n’est pas bien compris de ma part...

    Tout d’abord pour clarifier les choses au maximum tout ce que vous avez fait en adaptant un peu les chemins de requêtes ou autre marche encore nickel sous l’adresse https://www.boursedeparis.fr... qui semble une étape hybride entre l’ancien site et le nouveau site https://live.euronext.com...
    Par contre j’ai peur qu’un jour il ne reste que le nouveau site...donc je cherche à travailler sur le nouveau site...

    Pour la requête elle représente un chemin d’accés URL que l’on peut mettre tout simplement dans un navigateur web, mais ce que je ne comprends pas bien c’est si cette URL se créé temporairement sur le serveur suite à une requête ou un chemin d’accès introduit dans le navigateur web (la pop up n’a pas besoin d’avoir une URL propre et l’on peut quand même envoyer une requête au serveur) ou si son chemin existe de manière permanente et unique (c'est-à-dire que la requête où l’Url web ne peuvent marcher que si la pop up a une URL propre).

    Mais dans tous les cas est ce qu'une requête serait quand même lancable même sans pop up ayant une URL propre à condition de savoir demander au serveur le bon chemin d’accès avec les bons paramètres pour obtenir la bonne réponse du serveur...
    L’objectif étant de contourner la pop up à problème sans url propre pour demander au serveur les infos directement

    Est-ce que cela semble compréhensif ?

  18. #18
    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
    bonjour itwoo

    l'url des JSON est fixe :
    https://www.boursedeparis.fr/pd/stoc...e320314cf0bc49

    l'argument du send il y a que le start qui change et le sEcho

    page1
    "sEcho=1&iColumns=7&sColumns=&iDisplayStart0&iDisplayLength=20&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=false&bSortable_2=false&bSortable_3=false&bSortable_4=false&bSortable_5=false&bSortable_6=false"
    page2
    "sEcho=2&iColumns=7&sColumns=&iDisplayStart20&iDisplayLength=20&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=false&bSortable_2=false&bSortable_3=false&bSortable_4=false&bSortable_5=false&bSortable_6=false"
    page3
    "sEcho=3&iColumns=7&sColumns=&iDisplayStart40&iDisplayLength=20&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=false&bSortable_2=false&bSortable_3=false&bSortable_4=false&bSortable_5=false&bSortable_6=false"
    si l'argument start du send est trop grand le Json donne une seule ligne:
    {"sEcho":"4","iTotalRecords":0,"iTotalDisplayRecords":0,"aaData":[],"error":false}
    pour ca c'est bon
    maintenant on a un autre problème
    visiblement le site bloque ou sature quand les requêtes sont trop rapides
    je viens de tester des fois ca bloque a 4 ou a 9 ou a 11 bref c'est varié
    il faut donc faire une pose entre chaque requetes (pour la rapidité c'est ballo!!)


    voila donc un code base je te laisse intégrer une pause avec les moyen que tu veux sleep ,do/loop sur timer , etc....

    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
     
    Sub test()
        Dim I&, A&, Nb$, codeJson$
        For I = 0 To 1000 Step 20
            A = A + 1
            codeJson = GetJson(I,A)
            Nb = Split(Split(codeJson, """iTotalRecords"":")(1), ",")(0)
            If Val(Nb) > 0 Then
                'MsgBox "page" & A
                'Debug.Print code
                '...
                'reste de ton code d'examen du json
                '......
            Else: MsgBox "terminé":exit for
            End If
        Next
    End Sub
    Function GetJson(start, n)
        With CreateObject("microsoft.xmlhttp")
            .Open "POST", "https://www.boursedeparis.fr/pd/stocks/data?formKey=nyx_pd_filter_values:eca59d7bcdd17c0bcee320314cf0bc49", False
            .SetRequestHeader "Referer", "https://www.boursedeparis.fr/cours/actions-paris"
            .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
            .SetRequestHeader "X-Requested-With", "XMLHttpRequest"
            .SetRequestHeader "Accept", "application/json, text/javascript, */*"
            .SetRequestHeader "Accept-Language", "fr-FR"
            .SetRequestHeader "Accept-Encoding", "gzip, deflate"
            .SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
            .SetRequestHeader "Host", "www.boursedeparis.fr"
            .SetRequestHeader "Connection", "Keep - Alive"
            .SetRequestHeader "Cache-Control", "no-cache"
            .send "sEcho=" & n & "&iColumns=7&sColumns=&iDisplayStart=" & start & "&iDisplayLength=20&iSortingCols=1&iSortCol_0=0&sSortDir_0=asc&bSortable_0=true&bSortable_1=false&bSortable_2=false&bSortable_3=false&bSortable_4=false&bSortable_5=false&bSortable_6=false"
            GetJson = .responsetext
        End With
    End Function
    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

  19. #19
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    Bonjour Pat,

    Oui oui merci tu es toujours aussi réactif

    Tout comme autre fois il y a des pertes mais en mettant soit une temporisation soit un vérificateur il y a moyen de s'en sortir (et avant aussi il y avait des pertes avec relance nécessaire mais dans l'ensemble résultat satisfaisant)...l'adresse boursedeparis permet de tout faire fonctionner, tout ce qui a été vu avant avec quelques modifications tourne nickel...
    NB : pour boursedeparis je n’ai pas réussi pour le moment à trouver le chiffres à 13 nombres (voir post précédent) utilisé indiquant surement le jour +la date+heure en format long +millisecondes (faut que je cherche sur le net les millisecondes), cela fonctionne sans lui mais si tu sais comment le reconstituer je suis preneur

    Par contre c'est la nouvelle adresse live.euronext.com... qui m'inquiète.

    Je travaille dessus (je manque un peu de temps mais ca avance tout doucement) mais comme dit plus haut j'ai déjà un problème sur la pop up...elle n'a pas d'URL propre. Il me faut un peu de temps pour examiner le code plus en détail et comprendre la différence entre boursedeparis et live.euronext pour cette pop up...elle ne retourne pas tout à fait les mêmes résultats, celle de live.euronext plus complète...et comme par hasard c'est celle dont j'ai besoin!!!
    Pour boursedeparis tu peux lancer la requête sur la pop up directement sur son URL propre alors que live.euronext je n'ai pas encore trouvé comment faire...il faut surement lancer directement sur le serveur...
    Il faut aussi que je regarde pour tout le reste (historique, téléchargement des pages =ton post précédent) comment passer de boursedeparis à live.euronext par exemple...
    La bonne nouvelle c'est que boursedeparis fonctionnant à peu près bien ca permet de patienter puis de regarder et d'avoir un bon exemple pour live.euronext...

  20. #20
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut re
    Bonjour,

    Pat Bravo, ton post#18 il est en fait trés fort, il reprend l'idée de Qwaz du post#2 de tester d'abord en VBA avant de passer en VBS...

    Et bien en VBA cela marche nickel et en VBS cela marche aussi...

    Test en cours pour voir si c’est sEcho ou iDisplayStart ou les 2 ensemble qui dirigent la page retournée par le serveur.

    Mais pour résumer pour Boursedeparis tout marche, les vbs marchent aussi nickel pour les autres requêtes sur boursedeparis...(même celle où il manque la date+heure+millisecondes à 13 chiffres) mais ça je vais chercher à trouver ce 13 chiffres...

    @+

Discussions similaires

  1. Pilotage Internet Explorer
    Par itwoo dans le forum Macros et VBA Excel
    Réponses: 333
    Dernier message: 13/11/2015, 10h55
  2. [XL-2010] Pilotage Internet explorer contenant javascript depuis excel
    Par anthony14123 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/12/2013, 15h08
  3. [XL-2003] Pilotage Internet Explorer
    Par clarinet dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 25/03/2013, 19h13
  4. Pilotage Internet Explorer
    Par bolof dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/09/2012, 21h25
  5. [OLE] Pilotage internet explorer
    Par yaclo dans le forum MFC
    Réponses: 4
    Dernier message: 22/03/2005, 20h03

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