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

    en fin le maitre en la matière je n'y avais pas penser a cet élément

    cela dit en fait dans le dernier fichier que je lui ai donné je me sert du test sur le texte de l'élément
    tant que l'élément porte le texte "Loading Data..."on boucle car des que le tableau est prêt ce texte est remplacé par le tableau

    ensuite Euronext selon la période il y plusieurs page

    je click sur next et boucle tant que la 1 ère cellule de gauche en haut est identique a celle du précédant ensuite copie dans le dataobject

    on pourrait tester le height du div aussi car quand le tableau est prêt le height change

    mais c'est assez tordu quand même on a beau essayer 50 fois d'affiler le temps de chargement est a chaque fois différent

    en tout cas je te remercie d'être intervenue je commençais a être en panne d'inspiration
    j'en viens a regretter nos bonne vielle page HTML
    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

  2. #82
    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
    exemple aujourd'hui 12h57 impossible d'acceder au cite meme en tapant l'adresse dans la barre de recherche de 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

  3. #83
    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
    purée vraiment bien vu qwazerty le test sur le gif visible est impeccable sur la page de Nasdaq
    reste a trouver un élément similaire sur Euronext car ca simplifie les choses

    j'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    '***************************************************************************
        ' le boucle qui resout le probleme !!!!!!!!!!
        'Do
        'Set htmlTagCol = IEDoc.getElementsByTagName("tr")
        'DoEvents
        'Loop Until htmlTagCol.Length > NBlignes
        '*******************************************************************************
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set pret = IEDoc.getElementById("ajaxloader")
        Do: DoEvents: Loop Until pret.Visible = False
    l
    a effectivement il ne peut pas y avoir d'erreurs
    je peut même supprimer les lignes select case

    tu reste le meilleur

    comme quoi un œil nouveau apporte a coup sur une vision plus clair
    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

  4. #84
    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 au fait puisque tu es la
    L'élément à contrôler se nomme "ajaxloader", tu restes dans la boucle d'attente tant qu'il est visible, une fois qu'il disparait le chargement est complet. Il faudra peut-être chercher un meilleur critère que visible, le style "display" par exemple passe de "None" à "Block" au moment des chargements.
    comment gère t on le style en vba je n'en ai aucunne idée
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

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

  5. #85
    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 crois que j'ai parler trop vite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    '*******************************************************************************************************************
        'on boucle tant que la roulette est visible et tourne
        '<p id="ajaxloader" class="ajax_loading_wrap" style="display:none"><img src="http://content.nasdaq.com/images/ajax-loader-2.gif" width="32" height="32" /></p>
        Set pret = IEDoc.getElementById("ajaxloader")
     
        Do: DoEvents: Loop Until pret.Visible = False
            '****************************************************************************************************************************
    ca marchait parce que c'était toujours l'ancienne méthode qui se déclenchait

    'message d'erreur
    'erreur 438
    'propriété ou non gérer par cet object

    c'est bon j'ai trouver et ca fonctionne
    cetait comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set pret = IEDoc.getElementById("ajaxloader")
          Do: DoEvents: Loop Until LCase(pret.Style.display) = "none"
    merci a toi qwazerty
    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

  6. #86
    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 Qwaz c'est ca le chronométre (= la roullette de fin de téléchargement) que je cherchais trop cool
    Merci Patrick pour toutes les versions...Je suis en retard du coup pour les tests...ca va prendre du temps ca c'est sûr...
    Pour info euronext non accessible c'est bizarre...a surveiller si l'erreur se reproduit...tu disais que sous IE ca ne fonctionnait pas aussi? hier en tout cas ici sous IE ca marchait mais nombre restait désespéremment à 0...mais avec tes nouvelles modifications tout devrait rentrer dasn l'ordre...
    Quoi qu'il en soit ca progresse toujours voir peut être même but atteint
    A suivre...
    A bientôt

  7. #87
    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
    aujourd'hui impossible d'aller chez Euronext même directement avec IE sans vba et exel


    arrête de tester tu es trop en retard

    prend les codes que je te donne sinon on va pas y arriver
    voila selon l'idée plus que bonne de Qwazerty récupère ce code pour Nasdaq et remplace le code dans le module Nasdaq par celui ci
    Dans le fichier que je t'ai donné

    cette fois pour Nasdaq c'est définitif je pense pas que l'on puisse l'améliorer plus que ca
    on teste plus rien a part cette image gif par sa présence ou pas

    encore merci a QWAZERTY pour le tuyau
    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
    Option Explicit
    Option Base 1
     
    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_pour_nasdaq()
    '"1m" pour 1 Mois:"3m" pour 3 mois:"6m" pour 6 Mois":"1y" pour 1 Ans:"18m" pour 18 Mois:"2y" pour 2 Ans
    '"3y" pour 3 Ans:"4y" pour 4 Ans:"5y" pour 5 Ans:"6y" pour 6 Ans:"7y" pour 7 Ans:
    '"8y" pour 8 Ans:"9y" pour 9 Ans:"10y" pour 10 Ans
        récuperation_du_tableau_A "1m"
    End Sub
    Function récuperation_du_tableau_A(duré As String)
        Sheets(1).Columns("A:F") = ""
        Sheets(1).CommandButton1.Caption = "VEUILLEZ PATIENTER PENDANT LE TELECHARGEMENT"
        Sheets(1).CommandButton1.BackColor = vbRed
        Dim IE As New InternetExplorer, IEDoc As HTMLDocument, htmlTagCol As IHTMLElementCollection, Generic As HTMLGenericElement
        Dim NBlignes
        Dim htmlSelectElem, pret, tablo, mydata, i
        'Ouvre la page Web
        IE.Navigate "http://www.nasdaq.com/symbol/f/historical"
        IE.Visible = False
        WaitIE IE
        Set IEDoc = IE.document
        Set htmlSelectElem = IEDoc.all("ddlTimeFrame")
        'liste des item a prendre en compte
        htmlSelectElem.Value = duré
        IEDoc.all("ddlTimeFrame").onchange    'on applique le changement
        '*******************************************************************************************************************
        'on boucle tant que la roulette est visible et tourne
        '<p id="ajaxloader" class="ajax_loading_wrap" style="display:none"><img src="http://content.nasdaq.com/images/ajax-loader-2.gif" width="32" height="32" /></p>
        Set pret = IEDoc.getElementById("ajaxloader")
        Do: DoEvents: Loop While LCase(pret.Style.display) = "block"
        '****************************************************************************************************************************
        Set tablo = IEDoc.getElementsByTagName("table")(2)
        Set mydata = New DataObject
        mydata.SetText tablo.outerHTML
        'le code du tableau est copié dans le presse-papiers
        mydata.PutInClipboard
        'Set fich = ThisWorkbook
        With Sheets(1)
            .Activate: [A1].Select: .Paste
            With .UsedRange
                .HorizontalAlignment = xlCenter
                .VerticalAlignment = xlCenter
            End With
        End With
        IE.Quit
        Set tablo = Nothing
        Set mydata = Nothing
        Set IE = Nothing
        Set IEDoc = Nothing
        Sheets(1).CommandButton1.Caption = "RETOUR A L ACCEUIL"
        Sheets(1).CommandButton1.BackColor = vbGreen
     
    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

  8. #88
    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 teste toi meme si euronext est accesible
    Re
    est ce que l'un de vous 2 pourrait tester si on peu atteindre Euronext
    https://europeanequities.nyx.com/en/...73-XPAR/quotes
    car moi je suis bloquer je ne peut pas avancer
    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. #89
    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

    La page n'est pas toujours accessible chez moi...

    Bon par contre je ne comprend pas votre problème avec le changement de page.

    Exemple de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        IEDoc.getElementById("priceChartIntradayTable_next").Click
    De mon coté, le pas à pas ne passe à la ligne suivante que lorsque la page est totalement chargée.


    Pour le nombre de page, je pense que c'est un faux problème, il suffit de cliquer sur le bouton Next jusqu'à ce que celui-ci soit désactivé.

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

  10. #90
    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
    qwazerty
    si tu parle bien de Euronext et non pas Nasdaq

    dans le fichier que je lui est transmis en dernier le problème n'existe plus

    en fait il en est au teste des version 1 semaines en arrière apparemment

    le problème depuis hier c'est l'ouverture de la page elle même mais ca n'est pas du au code visiblement

    quand a ton click je suppose que c'est le parent de celui que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set boutonpage2 = IEDoc.all("historicalTable_next")
    si on parle toujours de Euronext bien sur
    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

  11. #91
    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

    Non ça n'est pas le parent, c'est le bouton Next de la page Data Intraday (pas Historical), l'avantage en utilisant celui la c'est que couplé à une liste avec 1000 entrés, on voit le pas à pas qui met du temps à quitter la ligne de code où l'on effectue le click.

    J'ai modifié mon poste précédent, j'ai ajouté une phrase concernant la gestion du nombre de pages.

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

  12. #92
    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
    ca y est c'est reparti on peut l' atteindre

    tiens essais ce code dans un fichier vierge en activant les références

    il fonctionne très bien chez moi, j'ai laisser Ie a visible true pour que tu puisse voir que le tableau change bien de page tout seul
    j'ai bloqué les boutons en commentaires qui ne te serviront a rien

    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
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim LienViewData As HTMLAnchorElement
    Dim InputDateTexte As HTMLInputElement
    Dim Bouton As HTMLButtonElement
    Dim FormatChargement As IHTMLInputElement
    Dim nbreanchor As Integer
    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/2010", "03/07/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
        'WaitDoc IEDoc   ' ca on fait peter aussi!!!!!!!!
        Set LienViewData = IEDoc.all("tablesNavigation_hi")    'pour aller directement au tableau historique
        LienViewData.Click    'On exécute le lien
        Set InputDateTexte = IEDoc.all("historicalDatePicker1")    'ici avec id pointe directement sur le bon input!!!
        InputDateTexte.Value = date1    'On inscrit le texte dans l'input soit la date de début
        Set InputDateTexte = IEDoc.all("historicalDatePicker2")    'ici avec id pointe directement sur le bon input!!!
        InputDateTexte.Value = date2    '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
        Set Bouton = IEDoc.getElementById("refreshHistoricalPC")
        'Set Bouton = IEDoc.all("refreshHistoricalPC")
        Bouton.Click
        Set divelements = IEDoc.getElementsByTagName("div")
        Bouton.Click
        Set boutonpage2 = IEDoc.all("historicalTable_next")
     
     
     '**************************************************************************************************************************
        '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)
        Loop While nombre < 2
     
        '***************************************************************************************************************************
     
     
     
        ancientexte = ""
        '************************************************************************************************************************
        'on cherche l'element comportant le tableau
        Do
            i = i + 1
            If i = divelements.Length Then i = 1
        Loop Until divelements(i).className = "dataTables_scroll" And InStr(LCase(divelements(i).outerHTML), "number of shares") > 0
     
        '************************************************************************************************************************
        'on va attendre que les donnée soit a jour dans le tableau
            Do: Loop While InStr(LCase(divelements(i).innerText), "loading data...") > 0
            '************************************************************************************************************************
        'la premiere cellule du tableau est le element.efant 1.enfant 0.enfant 1.enfant 0.enfant 0.
     
     
    Do
    DoEvents
    ancienrepere = divelements(i).Children(1).Children(0).Children(1).Children(0).Children(0).innerText
        Set mydata = New DataObject
        texto = "<table>" & divelements(i).Children(1).Children(0).Children(1).outerHTML
      mydata.SetText IIf(Page < 1, divelements(i).outerHTML, texto)
        ancientexte = divelements(i).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 divelements(i).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 Page = nombre + 1 'on boucle autant de fois qu'il y a de pages
         IE.Quit
        Set IE = Nothing
        Set IEDoc = Nothing
     [A1].Select
    rot = False
    'Sheets(2).CommandButton1.Caption = "RETOUR A L ACCEUIL"
     
    End Sub
    dis moi si ca fonctionne chez toi
    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

  13. #93
    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
    oui normalement tu a raison pour le bouton next
    j'avais fait un truc du genre dans les anciennes versions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    do: until lebouton .disabled=true
    mais ca continuait quand meme
    c'est pour ca que je suis allez chercher le nombre de page dans le" historicalTable_info"
    avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    '**************************************************************************************************************************
        '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)
        Loop While nombre < 2
     
        '***************************************************************************************************************************
    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

  14. #94
    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

    Je n'ai pas fait le teste de ton code mais j'ai plusieurs questions.

    Pourquoi utiliser une collection de Div et boucler dessus pour trouver le tableau?
    Il a un id, autant l'utiliser, <table id="historicalTable".
    Celui-ci semble être rechargé lors du changement de page et donc la synchro entre la variable et l'élément de la page doit se casser peut-être, si c'est le cas, il suffit de pointer le Parent du tableau, qui se trouve être un Div et qui ne semble pas être rechargé.

    Comme je le proposais dans mon message précédent, je pense que le contrôle de l'inactivation du bouton Next permet de savoir facilement si on est à la fin du tableau, sans avoir à s'encombrer de calculs pour déterminer le nombre de pages.
    [Edit]
    Je viens de voir ton message posté entre temps, si le code continuait, c'est que le critère n'ait sans doute pas le bon, mais la démarche me semble bien plus cohérente que le calcul.

    [/Edit]

    Je vais remonter un peu le fil de discussion car la réponse à cette question y figure sans doute mais, êtes vous sûr que la boucle après le Click sur le bouton Next est utile? Sur les essais que j'ai fait, comme dit dans un de mes messages précédents, le code marque naturellement une pause lors du chargement de la page chez moi.

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

  15. #95
    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
    non moi je n'ai pas cette pose après le click
    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

  16. #96
    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
    je comprends mieux ta question sur la boucle des divs
    et bien en fait si tu regarde bien le until a une importance
    en fait la boucle sert a trouver le div et en même tant tester la présence d'une cellule de l'entête(preuve que le tableau s'est affiché
    car il est accessible pratiquement tout de suite comme tu dis mais il y en a 2 le 2 eme étant le tableau tout en bas

    mais les données ne sont pas chargées le 2 eme argument du until sert a ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    '************************************************************************************************************************
        'on cherche l'element comportant le tableau
        Do
            i = i + 1
            If i = divelements.Length Then i = 1
        Loop Until divelements(i).className = "dataTables_scroll" And InStr(LCase(divelements(i).outerHTML), "number of shares") > 0
     
        '************************************************************************************************************************
    dans les versions précédentes on se servait directement de la collection de table
    et c'était le table(7)
    mais tu a peut être raison sur ce point mais je sais pas si c'est pas parce que je voulais récupérer les titres des entêtes de colonne que j'avais opter pour le div complet je sais plus
    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. #97
    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
    Re

    Pour le bouton Next il faut tester le className, c'est lui qui change d'un état à l'autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IEDoc.getElementById("historicalTable_next").classname
    'Actif = "nyx_eu_paginate_next nyx_eu_paginate_button"
    'Inactif = "nyx_eu_paginate_next nyx_eu_paginate_disabled"
    je vais faire un teste ou 2 pour l'histoire du changement de page.

    ++

    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. #98
    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
    tiens voila selon ton idée ca fonction
    plus de recherche de NBpage
    seul le test sur le tableau et la 1 ere cellule et la classe du bouton
    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
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim LienViewData As HTMLAnchorElement
    Dim InputDateTexte As HTMLInputElement
    Dim Bouton As HTMLButtonElement
    Dim FormatChargement As IHTMLInputElement
    Dim nbreanchor As Integer
    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_EURONEXT3()
        euronextrecuptable3 "20/04/2010", "03/07/2013"
    End Sub
     
     
     
    Sub euronextrecuptable3(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
        'WaitDoc IEDoc   ' ca on fait peter aussi!!!!!!!!
        Set LienViewData = IEDoc.all("tablesNavigation_hi")    'pour aller directement au tableau historique
        LienViewData.Click    'On exécute le lien
        Set InputDateTexte = IEDoc.all("historicalDatePicker1")    'ici avec id pointe directement sur le bon input!!!
        InputDateTexte.Value = date1    'On inscrit le texte dans l'input soit la date de début
        Set InputDateTexte = IEDoc.all("historicalDatePicker2")    'ici avec id pointe directement sur le bon input!!!
        InputDateTexte.Value = date2    '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
        Set Bouton = IEDoc.getElementById("refreshHistoricalPC")
        'Set Bouton = IEDoc.all("refreshHistoricalPC")
        Bouton.Click
        Set divelements = IEDoc.getElementsByTagName("div")
        Bouton.Click
        Set boutonpage2 = IEDoc.all("historicalTable_next")
     
        Set tableau = IEDoc.getElementById("historicalTable")
     
        '************************************************************************************************************************
        'on va attendre que les donnée soit a jour dans le tableau
        Do: Loop While InStr(LCase(tableau.innerText), "loading data...") > 0
        '************************************************************************************************************************
        Do
            DoEvents
            ancienrepere = tableau.Children(1).Children(0).Children(0).innerText
            Set mydata = New DataObject
            texto = tableau.outerHTML
            mydata.SetText IIf(Page < 1, tableau.outerHTML, texto)
     
            '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 tableau.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"
        IE.Quit
        Set IE = Nothing
        Set IEDoc = Nothing
        [A1].Select
        rot = False
        Sheets(2).CommandButton1.Caption = "RETOUR A L ACCEUIL"
     
    End Sub
     
    'IEDoc.getElementById("historicalTable_next").className
    'Actif = "nyx_eu_paginate_next nyx_eu_paginate_button"
    'Inactif = "nyx_eu_paginate_next nyx_eu_paginate_disabled"
    il me reste plus qu'a nettoyer le code
    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. #99
    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
    Re

    Bon je n'arrive pas à trouver de problème de temps de chargement sur le passage d'une page à l'autre.
    J'utilise un code de ce genre pour tester et ça passe sans problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set TheTable = IEDoc.getElementById("historicalTable")
    For i = 0 To 3
        Set EssaiObj = New DataObject
        EssaiObj.SetText TheTable.outerHTML
        EssaiObj.PutInClipboard
     
        Feuil7.Cells((i * 51) + 1, "A").Select
        Feuil7.Paste
        IEDoc.getElementById("historicalTable_next").Click
    Next
    Les essais avec des pages contenant 1000 enregistrements ne servent à rien, pour une raison que je ne m'explique pas, seuls 50 lignes sont accessibles via vba quelque soit le nombre d'enregistrements visibles dans le tableau.

    [Edit]
    Au pire, il faudrait voir lors de ce temps de chargement de page (que je n'arrive pas à mettre en évidence chez moi), si un des statuts readystate des différents éléments constitutifs du tableau ne serait pas en "non ready"
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TheTable.ReadyState <> "complete"
    [/Edit]

    Bonne continuation
    ++
    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. #100
    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

    en fait si tu regarde le dernier code que j'ai mis dans ma précédente réponse la gestion du temps de changement de page se fait par la vérification de la 1 ere cellule en haut a gauche du tableau c'est une date
    dans la boucle il y une variable appelée "ancienrepere"

    test: do:while tableau.enfant(1).......<>ancien repère

    ainsi tant que le tableau n'a pas changé on ne sort pas de la boucle do:loop
    et cela fonctionne très bien

    non le fait que le next change de classe name ;ca je ne l'avais pas vu et c'est une chance que tu l'ai vu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Do
                'on boucle tant que la 1 ere cellule du tableau est identique au precedent tableau
                If tableau.Children(1).Children(0).Children(0).innerText <> ancienrepere Then stops = True
            Loop Until stops = True
    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.

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