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 :

Pilotage Internet Explorer


Sujet :

Macros et VBA Excel

  1. #101
    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

    Oui, j'ai bien vu la boucle, mais je ne comprend pas sont utilité au vu des essais que j'ai pu faire.
    De plus je ne sais pas trop les fréquences d'échantillonnages mais si 51 échantillons sont pris le même jour, tu obtiens un boucle infinie .
    C'est pour ça que je proposer de regarder les readystate du tableau ou du tbody qu'il contient, moi je ne peux pas tester vu que la boucle que je donne dans mon message fonctionne, le code attend le chargement du contenu de la page avant de passer à la ligne suivante chez moi, il ne me semble donc pas utile de tester si le contenu a changé ou pas et par la force des choses je ne peux pas tester la propriété ReadyState des éléments puisque la page est finie de charger... et donc forcement les readystates sont à complet...

    ++
    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

  2. #102
    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 votre avis sur l'identification de l'erreur
    Bonjour,


    Désolé pour le retard, et pour le moment pas lu vos nouveaux commentaires...
    Actuellement test sur la version 1 avec récupération des data à partir du code de la page web ...comme dit précédemment par Patrick avec lecture du code sur la page web il n'est pas possible de tombre à côté, c'est vrai suis d'accord à 100% donc ce n'est pas le code ni euronext qui a une erreur mais notre démarche à savoir:

    la 1° boucle est ok:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do
            e = e + 1
            If e = divelements.Length Then e = 1
            Loop Until divelements(e).className = "dataTables_scroll" And InStr(divelements(e).outerHTML, "Turnover") > 0
    par contre la 2° boucle n'est pas ok:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do: Loop While InStr(divelements(b).outerHTML, "Loading") > 0
    'cette boucle n'est pas suffisante en effet:
    Donc VBA va s’arrêter ici tant que la 1° ligne du tableau la thead avec Date, open…Turnover n’est pas chargée
    Puis ensuite la 2° boucle va arrêter VBA tant que dans le tbody du tableau il y aura l’icône loading…
    Oui mais ici ce n’est pas suffisant comme filtrage car s’il y a plusieurs pages à charger par ex ici 9 pages du 02/01/2012 au 15/09/2013 sous le navigateur IE la 1°page qui s’affiche sera celle débutant du 13/09/2013 au 08/07/2013 mais par contre dans le codage page web la 1° info récupérée par VBA lorsque loading disparait c’est la dernière page a savoir du 20/02/2012 au 02/01/2012 donc c’est dasn ce laps de temps que l’erreur peut se produire ici il faut créer un filtre différent par ex style do while not date téléchargée – date demandée < 5 jours…

    Voici une preuve de cela avec une idée de correction:
    pour la 1° boucle modification:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    z10: 
        a = 0 'pour réinitialiser a si jamais relance
        Set Bouton = IEDoc.getElementById("refreshHistoricalPC")
        Bouton.Click
    et pour la 2° boucle avec dim date_chargee as date
    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
    b=e
    Do: Loop While InStr(divelements(b).outerHTML, "Loading") > 0
    Set Generic = divelements(b) 
    chaine = divelements(b).outerHTML
    If aig = False Then 'au 1° passage pour vérifier si date est la bonne
        Do
        chaine = divelements(b).outerHTML
        string_date = Split(chaine, "<td class=""rt sorting_1"">")(1)
        string_date = Split(string_date, "</td>")(0)
        date_chargee = string_date
        If db2 - date_chargee > 5 Then
        GoTo z10 'pour relancer le processus
        End If
        Loop While (db2 - date_chargee > 5) 'boucle tant que plus de 5 jours d'écarts
        aig = True
        End If
    etes vous d'accord sur cela?
    A bientôt

  3. #103
    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 blocage euronext
    Bonjour,

    il se peut qu'euronext bloque ca me le fait aussi, mais il me semble en fait que c'est mon ordi qui bloque en effet VBA bloque IE en disant que le site devient inaccessible...
    il faut tout fermer et relancer...ca doit se débloquer ok?

  4. #104
    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 itoow

    Peux tu donner le fichier sur lequel tu fais tes essais, histoire qu'on ait le même code pour les essais.

    ++
    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

  5. #105
    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 visualiser l'erreur
    Pour info:

    L’erreur peut se voir à l’œil car après le click sur le bouton refresh :
    Set Bouton = IEDoc.getElementById("refreshHistoricalPC")
    Bouton.Click
    'Attention le click sur le bouton refresh ne marche pas à 100% (lorsqq'il ne marche pas comme il faut
    'cela peut se détecter visuellement car sur la page web à l'écran il ne s'affiche pas dasn le tableau des
    'dates, la date téléchargée demandée (13/09/2013 ici) la plus récente mais une autre date ou même rien

  6. #106
    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 code
    Bonjour,

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    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
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim Generic As HTMLGenericElement
    'Dim Generic_TBody As IHTMLElementCollection
    Dim Generic_TBody As HTMLTableSection
    Dim LienViewData As HTMLAnchorElement
    Dim InputDateTexte As HTMLInputElement
    Dim Bouton As HTMLButtonElement
    Dim FormatChargement As IHTMLInputElement
     
    Dim ag As Boolean, bg As Boolean, cg As Boolean
    Dim da1 As Date, db1 As Date, db2 As Date, date_chargee As Date
    Dim nbreanchor As Integer, intrep As Integer
    Dim b As Integer, f As Integer, h As Integer, i As Integer, j As Integer, r As Integer
    Dim chaine As String, entete As String, ligne1 As String, lignetest As String, fl_shc As String
    Dim mot As String, reper As String, string_date As String
    Dim u() As String, eu() As String
    Dim differ() As Variant
     
    Global k As Integer
    Global separateur() As Variant
    Global supprim() As Variant
    Global lign_supprim() As Variant
     
     
    Public Sub WaitIE(IE As InternetExplorer)
    'On boucle tant que la page n'est pas totalement chargée
        Do Until IE.Busy = False And IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
    End Sub
     
    Sub wait_Secondes(SEC)
        SEC = Format(SEC, "00")
        Application.Wait (Now + TimeValue("0:00:" & SEC))
    End Sub
     
    'vider les temporaires
    Sub Clear_Temp_Files()
    Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8 "
    Shell "RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1"
    End Sub
    Sub euronextpage1()
     
     
     
      Dim nombre, nbre, ligne
            Columns("A:J") = ""
        [A1].Select
        Dim mydata, fich, pag
        'cette sub pour récupérer les données historiques
        'ici l'exemple traité par défaut est AIR LIQUIDE (FR0000120073)
        IE.Navigate "https://europeanequities.nyx.com/en/products/equities/FR0000120073-XPAR/quotes"
        IE.Visible = True
        WaitIE IE
        Set IEDoc = IE.document
     
        Set LienViewData = IEDoc.all("tablesNavigation_hi")    'pour aller directement au tableau historique
        LienViewData.Click    'On exécute le lien
        db1 = "02/01/2012"
        Set InputDateTexte = IEDoc.all("historicalDatePicker1")    'ici avec id pointe directement sur le bon input!!!
        InputDateTexte.Value = db1    'On inscrit le texte dans l'input soit la date de début
        db2 = "15/09/2013"
        Set InputDateTexte = IEDoc.all("historicalDatePicker2")    'ici avec id pointe directement sur le bon input!!!
        InputDateTexte.Value = db2    'On inscrit le texte dans l'input soit la date de fin
        'il faut ensuite cliquer sur le bouton dont id="refreshHistoricalPC" type="button" value="Refresh
     
    z10: 'on boucle ici pour relancer
        a = 0 'pour réinitialiser a si jamais relance
        Set Bouton = IEDoc.getElementById("refreshHistoricalPC")
        Bouton.Click
        'Attention le click sur le bouton refresh ne marche pas à 100% (lorsuq'il ne marche pas comme il faut
        'cela peut se détecter visuelleemnt car sur la page web à l'écran il ne s'affiche pas dasn le tableau des
        'dates, la date téléchargée demandée (13/09/2013 ici) la plus récente mais une autre date ou même rien
        'même si l'on n'a pas besoin d'attendre l'affichage de la page pour récupérer les datas si jamais il y a un probléme
        'c'est un moyen visuel de le détecter
     
        'le Tableau et plein de chose utile pour la suite sont dans les div
        Set divelements = IEDoc.getElementsByTagName("div")
        'on boucle jusqu'a que la bonne classe apparaisse dans les divelements
        ' et comme il y en a plusieur de la meme classe on recupere que celui qui a le (turnover) dans son code
     
         '**************************************************************************************************************************
        'ICI ON VA RECUPERER LE NOMBRE DE PAGE A VISTER EN DIVISANT LE NOMBRE DE JOUR QUE L'ON RECUPERE EN DESSOUS DU TABLEAU
        'EXEMPLE : Total Number of Days: 886
     
     
        Do
            Set nbligne = IEDoc.all("historicalTable_info")
     
            nombre = Fix(Split(nbligne.innerText, ":")(1) / 50) + 1
        Loop While nombre < 2 'attention ici suppose plus de 50 cotations il faut surveiller cela
     
     
        '***************************************************************************************************************************
         Do
            e = e + 1
            If e = divelements.Length Then e = 1
            Loop Until divelements(e).className = "dataTables_scroll" And InStr(divelements(e).outerHTML, "Turnover") > 0
        'on boucle tant que loading est present dans le outerhtml de l'element
     
        b = e 'b= n° e recherché
        'j = 0 'j est le compteur des lignes de data TR
        'ReDim u(3000) 'pour dimensionner u() pour récupérer les TR de data pas plus de 3000 lignes (52*5*10 ans)
     
         Do
       a = a + 1
        'a c'est le compteur pour charger toutes les pages une par une...
     
     
        Do: Loop While InStr(divelements(b).outerHTML, "Loading") > 0 'cette boucle n'est pas suffisante
        Set Generic = divelements(b) 'generic va permettre d'analyser l'élement e=584
        'il va aussi permettre de récupérer toutes les datas sous format texte
        'MsgBox ("Voici divelements(584).outerHTML =" & divelements(584).outerHTML)
        'objectif récupérer la 1° date téléchargée dans le tableau...
        'cette date se trouve être <td class="rt sorting_1">13/09/2013</td> donc il faut spliter jsute avant et
        'aprés pour isoler 13/09/2013
        chaine = divelements(b).outerHTML
     
        If aig = False Then 'au 1° passage pour vérifier si date est la bonne
        Do
        chaine = divelements(b).outerHTML
        string_date = Split(chaine, "<td class=""rt sorting_1"">")(1)
        'MsgBox ("chaine " & chaine)
        string_date = Split(string_date, "</td>")(0)
        date_chargee = string_date
        If db2 - date_chargee > 5 Then
        'ici relance du click sur le bouton refresh relance le processus mais pas chaine...pourquoi?
        'Set Bouton = IEDoc.getElementById("refreshHistoricalPC")
        'Bouton.Click
        GoTo z10 'pour relancer le processus
        End If
        Loop While (db2 - date_chargee > 5) 'boucle tant que plus de 5 jours d'écarts
        aig = True
        End If
     
        ligne = Split(chaine, "</table>") 'table doit servir de séparateur pour garder un bon affichage des datas
     
        'ici au 1° passage récupération de l'entête
        If a = 1 Then
     
        entete = ligne(0)
     
        Range("A1").Select
        'pour envoyer dans le presse papier les éléments de l'entête
        Set mydata = New DataObject
        'mydata.SetText divelements(b).outerHTML
        mydata.SetText ligne(0)
        'mydata.SetText divelements(b).innerText non ne marche pas
        mydata.PutInClipboard
     
        'on envoie les éléments de l'entête du tableau dans la feuille excel
        Set fich = ThisWorkbook
        Set pag = fich.Sheets(1)
        pag.Paste
     
        End If
     
        'ici ligne(1) à sa 1° ligne qui est vide à supprimer mais cette ligne s'affiche correctement...
        'ainsi que toutes les datas...
           '1° idée supprimer le thead de ligne(1) ca marche!!!
            ligne1 = Split(ligne(1), "<thead>")(0) & Split(ligne(1), "</thead>")(1)
     
            'on repere la premiere ligne libre de la feuille
        Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1).Select
        ancientexte = divelements(b).outerHTML
     
        Set mydata = New DataObject
        mydata.SetText ligne1
        mydata.PutInClipboard
        '*****************************************************************************************************************************
        'on envoie la page1  du tableau dans la feuille
        Set fich = ThisWorkbook
        Set pag = fich.Sheets(1)
        pag.Paste
     
     
     
    repart: ' introduit repart: a quoi sert ce repart:(a rien ici??? est ce pour aller avec un ancien goto disparu???)
     
      Set boutonpagenext = IEDoc.all("historicalTable_next")
      'c'est le bouton pour aller à la page suivante
        boutonpagenext.Click
     
       'attention lorsque l'on arrive ici e = 584 déjà supérieur à 100 donc la condition pour sortir de la boucle jamais remplie...
       e = 1 'pour réinitialiser e
       Do
       If divelements(b).outerHTML <> ancientexte Then Sort = True
     
       'ancienne boucle d'attente de Patrick???
       e = e + 1
       If e = 100 Then Sort = True
     
       Loop Until Sort = True
     
     
      Loop Until a = nombre
       nombre = 0
        IE.Quit
        Set IE = Nothing
        Set IEDoc = Nothing
     
     
        End Sub
    A bientôt

  7. #107
    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

    Il faut que tu tiennes compte des codes que nous t'avons fournis, sinon on avancera pas.

    Il faut remettre de l'ordre dans ce code en reprenant les modifs proposées en amont.
    Ensuite s'il faut ajouter un teste sur une date pour récupérer des erreurs de chargement on l'ajoutera mais pour l'instant il ne faut à mon avis pas se braquer la dessus et éliminer toutes ces boucles Do DoEvents.

    Remet un peu d'ordre et repropose un code sain pour qu'on puisse avancer, avec une indentation propre pour que ça soit lisible aussi .

    ++
    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

  8. #108
    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 qwazerty

    itwwo je rejoins qwazerty sur ce point tu teste tu teste
    mais tu ne suis pas dit toi bien et sans prétention de ma part loin de la

    a chaque nouveau code une évolution est a noter donc toi si tu continu a travailler avec des reliques on n'y arrivera pas

    bon comme qwazerty ma fait remarquer le changement de classe du bouton next le changement de page se gère pas son état et non plus par des variables

    ensuite j'ai repris l'idée du tableau (Table )de départ dans mes premier codes et non pas du Div complet pour la capture de l'élément il n'y a plus besoins de boucle

    ensuite comme je veux garder les entêtes pour le premier tableau je me sert du parentnode.parentnode sur la table pour récupérer ce div
    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. #109
    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

    Oui d'accord

    Viens de tester ton code Patrick pour euronext, si date du 05/01/2010 au 31/12/2010 alors aprés que le clipboard bloque au 1° passage (mais ca repart avec F5) il y a chargement des data du 25/01/2010 au 30/12/2010 il manque juste la dernière page...

    Bonne journée

  10. #110
    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

    Citation Envoyé par itwoo
    le clipboard bloque au 1° passage (mais ca repart avec F5)
    Un message d'erreur et la ligne sur laquelle l'erreur c'est produite?

    ++
    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

  11. #111
    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,

    Nouveau test pour euronext à l'instant même message que ce matin:
    erreur d'execution 1004
    la méthode Paste de la classe Worksheet à échoué
    cela se produit en ligne Sheets(2).Paste ca repart aprés F5

    D'autre part toutes les dates sont collées en double sur la feuille excel, et la 1° date reste le 25/01/2010...

    Désolé pas le temps de regarder le code plus en détail cette semaine, mais ce n'est que partie remise

    Dés que possible je reviens vers vous...cette semaine cela va être difficile...mais super sympa votre aide à tous les 2...vraiment merci

    Il faut tester cela dans la durée...mais le but et quasi atteint

    A bientôt

  12. #112
    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,

    Nouveau test euronext...

    Toujours le même message d'erreur pour Paste et relance aprés F5.

    Par contre les données ne s'affichent plus en double ce matin sur la feuille Euronext!!!

    Mais elles débutent toujours du 25/01 au lieu du 05/01...

    Bonne journée

  13. #113
    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 a vous,

    Bon sang vous avez fait un sacré boulot...

    C'est sur que si test en lancant juste VBA ca va plus vite que d'étudier le code c'est moins fun mais bon suis à jour comme ca avec vous...c'est l"essentiel ca ne retarde plus


    pour Nasdaq ca semble impeccable le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set pret = IEDoc.getElementById("ajaxloader")
        Do: DoEvents: Loop While LCase(pret.Style.display) = "block"
    juste ici une erreur d'affichage pour .Activate: [A1].Select: .Paste
    mais cela vient je crois de mon affichage type 16/03/14 et non 16/03/2014, c'est la même erreur 1004 vu précédemment qu'avec euronext en tapant F5 ca repart donc ca ca va aller...

    Pour euronext ca bloque ici sur le pag.paste à chaque boucle toujours la même erreur 1004 (surement idem à cause de mon affichage):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("a" & Range("a" & Rows.Count).End(xlUp).Row + 1).Select
            pag.Paste
    Bien pour tester euronext a l'instant introduit la date du 25/03/2010 au 26/11/2013 et les données récupérées donnent:
    du 31/05/2010 au 26/11/2013...il manque denouveau les datas les plus anciennes...

    Bonne journée

    A la semaine prochaine

  14. #114
    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 rerererererererere
    Re
    et bien dis donc on va y arriver
    bon dans le dernier fichier change le code du module Euronext pour celui ci: et tu aura la dernière page manquante

    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
     
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim LienViewData As HTMLAnchorElement
    Dim Bouton As HTMLButtonElement, Boutonpage2 As HTMLButtonElement
     
    Public Sub WaitIE(IE As InternetExplorer)
    'On boucle tant que la page n'est pas totalement chargée
        Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
    End Sub
     
    Sub TEST_EURONEXT()
        euronextrecuptable "20/04/2008", "01/02/2013"
    End Sub
     
     
     
    Sub euronextrecuptable(date1, date2)
     
        [A1].Select
        Sheets(2).Columns("A:G") = ""
        Sheets(2).CommandButton1.Caption = "VEUILLEZ PATIENTER PENDANT LE TELECHARGEMENT"
        Sheets(2).CommandButton1.BackColor = vbRed
        Dim mydata, fich, pag
        'cette sub pour récupérer les données historiques
        'ici l'exemple traité par défaut est AIR LIQUIDE (FR0000120073)
        IE.Navigate "https://europeanequities.nyx.com/en/products/equities/FR0000120073-XPAR/quotes"
        IE.Visible = True
        WaitIE IE
        Set IEDoc = IE.document
        Set LienViewData = IEDoc.all("tablesNavigation_hi")    'pour aller directement au tableau historique
        LienViewData.Click    'On exécute le lien
        IEDoc.getElementById("historicalDatePicker1").Value = date1  'ici avec id pointe directement sur le bon input!!!
        IEDoc.getElementById("historicalDatePicker2").Value = date2  'ici avec id pointe directement sur le bon input!!!
        'il faut ensuite cliquer sur le bouton dont id="refreshHistoricalPC" type="button" value="Refresh
        Set Bouton = IEDoc.getElementById("refreshHistoricalPC")
        Bouton.Click
        'set divelements = IEDoc.getElementsByTagName("div")
        Bouton.Click
     
    Set tableau = IEDoc.getElementById("historicalTable")
     Set tableaucomplet = tableau.ParentNode.ParentNode
          ancientexte = ""
         '************************************************************************************************************************
        'on va attendre que les donnée soit a jour dans le tableau
        Do: Loop While InStr(LCase(tableaucomplet.outerHTML), "loading data...") > 0
        '************************************************************************************************************************
        'la premiere cellule du tableau est le element.efant 1.enfant 0.enfant 1.enfant 0.enfant 0.
        Set Boutonpage2 = IEDoc.getElementById("historicalTable_next")
         Set entete = New DataObject
        entete.SetText tableaucomplet.Children(0).outerHTML    'les entetes du tableau
        entete.PutInClipboard
        [A1].Select
        Sheets(2).Paste
        Set entete = Nothing
      ' MsgBox tableaucomplet.innerText
       'IE.Quit
     'Exit Sub
        Do
            DoEvents
            ancienrepere = tableaucomplet.Children(1).Children(0).Children(1).Children(0).Children(0).innerText
            Set mydata = New DataObject
            mydata.SetText tableaucomplet.Children(1).Children(0).outerHTML
            ancientexte = tableaucomplet.outerHTML
            'le code du tableau est copié dans le presse-papiers
            mydata.PutInClipboard
            Set fich = ThisWorkbook
            Set pag = fich.Sheets(2)
            pag.Activate
            Range("a" & Range("a" & Rows.Count).End(xlUp).Row + 1).Select
            pag.Paste
     
            Boutonpage2.Click    ' on click sur le bouton next pour changer de page
     
            Do
                'on boucle tant que la 1 ere cellule du tableau est identique au precedent tableau
                If tableaucomplet.Children(1).Children(0).Children(1).Children(0).Children(0).innerText <> ancienrepere Then stops = True
            Loop Until stops = True
            Sheets(2).CommandButton1.BackColor = vbGreen
     
            Page = Page + 1
              Loop Until Boutonpage2.className = "nyx_eu_paginate_next nyx_eu_paginate_disabled"
    'maintenant que le bouton next est desactiver on copie le tableau puisque c'est le dernier
    mydata.SetText tableaucomplet.Children(1).Children(0).outerHTML
                    'le code du tableau est copié dans le presse-papiers
            mydata.PutInClipboard
            Set fich = ThisWorkbook
            Set pag = fich.Sheets(2)
            pag.Activate
            Range("a" & Range("a" & Rows.Count).End(xlUp).Row + 1).Select
            pag.Paste
       Set mydata = Nothing
        IE.Quit
        Set IE = Nothing
        Set IEDoc = Nothing
        [A1].Select
        rot = False
        Sheets(2).CommandButton1.Caption = "RETOUR A L ACCEUIL"
     
    End Sub
    alors pour les blocages au début moi je n'en ai jamais eu donc peut être c'est l'attente du tableau qui te gène mais l'on y peut rien
    tu lance la macro et tu attends c'est tout
    ca fonctionne a 100% chez moi a chaque fois si c'est pas le cas chez toi c'est que tu a un soucis avec IE,tabande passante , ect.....
    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. #115
    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

    Alors... J'avais déjà essayé cette méthode mais sans résultat, sauf que cette fois j'ai compris certaines choses...
    On laisse tomber la prise en main et tutti quanti, on va directement demander gentiment au serveur de nous envoyer les données

    Le code fait deux choses, il place les données dans la feuil4 et il crée un fichier Data.txt sur le DD C:\. Ce fichier contient les données au format JSon, ça peut servir puisque après tout je ne sais pas ce que tu veux faire de ces données.

    Bon un petit défaut tout de même! Dans le JSON, les chiffres décimaux sont notés avec une virgule... et le parser que j'ai trouvé sur internet ne semble pas apprécier... Donc soit il faut diviser par 1000 les valeurs, soit modifier le code du parser.

    Bonne soirée

    ++
    Qwaz
    Fichiers attachés Fichiers attachés

    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

  16. #116
    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
    oui ca va finir par marcher...avec votre aide pas de soucis

    Pour les données je les mets ensuite dans un fichier *.txt. (donc le . en , ou le contraire pas de problème)

    Dés que suis sur mon ordi je fais vos modif (surement mi semaine prochaine)

    Une question Qwaz comment as tu repéré/identifié l'ajaxloader de la rosace dans le code pour nasdaq?

    A bientôt

  17. #117
    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

    Le soucis c'est qu'a la conversion des données, il supprime carrément le marqueur décimal. Tu verras en faisant un essai (y'en a pour 30 sec, tu as juste à appuyer sur le bouton Valider et du auras les données)

    Pour la rosace, et pour le reste d'ailleur, j'utilise beaucoup les inspecteur de code fourni par les navigateurs internet, une fois le chargement lancé, en utilisant le sélecteur d'objet, il suffit de cliquer sur la rosace et l'inspecteur te montre la partie du code source qui la gère.

    J'ai aussi utilisé l'inspecteur pour repérer les infos nécessaires pour la création de l'entête de la requête GET.

    ++
    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

  18. #118
    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 Qwazerty

    j'ai une erreur ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StreamFile.SaveToFile "C:\Data.txt", 2                'overwrite
    en jaune

    l'erreur c'est
    "impossible d'écrire dans le fichier"
    itwoo a tu essayé le dernier code a mettre dans le module euronext avec la correction de la dernière page ?

    edit :1 minute plus tard
    erreur resolu en changeant l'adresse du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StreamFile.SaveToFile ThisWorkbook.Path & "\Data.txt", 2                'overwrite
    que dire mon cher qwazerty

    je n'ai pas de mot pour exprimer mon admiration
    whaou......
    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. #119
    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

    En effet j'ai aussi un soucis avec C:\, c'est Windows qui refuse d'écrire sur la racine je pense.
    En fait j'utilise E:\ chez moi, j'avais mis C:\ pour que ce soit compatible chez tout le monde ... epic fail !..

    ++
    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

  20. #120
    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
    j'ai regardé un peu ton code
    et j'ai mal a la tète mais bon c'est du super boulot en tout cas
    finalement l'object xhtml2 est pas si mal même avec des mises a jour dynamique
    ensuite le parser je découvre alors on va y aller doucement

    je crois que itwoo va perdre des cheveux a essayer de comprendre

    je suis assez intéressé par le paramétrage de la requête tu aurais un toto pour ca

    je suis scotché a mon siège devant ton art

    une explication sommaire en entrée en matière sur le parser peut être
    1 qu' est ce que c'est
    2 comment ca marche
    3 des tutos plein de tutos miam miam
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.
Page 6 sur 17 PremièrePremière ... 234567891016 ... DernièreDernière

Discussions similaires

  1. Réponses: 193
    Dernier message: 13/12/2014, 07h48
  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