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. #201
    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 et merci Marc

    voila une adaptation encore plus propre
    avec en prime la mise en page propre et net et une ligne vide pour visualiser les saut de pages
    tu avais raison après les requetés tout se joue dans le wbk.change

    j'ai modifié page blanche
    et le wbk.change
    le control du chargement effectif et bien affiché dans la captions du bouton qui change a chaque page effectivement affichée

    temps d'exécution total : entre 9 et 27 secondes selon la fréquentation je suppose
    mais ca reste une belle performance je crois


    j'ai essayer d'en faire une seul avec ie
    temps total d'exécution 22 secondes pour une page c'est galère

    je vais revoir le post 15 pour comprendre ce que tu me dis
    voila le fichier il est beau non?
    Fichiers attachés Fichiers attachés
    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. #202
    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
    effectivement sacré retour dans le passé

    non c'est pas que je n'y étais pas loin , j'etais en plein dedans

    tiens juste pour le fun j'ai scalper le code mais juste pour le fun car pour moi ca n'a aucun interet l'object(Microsoft.xmlhttp) fait la meme chose en 3 seconde


    je me suis servi d'une variable long pour paramétrer la boucle d'attente
    60 minimum pour 3mois après c'est minimum 123 alors ces 2 seules valeurs suffisent
    mais je le répète c'est vraiment juste pour le fun
    regarde ce code tout scalpé le pauvre
    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
     
    Sub test()
    telechargement_de_la_table "10y"
    End Sub
     
     Sub telechargement_de_la_table(temps)
    Dim IE As Object, IEDoc As Object, tablo(2000, 6) As Variant, debut, ARGMTStemps As Long
     ARGMTStemps = IIf(temps = "3m", 60, 120)
     debut = Time
    [A1:F2000] = ""
         Set IE = CreateObject("InternetExplorer.Application") 'late binding pas de refrence a activer pour internet explorer
        'Ouvre la page Web
        IE.Navigate "<a href="http://www.nasdaq.com/symbol/f/historical" target="_blank">http://www.nasdaq.com/symbol/f/historical</a>"
        IE.Visible = True
        Do Until IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop
        Set IEDoc = IE.document
        With IEDoc.all("ddlTimeFrame")
        .Value = temps
            .onchange    'on applique le changement
     End With
           Do Until IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop 'On attend le chargement complet de la page apres le changement de la combobox de chois de la durrée
         '***************************************************************************
       ' le boucle qui resout le probleme !!!!!!!!!!
        Do: DoEvents: Loop Until IEDoc.getElementsByTagName("tr").Length > ARGMTStemps
    '*******************************************************************************
         For i = 3 To IEDoc.getElementsByTagName("tr").Length - 2
                 For e = 0 To 5
                On Error Resume Next
                tablo(i - 3, e) = IEDoc.getElementsByTagName("tr")(i).Children(e).innerText
                On Error GoTo 0
            Next
         Next
        [A1].Resize(UBound(tablo), 6) = tablo
        IE.Quit
        Set IE = Nothing
        Set IEDoc = Nothing
    MsgBox "la requete a demaré a : " & debut & " et a terminé a : " & Time & vbCrLf & "elle aura donc duré : " & Format(Time - debut, "ss") & " secondes"
    End Sub
    active quand même la référence Microsoft internet control on y échappe pas on manipule une list option sur la page
    comme quoi a préciser dans le tutoriel de qwazerty
    cette référence doit être impérativement activé même en late binding pour internet explorer en cas de manipulation d'element dans la page

    conclusion :
    en gros quand le system classique ne fonctionne pas, chercher un indice changeant dans la page et se servir de la présence ou la modification de celui ci dans une boucle d'attente et le tour est joué

    dans ce cas precis il y a le nombre de tr forcement

    on peut aussi se servir du changement de classe de la gif
    bref des solution il y en a toujours
    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. #203
    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
    ou bien alors !!...
    1 on prend ces jambes a son coup et on cncore du code et on prend des raccourcis a travers champ
    2 on supprime plusieurs variables et on réutilise en changeant de type celles qui sont déjà présentes
    3 on supprime des boucles d'attente inutiles
    4 on vire les variables tableaux qui sont plus ou moins complexes a alimenter par les enfant sous enfants de 5 la table
    6 on récupère le outerhtml de la table
    7 on vire quelques truc par-ci par la
    8 on utilise le clipboard après tout on l'a servons nous en
    9 on utilise un dataobject très critiqué injustement même par moi a cause de la reference a activer qui est différente sur 9 poste sur 10,on l'utilisera d'ailleurs en late binding
    le tout servi sur un plateau
    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
     
    Sub test()
        telechargement_de_la_table "10y"
    End Sub
    Sub telechargement_de_la_table(temps As Variant)
        Dim IE As Object, IEDoc As Object, debut
        debut = Time
        [A1:F2000] = ""
        Set IE = CreateObject("InternetExplorer.Application")    'late binding pas de refrence a activer pour internet explorer
        'Ouvre la page Web
        IE.Navigate "http://www.nasdaq.com/symbol/f/historical"
        IE.Visible = True
        Do Until IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop
        Set IEDoc = IE.document
        With IEDoc.all("ddlTimeFrame")
            .Value = temps
            .onchange    'on applique le changement
        End With
       temps = IIf(temps = "3m", 60, 120)
         '***************************************************************************
        ' le boucle qui resout le probleme !!!!!!!!!!
        Do: DoEvents: Loop Until IEDoc.getElementsBytagname("tbody")(2).Children.Length > temps
        '*****************************************************************************
        Dim DataObj As Object
        Set DataObj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        DataObj.SetText "<table>" & Replace(Replace(Replace(Replace(Replace(IEDoc.getElementsBytagname("tbody")(2).innerhtml, Chr(10), ""), " ", ""), "&nbsp;", ""), "class=""genTablealt""", ""), "</td></tr><tr>", "</td></tr>" & vbNewLine & "<tr>") & "</table>"
        DataObj.PutInClipboard
        With Sheets(1)
            .Cells(1, 1).Select
            .Paste
        End With
        IE.Quit
        Set IE = Nothing
        Set IEDoc = Nothing
        MsgBox "la requete a demaré a : " & debut & " et a terminé a : " & Time & vbCrLf & "elle aura donc duré : " & Format(Time - debut, "ss") & " secondes"
    End Sub
    Edit: a noter que l'on est pas obligé de nettoyer le code de la table ,on peut même aller chercher le parentnode afin d'avoir les entêtes de colonnes
    ce qui nous fait gagner encore environ 25 seconde sur 10 ans
    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
     
    Sub test()
        telechargement_de_la_table "10y"
    End Sub
    Sub pageblanche()
    Columns("a:f").ClearContents
    End Sub
    Sub telechargement_de_la_table(temps As Variant)
        Dim IE As Object, IEDoc As Object, debut, DataObj As Object
        '
        debut = Time
        [A1:F2000] = ""
        Set IE = CreateObject("InternetExplorer.Application")    'late binding pas de refrence a activer pour internet explorer
        'Ouvre la page Web
        IE.Navigate "http://www.nasdaq.com/symbol/f/historical"
        IE.Visible = True
        Do Until IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop
        Set IEDoc = IE.document
        With IEDoc.all("ddlTimeFrame")
            .Value = temps
            .onchange    'on applique le changement
        End With
        temps = IIf(temps = "3m", 60, 120)
        '***************************************************************************
        ' le boucle qui resout le probleme !!!!!!!!!!
        Do: DoEvents: Loop Until IEDoc.getElementsBytagname("tbody")(2).Children.Length > temps
        '*******************************************************************************
        Set DataObj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        DataObj.SetText "<table>" & IEDoc.getElementsBytagname("tbody")(2).ParentNode.innerhtml & "</table>"
        DataObj.PutInClipboard
        nblignes = IEDoc.getElementsBytagname("tbody")(2).Children.Length
        nbcol = IEDoc.getElementsBytagname("tbody")(2).Children(1).Children.Length
            IE.Quit
        Set IE = Nothing
        Set IEDoc = Nothing
        With Sheets(1)
            .Cells(1, 1).Select
            .Paste
        End With
        ' facultatif c'est juste pour la visualisation
        With Selection
            .VerticalAlignment = xlCenter
            .HorizontalAlignment = xlCenter
        End With
        MsgBox "la requete a demaré a : " & debut & " et a terminé a : " & Time & vbCrLf & "elle aura donc duré : " & Format(Time - debut, "nn:ss") & " secondes" & vbCrLf & "il ya  : " & nblignes & " lignes et " & nbcol & " colonnes  dans ce tableau"
    End Sub
    edit une seconde fois :

    j'ai retrouver dans mon disque dur mes archives que j'ai pu deziperet j'ai retrouvé des pépites

    en ce qui concerne le dataobject meme si en late binding il vous cause encore des soucis :pas de probleme tonton a la solution

    on va se servir du clipboard d'un internet explorer virtuel
    c'est encore plus simple

    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
     
    Sub test()
        telechargement_de_la_table "10y"
    End Sub
    Sub pageblanche()
    Columns("a:f").ClearContents
    End Sub
    Sub telechargement_de_la_table(temps As Variant)
        Dim IE As Object, IEDoc As Object, debut, DataObj As Object
        '
        debut = Time
        [A1:F2000] = ""
        Set IE = CreateObject("InternetExplorer.Application")    'late binding pas de refrence a activer pour internet explorer
        'Ouvre la page Web
        IE.Navigate "http://www.nasdaq.com/symbol/f/historical"
        IE.Visible = True
        Do Until IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop
        Set IEDoc = IE.document
        With IEDoc.all("ddlTimeFrame")
            .Value = temps
            .onchange    'on applique le changement
        End With
        temps = IIf(temps = "3m", 60, 120)
        '***************************************************************************
        ' le boucle qui resout le probleme !!!!!!!!!!
        Do: DoEvents: Loop Until IEDoc.getElementsBytagname("tbody")(2).Children.Length > temps
        '*******************************************************************************
          nblignes = IEDoc.getElementsBytagname("tbody")(2).Children.Length ' facultatif c'est pour le message de fin de traitement 
        nbcol = IEDoc.getElementsBytagname("tbody")(2).Children(1).Children.Length  ' facultatif c'est pour le message de fin de traitement
     
    'c'est ici que ca se passe ces 2 lignes remplacent le parseur et le tableau(variable)
        Set DataObj = CreateObject("htmlfile")
      faire = DataObj.ParentWindow.ClipboardData.SetData("text", "<table>" & IEDoc.getElementsBytagname("tbody")(2).ParentNode.innerhtml & "</table>")
     
     
     
     
        IE.Quit
        Set IE = Nothing
        Set IEDoc = Nothing
        With Sheets(1)
            .Cells(1, 1).Select
            .Paste
        End With
        ' facultatif c'est juste pour la visualisation
        With Selection
            .VerticalAlignment = xlCenter
            .HorizontalAlignment = xlCenter
        End With
        MsgBox "la requete a demaré a : " & debut & " et a terminé a : " & Time & vbCrLf & "elle aura donc duré : " & Format(Time - debut, "nn:ss") & " secondes" & vbCrLf & "il ya  : " & nblignes & " lignes et " & nbcol & " colonnes  dans ce tableau"
    End Sub
    je rappelle que cette partie du code sert simplement a remplacer un parseur avec remplissage d'une variable tableau ce qui fait gagner un peu de temps



    ouf j'ai soif moi je vais me prendre une bierre
    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. #204
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Houla Patrick, retiens les chevaux !

    C'est plus simple et tellement logique en fait car c'est l'essence même des objets dans une page web !

    Dans le post #15, ta ligne Set htmlTagCol = IEDoc.getElementsByTagName("tr") repointe continuellement
    une collection au sein de la boucle, et c'est là le problème !
    Car par exemple dans le cas d'une cotation récente de moins de trois mois,
    ta condition htmlTagCol.Length > 100 est aux fraises …

    Pour tester à coup sûr la mise à jour de la table même dans un tel cas, en respectant la règle TBTO,
    il faut pointer avant la boucle d'attente sur une collection de la table visée
    (all par exemple mais cela fonctionne aussi avec cells ou encore rows …)
    puis dans la boucle attendre que la propriété length passe à zéro !
    Ensuite reste à repointer sur la table puis c'est la méthode classique de lecture des cellules de ses lignes …

    En procédant comme dans ton code, on ne peut voir la propriété passer à zéro car en repointant sur la collection
    la propriété reprend toujours la valeur à jour, mais là j'empiète sur ma future contribution …

    __________________________________________________________________________________________
    Jardiland : seul endroit ou si tu prends trois râteaux tu as une pelle offerte !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #205
    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 marc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    temps = IIf(temps = "3m", 60, 120)
         '***************************************************************************
        ' le boucle qui resout le probleme !!!!!!!!!!
        Do: DoEvents: Loop Until IEDoc.getElementsBytagname("tbody")(2).Children.Length > temps
        '*****************************************************************************
    dans les 3 models que j'ai donné la variable temps remplace le 100
    le minimum c'est 68 pour 3 mois après c'est 123,386,etc......
    donc si on demande 3 mois se sera 60 si on demande plus ce sera 120
    120 étant suffisant même pour 10 ans
    si j'ai bien compris ces la boucle elle même qui te gène se serait a cause du test sur la collection
    c'est bien ca ?

    j'avoue que je ne comprends pas bien ta démarche
    il faut pointer avant la boucle d'attente sur une collection de la table visée ------>ca ok je veux bien on peut faire une comparaison dans une boucle après
    (all par exemple mais cela fonctionne aussi avec cells ou encore rows …)
    puis dans la boucle attendre que la propriété length passe à zéro !----> la je ne comprend pas c'est le contraire qui nous faut
    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. #206
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Comme la procédure demande par défaut un historique sur dix ans,
    dans le cas d'une cotation de moins de trois mois d'existence, la valeur sera de facto la même ‼
    Et même pas besoin d'une valeur de temps !

    Il est juste question de savoir à coup sûr quand un objet d'une page web est mis à jour,
    "rafraichi" en quelque sorte, sachant la propriété readyState inutile …

    Et ce n'est pas un problème du VBA comme le supposait itwoo dans son message initial,
    c'est inhérent au fonctionnement d'une page web !

    Donc en pré-pointant sur une collection de l'objet mis à jour avant la boucle,
    en bouclant tant que la propriété lengh n'est pas égale à zéro
    puis en repointant sur l'objet le tour est joué !

    En fait le pointeur avant la boucle est "flashé" ou "effacé" en quelque sorte une fois l'objet à jour.
    Patiente un peu, je vais bientôt poster une démonstration le temps d'effectuer l'adaptation au NASDAQ …

    __________________________________________________________________________________________
    Meurtre de sang froid : un ice crime !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #207
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    itwoo, si tu veux savoir comment contrôler la mise à jour d'une table par le pilotage d'Internet Explorer
    (titre de cette discussion à l'origine, faut-il le rappeler ?! ), voir cette contribution :

    Oui Patrick, toi aussi tu peux y aller !

    Sinon j'ai testé ta version 1.02, pas de souci, m'apparaît un poil plus longue que la précédente
    mais rien de rédhibitoire … Good job !


    __________________________________________________________________________________________
    Sentiments partagés : quand votre belle-mère est en train de reculer dans le ravin avec votre voiture toute neuve …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  8. #208
    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 tous,

    Eh bien vous ne chomez pas
    merci pour tout ca je vais regarder (mais surement semaine prochaine car je rentre juste...)
    A bientôt

  9. #209
    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 FORMIDABLE
    Bonjour,

    Bravo ca marche nickel!!!

    Merci à vous tous, le temps de regarder tous vos posts et commentaires faire un peu de tests complémentaires et je mets résolu.
    Pour info temsp de chargment des 72 pages entre 35-50 secondes suivant la vitesse de connexion (qui n'est pas du haut débit visiblement)
    A bientôt

  10. #210
    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
    ho!!! non pas résolu déjà

    t'a une autre exercice a faire je vais m'ennuyer moi maintenant
    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. #211
    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
    Hello,

    Vérification toujours en cours mais apparemment tout marche
    Patrick en remettant de l'ordre, en rangeant...c'est là que je me rends vraiment compte que tu as fait un travail de ouf...
    Qwaz a bien aidé aussi avec toutes ses suggestions pertinantes...
    Pour la suite oui j'ai bien des idées mais tout d'abor tests et retests + finir de lire tous les messages (dont Marc et ses bonnes idées ) =>donc pas avant fin aout au mieux désolé
    Mais ne t'inquiéte pas ca va venir
    A bientôt

  12. #212
    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
    ok a plus

    au passage j'en rajoute encore une couche
    voila un exemple simple pour Nasdaq abbv
    et en cadeau je te propose de styler la feuille de calcul excel avec du css prévu pour styler les page html
    non vraiment il est fou ce toulonnais!!!!
    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
    Sub nasdaq()
    Columns("A:F").Delete
    faire_ceci_ou_cela = colle_moi_ca_dans_le_sheet("http://www.nasdaq.com/symbol/abbv/historical", "10y|false|abbv", Cells(1, 1), True)
    End Sub
    Function getsource(url, Optional argmts = "")
    With CreateObject("microsoft.xmlhttp")
    .Open "POST", url, False
    'entete de la requette obligatoire pour ce site(ne fonctionne pas sans )
    .setRequestHeader "Accept", "*/*"
    .setRequestHeader "Content-Type", "application/json"
    .setRequestHeader "X-Requested-With", "XMLHttpRequest"
    .setRequestHeader "Referer", "http://www.nasdaq.com/symbol/f/historical"
    .setRequestHeader "Accept-Language", "fr-FR"
    .setRequestHeader "Accept-Encoding", "gzip, deflate"
    .setRequestHeader "User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"
    .setRequestHeader "Host", "www.nasdaq.com"
    .setRequestHeader "Content-Length", "11"
    .setRequestHeader "DNT", "1"
    .setRequestHeader "Connection", "Keep - Alive"
    .setRequestHeader "Cache-Control", "no-cache"
    .send argmts
    getsource = .responsetext
    End With
    End Function
    Function colle_moi_ca_dans_le_sheet(url, argmts, cel, avec_style)
    Dim lestyle
    Set Fpage = CreateObject("htmlfile")
    code = ""
    With Fpage
              .write getsource(url, argmts)
                 Set tablelig = .getelementsbytagname("tr")
         For i = 2 To tablelig.Length - 1
         tablelig(i).Children(0).innertext = Format(tablelig(i).Children(0).innertext, "dd/mm/yyyy")
         Next
              If avec_style Then
            code = codestyle(Fpage)
          Else: code = .body.outerhtml
          End If
     
           faire = .ParentWindow.clipboardData.SetData("text", code)
            With Sheets(1): cel.Select: .Paste: End With
            Selection.HorizontalAlignment = xlLeft
           faire = .ParentWindow.clipboardData.ClearData("text")
           End With
    End Function
     
    Function codestyle(pagehtml)
    With pagehtml
    code = .getelementsbytagname("table")(0).outerhtml
    Set tablo = .getelementsbytagname("tr")
    tablo(0).classname = "entete"
    For i = 2 To tablo.Length - 1 Step 2
    tablo(i).classname = "couleur1"
    tablo(i - 1).classname = "couleur2"
    Next
    code = .body.outerhtml
    End With
    codestyle = codestyle & "<style type=""text/css"">" & vbCrLf
    codestyle = codestyle & ".couleur1{background:#81DAF5;color:#585858;}" & vbCrLf
    codestyle = codestyle & ".couleur2{background:#A9E2F3;color:#585858;}" & vbCrLf
    codestyle = codestyle & ".entete{background:#0B2161;color:red;height:100px; border:solid 1px #0040FF;}"
    codestyle = codestyle & "tr{ border:solid 1px #585858;}" & vbCrLf
    codestyle = codestyle & "</style>" & vbCrLf
     
    codestyle = codestyle & code
    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

  13. #213
    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
    marc pour explication:
    on récupère le code html de la table

    ensuite on créé le code CSS pour le style
    dans le .ParentWindow.clipboard de IE accessible puisque un object "htmlfile" a été créé ,on colle le code css et le code html
    ensuite on paste

    ca a pour effet de faire un paste avec le theme

    j'avais découvert ca par accident l'ors d'une de mes expérience je n'arrivais pas a le reproduire maintenant c'est bon c'est métrisé

    reste a métriser le css mais alors la c'est vraiment pas compliqué du tout voila si tu regarde cet exemple il y a je crois 6 ou 7 ligne de code pour syler les bordure doite,gauche,haute et basse de chaque cellule
    le background le font ect....
    bref on peut tout gerer

    on pourrais meme faire l'inverse ,je m'y etais déjà plusieurs fois essayé
    styler une plage directement de la feuille de calcul
    il suffirait de transformer dans un fichie html local(createobject("htmlfile")la plage voulue en table html j'ai donné plusieurs exemple sur ce point déjà
    ensuite pareil créer le code CSS et mettre en clipboard et re paster le tout sur la feuille
    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. #214
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut





    Merci Patrick pour ces infos !


    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  15. #215
    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
    Hello,

    ok merci le temps de tout voir et a bientôt

  16. #216
    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 a tous les deux

    j'ai essayé de récupérer le code du style d'origine de la page Nasdaq pour faire un travail parfait mais apparemment je n'ai pas le droit
    marc une idée??????
    dans le code Nasdaq de la page ca commence a partie de gobal stylesheet
    il a les lien vers les CSS pour IE 7,8,9et plus
    j'ai mis ces lien dans la requête mais que nenni il veut pas me le donner

    c'est dommage j'aurais voulu lui servir un module qui lui restitue a l'identique juste pour le fun

    je sais le faire avec IE mais avec une requête c'est plus difficile
    avec IE
    on ouvre IE Nasdaq
    boucle de marc
    on récupère le code html de toute la page
    on fait
    document.body.innerthtml = getelement.......outerthtml pour la table
    ce qui reviens a tout supprimer entre les balise body et mettre que la table
    ainsi on se retrouve avec la page complète mais que la tablé dans le body
    on fou en clipboard et on paste
    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. #217
    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,

    Ah oui là tu as encore amélioré la méthode Patrick...a chaque version une amélioration
    a bientôt pour la suite

  18. #218
    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

    oui plus ou moins on arrive a trouver des solutions plus propres avec le temps

    pour résumer:

    tu a une version Nasdaq f qui est a peut prêt la même que abbv(le dernier exemple stylé)

    tu a un exemple Euronext

    tu a un exemple Euronext all equities v1.02(multiple requête externe en vbs, 74 pages en moins de 50 secondes avec un peu de formatage des cellules en plus )"méthode abeilles de marc"

    de qui peut différer dans la méthode avec requête c'est l'argument soit dans le send soit la modification de l'url) comme on la vu entre nasdq et Euronext

    en tout cas pour savoir quelle méthode choisir utiliser mon copain F12 et faire les opérations manuellement et voir ce que la capture réseaux te donne ( méthode expliqué dans la piqure de rappel dans le post de marc dans mon message piqure de rappel )

    marc t'a donné la solution avec IE (avec sa boucle sur le .length des enfants de la table )

    tu a maintenant le choix de la méthode

    mais arrête de t'attarder voir si on trouve pas mieux car la je crois que l'on a fait le tour en ce qui concerne la récupération d'une table(HTML) dans une feuille de calcul
    ensuite pour comprendre le fonctionnement il faut commencer par les base (vba/html)
    le tutoriel de qwazerty est très bien pour démarrer quand tu auras bien digéré tu verra que ce que l'on t'a donné te paraitra bien simple

    j'attend maintenant un exercice encore plus difficile a moins que tu es tout digéré et que tu y arrive a le faire toi même
    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. #219
    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
    Hello,

    Merci Pat pour tout et oui oui ca commence à venir
    Mais ca en fait des choses à apprendre, comprendre...mais quel bonheur...
    Faut encore aussi regarder les abeilles de Marc...
    Pour info tout marche jusqu'à maintenant...
    Merci à Qwaz
    Et tout les autres aussi...
    Pour la suite t'inquiéte patrick j'ai une petite idée mais d'abord faut finir de mon côté de tout analyser et vérifier...pas avant fin septembre comme c'est parti
    Bon allez un grand merci a tous et probléme RESOLU
    A+

  20. #220
    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 max et ben dis donc haleluya!!!!!
    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