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

Contribuez Discussion :

[Pilotage Internet Explorer] Comment attendre la mise à jour d'un élément d'une page web …


Sujet :

Contribuez

  1. #101
    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 d'accord je reviens vers toi dés que fini de lire tous les commentaires sur l'autre post...
    Marc c'est vrai quand revoyant ton code et bien il est vraiment propre ton code et en plus avec le CTRL+G le debug.print et les . ca permet de bien naviguer dans la page tout en si retrouvant
    A bientôt

  2. #102
    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 Nous partîmes de un, nous arrivâmes à 102 …

    Avant d'aborder une variante …

    … Le principe ne change pas : attendre la valeur zéro de la propriété length d'une collection d'un élément.

    Tout dépend d'une condition : pointer correctement au préalable le bon élément

    Peu importe la collection, cela peut aussi être une propriété de l'élément vidée par la mise à jour
    (comme innerHTML), du moment que l'élément est figé dans son statut d'avant mise à jour

    Dans le cas concret de la discussion d'itwoo (voir en première page), le résultat a été trop focalisé,
    à savoir récupérer une table d'une page de cotations depuis le site NASDAQ.
    Or cette table ne dispose pas de propriété id, name, … permettant de l'identifier à coup sûr !

    Lors d'un changement récent de l'index de cet élément dans la collection des tables dans le code source
    de la page web, la contribution d'origine s'est retrouvée logiquement prise en défaut …

    Certains scanneraient toutes les tables en cherchant un repère l'identifiant
    comme par exemple le titre de la première colonne "Date" …
    Ou encore comme dans le post #42 en pointant directement l'avant-dernière table et en vérifiant ce titre.
    Mais ce serait comme un collège de neurologues au chevet d'un VIP fouillant les méandres de son cerveau
    sans voir l'origine de l'infection se situant dès la boîte crânienne !


    Un train peut en cacher un autre …

    Lors du changement de la période de l'historique, la table visée n'est pas la seule à être mise à jour :
    l'en-tête juste au dessus blanc sur fond bleu indiquant la période l'est aussi …
    Cet élément et la table ayant le même niveau hiérarchique, en remontant juste d'un cran
    leur élément parent dispose lui d'un identifiant : "quotes_content_left_pnlAJAX" …
    Du reste via l'inspection du code renvoyé lors de la requête, cet élément apparaît dès la première ligne, Bingo !


    De la filiation objet se dévoile une variante

    Comme l'élément parent contient deux éléments, l'en-tête et la table elle-même,
    il suffit de verrouiller cet élément parent pour attendre la fin de la mise à jour puis
    de pointer de nouveau ce parent sur son deuxième élément pour lire la table à jour !

    A coller directement dans le module d'une feuille de calculs :
    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
    Sub DemoNASDAQieB()
        Const QUOTE$ = "abbv", TXT$ = "        Import en cours "
        Application.StatusBar = "        Connexion …"
     
        With CreateObject("InternetExplorer.Application")
            .Navigate "http://www.nasdaq.com/symbol/" & QUOTE & "/historical"
            D! = Timer:  F! = D + 9
     
            Do While .Busy Or .ReadyState < 4
              If Timer < D Then F = F - 86400: D = 0
              If Timer > F Then F = 0: .Stop: Exit Do
            Loop
     
            If F Then
                With .Document.getElementsByName("quotes_content_left_pnlAJAX")
                    If .Length = 1 Then
                        With .Item(0).Children
                               D = .Length = 2
                            If D Then
                                With .Item(0).Document
                                    H$ = .Title:   Application.StatusBar = TXT & " …"
                                    With .all("ddlTimeFrame"):  .Value = "10y": .onchange:  End With
                                End With
     
                                While .Length:  DoEvents:  Wend
                            End If
                        End With
     
                        If D Then T$ = .Item(0).Children(1).outerHTML
                    End If
                End With
            End If
     
            .Quit
        End With
     
        If T = "" Then
            If F Then Beep Else MsgBox "Le site rame !", vbExclamation, "           NASDAQ"
        Else
            With CreateObject("HTMLFile")
                                  .write T
                With .all(4).Rows
                    ReDim VA(1 To .Length, 1 To .Item(0).Cells.Length)
     
                    For R& = 1 To .Length
                        Application.StatusBar = TXT & ": " & Format$(R, "@@@@")
     
                        With .Item(R - 1).Cells
                            For C& = 1 To .Length:  VA(R, C) = .Item(C - 1).innerText:  Next
                        End With
                    Next
                End With
            End With
                       Application.ScreenUpdating = False
            With [B1]:  .CurrentRegion.Clear:  .IndentLevel = 1:  .Value = H:  End With
     
            With [B2].Resize(UBound(VA), UBound(VA, 2))
                With .Columns("B:E")
                    .HorizontalAlignment = xlRight:  .IndentLevel = 1:  .NumberFormat = "0.0000"
                End With
                    .Cells(2, 1)(1, 0).Select:  ActiveWindow.FreezePanes = True
                With .Rows(1):  .Font.Bold = True:  .HorizontalAlignment = xlCenter:  End With
                                         .Columns(1).HorizontalAlignment = xlCenter:  .Value = VA
                If .Cells(2, 1).NumberFormat <> .Cells(3, 1).NumberFormat Or _
                   .Cells(2, 1).Text = "" Then .Rows(2).Delete
            End With
        End If
     
        Application.StatusBar = False
    End Sub
    • Ligne n°2 : la constante QUOTE contient le code de la cotation, c'était la base d'un test bouclant des cotations …

    • Lignes n°7 à 12 : utilisation de Timer au cas où le site rame …

    Variables D pour début et F pour fin (je me suis déchiré sur ce coup là !),
    les 9 secondes de pseudo timeout peuvent être augmentées pour un ordinateur lent
    (principaux tests sur processeurs i3 - 2.4GHz et i5 - 2.5Ghz) …
    Variables servant ensuite de Drapeau (Flag) conditionnant le processus.

    • Ligne n°15 : pointage de l'élément parent de la table.

    En fait, pas tout à fait ! .getElementsByName renvoyant une collection même pour un seul élément …
    .all et .getElementByID pointent directement sur l'élément mais déclenchent une erreur s'il n'existe pas
    dans la page, .getElementsByName renvoie alors une collection vide dont la propriété length vaut zéro,
    pas d'erreur possible !

    • Ligne n°16 : s'il existe un seul élément dans la collection … (déjà vu sur le site NASDAQ des pages sans)

    • Ligne n°17 : verrouillage de l'élément parent sur une de ses collections.

    • Ligne n°18 & 19 : si la collection contient bien deux éléments … (déjà vu sur le site NASDAQ des pages sans)

    • Ligne n° 20 : retour temporaire au sommet de la page (Document).

    Impossible de me résoudre à déclarer une variable objet pour l'utiliser seulement une fois …
    Comme des raccourcis d'objets parents sont présents au sein de leur filiation, autant en profiter !

    • Ligne n°21 : stockage du titre de la page et information dans la barre d'état de l' « Import en cours … »

    Avant ce point, la barre d'état affiche « Connexion … », utile pour différencier où cela bloque …

    • Ligne n°22 : demande de la mise à jour de l'historique.

    • Ligne n°23 : fin du pointage temporaire vers le Document, retour au pointage précédent (en ligne 17) …

    • Ligne n°25 : l'immuable boucle d'attente de la mise à jour !

    Rappel : sortie de boucle lorsque la valeur vaut zéro,
    évènement lié au pointeur devenu obsolète - vide - après la mise à jour …

    • Ligne n°29 : stockage du code HTML de la table à jour …
    … via un nouveau pointage de l'élément parent sur son deuxième élément.

    Rappel : le premier élément d'une collection a pour index zéro, un pour le deuxième élément, …

    Peu d'ajustements quant aux conversion et mise en page des données :

    • Ligne n°42 : le code stocké contenant uniquement la table, autant pointer directement sur son élément.

    • Ligne n°55 : affichage du titre de la page indiquant la cotation de la table pour mémoire …

    • Ligne n°61 : (1, 0) est équivalent à .Offset(0, -1)

    Testé sur les versions d'Excel 2003 & 2007, sait-on jamais sur les versions ultérieures …

    • Ligne n°65 : parfois la ligne indésirable est vide.

    Edit : Tests sous Windows 7 & 8, Internet Explorer 9, 10 et 11. Voir le post #110 …

    En guise de conclusion …

    Dans la contribution initiale comme dans cette démonstration, la méthode est restée la même !
    Juste ont changé l'élément pointé et la collection, prouvant bien l'universalité de cette méthode …

    Voilà pour le principe, se conformant à l'esprit de cette règle : Think, But Think Object !
    (A voir sur des tee-shirts lors de conventions de développeurs !)
    En gros c'est étudier la hiérarchie des objets, utiliser à bon escient leur structure,
    optimisant et simplifiant ainsi le code, d'aucuns pourraient même le trouver beau !

    … une évolution à l'horizon !

    Ce code, fonctionnant à merveille pendant deux semaines, même après la modification du code
    source des pages de cotations, samedi pendant toute une demi-journée affichait "Le site rame !"
    mais aucun problème pourtant via des bibliothèques de requêtes !

    Imaginer alors un site sur lequel ni une requête ni un objet QueryTable n'est utilisable !
    Que faire si seul reste le pilotage d'Internet Explorer ?
    Comment ne pas rester bloqué pendant des heures ?!

    _________________________________________________________________________________________________
    L'échec est la voie du succès …
    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)

  3. #103
    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 Jamais 102 103 !

    De l’Utopie …

    La démonstration précédente est vraiment idéale, enfin dans un monde Web digne des Bisounours !


    Aucun souci à l’horizon si le site ne rame jamais, sans surcharge ni période de maintenance …

    … à la Pantopie !

    Samedi prêt à publier cette variante promise, un dernier test me surprend, les suivants me prennent au dépourvu !
    La procédure pourtant éprouvée depuis une quinzaine, ayant passé avec succès le piège du changement du numéro
    d’index de la table n’affiche plus de donnée tout à coup mais juste le message « Le site rame ! »
    Et ce pendant une bonne dizaine d’heures, une requête via une bibliothèque XmlHttp n’étant même pas affectée !
    Et vu le mouchard dans la barre d’état « Connexion … » il y a un blocage au chargement initial de la page,
    bien avant de pouvoir ordonner la mise à jour de l’historique …

    Confirmation en testant la classique ligne de code While .Busy Or .ReadyState < 4: DoEvents: Wend :
    cette boucle nécessitait de 25 à 90 secondes, un gouffre comparativement aux 6 secondes habituelles !
    Revenir donc en arrière pourrait être une solution : patience est source de données !
    Cela est encore acceptable pour une seule page mais s'il est question d'en interroger plusieurs,
    ayant déjà vu des sites à l'Ouest ne rien renvoyer après plusieurs minutes, autant l'éviter !

    La fin de semaine semble de nouveau propice au site NASDAQ pour réserver une surprise …
    Au passage, avez-vous remarqué en semaine le titre de la page commence par le nom de la cotation
    précédant son code entre parenthèses et, en fin de semaine, pas de nom, juste le code et les parenthèses ?!
    Un sous-serveur serait-il de repos lors de la fermeture hebdomadaire des marchés financiers ?! …


    De l’observation …

    Via un navigateur, la page de la cotation abbv semble se charger normalement
    mais la cotation f a effectivement un sablier animé s’éternisant dans le titre de sa page …
    Durant ce chargement long, les données sont bien présentes comme à l’accoutumée !

    … naît l’intuition !

    D’aucune gêne la requête ne souffrant, le problème pourrait donc être contourné :
    l’ossature de la page bâtie, serait-il possible dès lors d’interagir avec elle,
    sans attendre la fin de son chargement anormalement récalcitrant ?!
    A tenter car, d’après Albert, celui qui n’a jamais fait d’erreur n’a jamais rien essayé de nouveau. (Einstein)

    De l’intuition révélatrice !

    Du reste je m’y attèle dans le navigateur et cela marche, même si la page n’est pas complètement chargée !
    En consultant le site MSDN quant aux autres valeurs de la propriété ReadyState d’Internet Explorer,
    le stade 3 indique la possibilité d’interagir donc avec la page, des objets pouvant être absents …

    A coller de préférence dans le module d'une feuille de calculs :
    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
     Sub DemoNASDAQieV()
        Const QUOTE$ = "abbv", TXT$ = "        Import en cours "
        Application.StatusBar = "        Connexion …"
     
        With CreateObject("InternetExplorer.Application")
            .Navigate "http://www.nasdaq.com/symbol/" & QUOTE & "/historical"
            D! = Timer:  F! = D + 8
     
            Do While .Busy Or .ReadyState < 4
              If Timer < D Then F = F - 86400: D = 0
              If Timer > F Then
                  If .ReadyState < 3 Then F = 0: .Stop
                  Exit Do
              End If
            Loop
     
            If F Then
                With .Document.getElementsByName("quotes_content_left_pnlAJAX")
                    If .Length = 1 Then
                        With .Item(0).Children
                               D = .Length = 2
                            If D Then
                                With .Item(0).Document
                                    With .all("ddlTimeFrame")
                                        .Value = "10y"
                                        On Error Resume Next
                                        .onchange:  F = Err.Number = 0
                                        On Error GoTo 0
                                    End With
     
                                    If F Then H$ = .Title: Application.StatusBar = TXT & " …"
                                End With
     
                                If F Then While .Length: DoEvents: Wend
                            End If
                        End With
     
                        If D And F Then T$ = .Item(0).Children(1).outerHTML
                    End If
                End With
            End If
     
            .Quit
        End With
     
        If T = "" Then
            If F Then Beep Else MsgBox "Le site rame !", vbExclamation, "           NASDAQ"
        Else
            With CreateObject("HTMLFile")
                                  .write T
                With .all(4).Rows
                    ReDim VA(1 To .Length, 1 To .Item(0).Cells.Length)
     
                    For R& = 1 To .Length
                        Application.StatusBar = TXT & ": " & Format$(R, "@@@@")
     
                        With .Item(R - 1).Cells
                            For C& = 1 To .Length:  VA(R, C) = .Item(C - 1).innerText:  Next
                        End With
                    Next
                End With
            End With
                       Application.ScreenUpdating = False
            With [B1]:  .CurrentRegion.Clear:  .IndentLevel = 1:  .Value = H:  End With
     
            With [B2].Resize(UBound(VA), UBound(VA, 2))
                With .Columns("B:E")
                    .HorizontalAlignment = xlRight:  .IndentLevel = 1:  .NumberFormat = "0.0000"
                End With
                    .Cells(2, 1)(1, 0).Select:  ActiveWindow.FreezePanes = True
                With .Rows(1):  .Font.Bold = True:  .HorizontalAlignment = xlCenter:  End With
                                         .Columns(1).HorizontalAlignment = xlCenter:  .Value = VA
                If .Cells(2, 1).NumberFormat <> .Cells(3, 1).NumberFormat Or _
                   .Cells(2, 1).Text = "" Then .Rows(2).Delete
            End With
        End If
     
        Application.StatusBar = False
    End Sub
    • Ligne n°12 : en cas de timeout dans le chargement de la page, prise en compte du stade 3 du ReadyState.

    • Lignes n°26 à 28 : même si les objets sont présents, le script d’onchange peut manquer à l’appel !

    Déclenchant alors une erreur automation logique mais fatale …
    Une première possibilité de contrôle dans ce cas est de vérifier
    si le code est présent dans le dernier élément de la collection des scripts.
    J’ai préféré gérer une éventuelle erreur car, échaudé par la modification de l'index de la table,
    rien n’assure à l’avenir le script rester le dernier de sa collection !

    • Lignes n°31, 34 & 38 : sans erreur, le processus continue …

    Cette variante a été testée avec succès samedi durant le chargement complet anormalement long des pages.
    Tard dans la soirée, retour à la normale, la démonstration du précédent post n'étant plus à la peine …


    De la théorie à la pratique, en guise de conclusion !

    Même si dans le cas de la discussion d’itwoo une requête est bien plus efficace et rapide,
    le support d’un cas concret me semble bien plus pédagogique qu’un simple exposé théorique !

    Sachant parfois la nécessité de piloter Internet Explorer malgré tout,
    d’aucuns trouveraient leur compte dans cette contribution …

    Et n’oubliez pas le guide !

    _________________________________________________________________________________________________
    Le but principal de l’enseignement mathématique est de développer certaines facultés de l’esprit et parmi elles l’intuition n’en est pas la moins précieuse.
    C’est par elle que le monde mathématique reste en contact avec le monde réel et, quand bien même les mathématiques pures pourraient s’en passer,
    il faudrait toujours y avoir recours pour combler l’abîme séparant le symbole de la réalité …
    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)

  4. #104
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    salut marc

    en fait quand tu dis que le site rame

    ca n'est pas tout a fait ca

    ce que tu n'a pas remarqué!!!!

    en fait :j'avais découvert une chose intéressante il y a un petit moment et pour cause je travaille dessus depuis plus de 8 mois avec itwoo

    quand tu travaille avec IE que tu manipule les élément par vbs (combobox ,bouton , etc......) la page crée la requête de la même manière que nous par vba jusque la rien de compliqué

    mais c'est en fait l'astuce elle même qui génère une non stabilité en fonction de la bande passante et de la fréquentation du site

    j'explique
    une fois piloté les éléments

    la mise en route de la boucle sur le length saute d'autre étapes importantes
    et donc comme nous savons bien que la requête sans header chez Nasdaq ne fonctionne pas en pilotant IE avec des astuces de ce genre la fonction du combo box envoie une requête mal rédigée
    alors quoi?

    1fois,2fois,3fois,etc....) au bout de 5 fois et bien c'est tout simple
    va boire un café et reviens dans 30 minute et recommence

    comme beaucoup de site si la requête est mal rédigée et envoyée trop de fois ca plante et gèle la page c'est le cas pour DVP aussi
    de même que des requête envoyée pas assez espacées dans un temps défini ca gèle aussi la page

    et voila que l'on se retrouve avec le curseur de seven(pour moi) qui tourne , qui tourne,....)

    je pensais que tu avais déjà remarqué ce détail !?

    a bon entendeur
    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. #105
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    RE
    pour éviter tout ces soucis je suis en train de faire une autre méthode(IE)
    qui consiste a lancer directement la fonction JS lancée par la combo
    edit /
    ce qui revient a demander a IE de rédiger la requête dynamiquement

    bon.... IE pour 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

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


    Patrick, tu n'as pas bien lu mes messages car le site ramait bien ‼

    Depuis plus d'un mois je teste le site NASDAQ : jamais je n'ai eu un tel souci !
    Cela arrive qu'une procédure renvoie juste un bip indiquant qu'un élément est manquant.
    C'est ce que tu décris et je l'ai déjà évoqué récemment : deux échecs puis le troisième passe dans la même minute

    Mais là comment expliques-tu un code valide depuis au moins quinze jours tout d'un coup serait à l'Ouest
    sans modification du code source de la page (même avec le changement d'index de la table) ?
    Et ce durant quasiment une demi-journée (ce n'était pas 30 minutes là ‼) et sur plusieurs ordinateurs !
    Et puis sans rien modifier de mon côté, tout refonctionne de nouveau …

    Et comme je l'ai pourtant indiqué dans mon précédent message, je l'ai constaté visuellement
    en utilisant un navigateur (et ce n'était pas Internet Explorer !), le site ramait bien
    car l'animation dans l'onglet en haut de la page restait bien trop longtemps …
    J'ai aussi mentionné ce n'était pas un problème de requête interne
    car l'historique initial de la page se chargeait pourtant comme d'habitude (en moins de dix secondes) …

    J'ai aussi précisé quand la variante B (pour Bisounours !) échouait,
    l'ancien code avec la boucle classique fonctionnait bien mais il fallait être patient …

    Doutant à un moment de ma connexion (aucun souci sur d'autres sites au passage …),
    j'ai profité de l'appel d'un ami pour lui demander d'ouvrir des pages dans son navigateur :
    de son côté aussi elles étaient bien longues pour se charger complètement !

    Vu la tartine dans mes messages, je n'ai pas tout détaillé !
    Une fois une page totalement chargée, j'ai bien sûr vérifié son code source, rien ne manquait !

    Habituellement, une page d'une cotation NASDAQ met de 5 à 7 secondes pour totalement se charger.
    Quand le site ramait, il fallait jusqu'à 90 secondes, la variante B arrêtant les frais après 9 secondes …

    Si cela avait été un problème de requête interne, la variante V n'aurait pu charger les bonnes données …
    Quand la B ne fonctionnait pas - à part le message le site rame ! - la V chargeait bien l'historique sur dix ans !


    Patrick, moins vite lire tu dois !





    Modification de la ligne n°12 du code du post #103 : ajout de l'instruction .Stop comme dans le post #102 …

    Patrick, quand j'évoque l'animation dans l'onglet de la page, c'est dans le titre tout en haut de la fenêtre,
    cela n'a rien à voir avec le gif animé détecté par Stéphane lors de la mise à jour de l'historique …
    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. #107
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    ton ip est refusée car la dernière réponse après un bug n'a pas été envoyé donc pas recue

    quand tu jongle même si c'est très rapide tu ne peut pas attraper une balle et en envoyer une autre de la même main

    juste au passage regarde la fonction je suis sur que tu va avoir la meme idée que moi

    prise tel quel dans le code source :

    <

    scriptlanguage="javascript"type="text/javascript">


    var baseUrl = document.location.href;

    $(
    "[id$='submitString']").val('');


     


    function getQuotes(download)

    {


    if(!download)

    showLoadingSpinner();




    var data = $("[id$='ddlTimeFrame']").val();


    var submitString = data + '|' + download + "|" + quoteBoxSelectedSymbol; if (!download) {

    $.ajax({

    type:
    "POST",

    url: baseUrl,

    data: submitString,

    contentType:
    "application/json",

    success:
    function (response) {

    $(
    "[id$='historicalContainer']").html(response);

    $(
    ".genTable tbody tr:odd").addClass("genTablealt");

    hideLoadingSpinner();

    }

    });

    }


    else {

    $(
    "[id$='submitString']").val(submitString);

    $(
    "#getFile").submit();

    }



    }

    t'inquete j'ai bien lu
    regarde bien la fonction mais alors bien..bien..bien si je te dis qu'en local on peut l'avoir tu vois ce que je veux dire
    regarde bien...bien...bien


    et le fait que si la requête interne bugue on aurait pas la grille basique(3mois) tu te trompe elle est écrit en dur dans le code il n'y a donc pas de load pour la base au démarrage de l'affichage
    juste le temps nécessaire a l'affichage en fonction du travail qui a été fait en amont (load autre données,css, etc...)
    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. #108
    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

    Citation Envoyé par patricktoulon Voir le message
    ton ip est refusée car la dernière réponse après un bug n'a pas été envoyé donc pas recue
    Mais non, cela n'avait rien à voir ‼

    Citation Envoyé par Marc-L Voir le message
    Quand la B ne fonctionnait pas - à part le message le site rame ! - la V chargeait bien l'historique sur dix ans !
    Déjà, si cela avait été un problème d'IP refusé, la V n'aurait pas plus fonctionné que la B ‼

    De plus, en utilisant Firefox l'historique initial des trois mois de chargeait comme d'habitude en moins de 10 secondes
    - attestant bien que ce n'était pas un problème de requête ou de réponse et encore moins d'IP ! - mais le repère visuel
    du chargement de la page initiale tout en haut de la fenêtre dans l'onglet (l'un des intercalaires différenciant les pages ouvertes)
    continuait de tourner pendant de longues secondes (moyenne de 40s) …

    Cela se passait donc au niveau du chargement initial de la page - même avec l'historique en dur ! - car de toute manière
    le changement d'historique n'a même pas été demandé car la variante B arrête la procédure après 9 secondes ‼
    Regarde son code, l'affichage dans la barre d'état de « Connexion … » indique que la page est toujours en cours de chargement.
    De plus, lorsque onchange est lancé, la barre d'état affiche « Import en cours … », je ne peux donc confondre ‼

    Je voulais poster samedi matin ma variante avant de m'absenter en fin de matinée, râpé !
    Les ordinateurs ont été éteints pendant deux bonnes heures et même souci en début d'après midi.
    J'ai même éteint mon routeur câble 100Meg pendant un p'tit quart d'heure, cela a continué quelques heures durant !

    Et puis quand j'ai demandé à l'ami au téléphone, habitant une autre région donc une IP bien différente et un autre FAI,
    il a constaté dans son navigateur la difficulté du site à terminer de charger la page, bref le site ramait bien !


    Sinon le script que tu as posté est bien celui d'onchange, le dernier de la collection des scripts;
    depuis plusieurs semaines j'ai bien l'idée en tête, j'ai le même besoin sur un autre projet mais je n'ai guère progressé …
    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)

  9. #109
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    De plus, lorsque onchange est lancé, la barre d'état affiche « Import en cours … », je ne peux donc confondre ‼
    ou ca?

    oupsss c'est vu!!!!!
    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

  10. #110
    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 Hier le site ne ramait pas, moi si ‼

    Question importante :

    Patrick, itwoo, j'aimerais savoir si vous avez testé les codes des posts #102 & #103
    et connaitre les versions de Windows et d'Internet Explorer ? Merci !


    Hier …

    Cela faisait quelques temps qu'on me parlait d'une procédure pilotant IE fonctionnant bien partout
    sauf sur un ordinateur portable particulier, la personne me déclarant normal c'est Windows 8 !

    Il a fini par me le déposer hier en me prévenant qu'il avait été bien vérolé
    Effectivement la procédure ne fonctionne pas, n'y trouvant rien en apparence mais doté de similitudes
    avec cette contribution, je me connecte sur ce site afin de recopier le code du post #103.
    Idem, juste le bip indiquant qu'il manque quelque chose … Entre-temps ayant vu des choses pas nettes,
    je mets cela sur le compte de l'état de l'ordinateur, faudrait commencer par réinstaller le système proprement …

    Débarque une autre personne me confiant son portable pour lui configurer une application …
    Une fois achevée, ce portable étant aussi sous Windows 8, j'effectue le même test :
    même bip et là je ne peux incriminer l'ordinateur !

    J'ai testé un troisième portable en Windows 7 et IE9 sur la même connexion Ethernet : aucun souci !
    Les deux premiers portables ne disposent pas de la même version d'Excel, l'un est en Windows 8 Pro, l'autre non,
    mais les deux disposent d'Internet Explorer 10 …

    J'ai fini par identifier le problème : les deux procédures ont en commun getElementsByName !
    En utilisant une variable objet je me suis aperçu qu'elle était vide …

    En utilisant all ou getElementByID, les deux procédures fonctionnent !
    L'explication en serait simple : comme l'élément ne dispose pas de propriété name, getElementsByName ne trouve rien !
    Mais pourtant pas de souci avec Windows 7 & IE9 …

    Je penche plutôt du côté d'IE que de Windows, voire peut-être une combinaison des deux …
    J'avais pourtant effectué des tests, c'est à rien n'y comprendre !
    Mais bon, mieux vaut prévenir que guérir … Du coup Patrick, méfie-toi aussi en VBScript !

    Si quelqu'un passe par là et peut tester le code du post #103 sous Windows 7 et IE10 ou IE11, merci d'avance !


    Une variante de la variante !

    Celle-ci fonctionne sous Windows 7 + IE9 et Windows 8 + IE10 …
    La méthode ne change évidemment pas, juste la manière de pointer l'élément disposant d'un identifiant.
    Regarder la ligne n°3, les lignes n°19 à 21 (en particulier la n°20) et la ligne n°39, le reste étant identique au post #103 …

    A coller dans le module d'une feuille de calculs :
    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
    Sub DemoNASDAQieW()
        Const QUOTE$ = "abbv", TXT$ = "        Import en cours ", _
                               ELM$ = "quotes_content_left_pnlAJAX"
              Application.StatusBar = "        Connexion …"
     
        With CreateObject("InternetExplorer.Application")
            .Navigate "http://www.nasdaq.com/symbol/" & QUOTE & "/historical"
            D! = Timer:  F! = D + 8
     
            Do While .Busy Or .ReadyState < 4
              If Timer < D Then F = F - 86400: D = 0
              If Timer > F Then
                  If .ReadyState < 3 Then F = 0: .Stop
                  Exit Do
              End If
            Loop
     
            If F Then
                With .Document
                    If IsObject(.all(ELM)) Then
                        With .all(ELM).Children
                               D = .Length = 2
                            If D Then
                                With .Item(0).Document
                                    With .all("ddlTimeFrame")
                                        .Value = "10y"
                                        On Error Resume Next
                                        .onchange:  F = Err.Number = 0
                                        On Error GoTo 0
                                    End With
     
                                    If F Then H$ = .Title: Application.StatusBar = TXT & " …"
                                End With
     
                                If F Then While .Length: DoEvents: Wend
                            End If
                        End With
     
                        If D And F Then T$ = .all(ELM).Children(1).outerHTML
                    End If
                End With
            End If
     
            .Quit
        End With
     
        If T = "" Then
            If F Then Beep Else MsgBox "Le site rame !       ", vbExclamation, "NASDAQ"
        Else
            With CreateObject("HTMLFile")
                                  .write T
                With .all(4).Rows
                    ReDim VA(1 To .Length, 1 To .Item(0).Cells.Length)
     
                    For R& = 1 To .Length
                        Application.StatusBar = TXT & ": " & Format$(R, "@@@@")
     
                        With .Item(R - 1).Cells
                            For C& = 1 To .Length:  VA(R, C) = .Item(C - 1).innerText:  Next
                        End With
                    Next
                End With
            End With
                                  Application.ScreenUpdating = False
            With [B1]
                .CurrentRegion.Clear
                .Resize(, UBound(VA, 2)).HorizontalAlignment = xlCenterAcrossSelection:  .Value = H
            End With
     
            With [B2].Resize(UBound(VA), UBound(VA, 2))
                With .Columns("B:E")
                    .HorizontalAlignment = xlRight:  .IndentLevel = 1:  .NumberFormat = "0.0000"
                End With
                    .Cells(2, 1)(1, 0).Select:  ActiveWindow.FreezePanes = True
                With .Rows(1):  .Font.Bold = True:  .HorizontalAlignment = xlCenter:  End With
                                         .Columns(1).HorizontalAlignment = xlCenter:  .Value = VA
                If .Cells(2, 1).NumberFormat <> .Cells(3, 1).NumberFormat Or _
                   .Cells(2, 1).Text = "" Then .Rows(2).Delete
            End With
        End If
     
        Application.StatusBar = False
    End Sub
    _________________________________________________________________________________________________
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que l'on ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi ! (Albert Einstein)
    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)

  11. #111
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut
    salut Marc la reponse est simple

    dans le code html comme beaucoup de site aujourd'hui on met des condition "if" sur la version de IE
    et en fonction des version la structure n'est pas tout a fait pareil pas beaucoup de différence mais de fois ca peut jouer

    puisque que l'on peut changer les balises script aussi

    exemple dans Nasdaq le morceau de code qui nous concernant le sujet
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <!-- global stylesheets -->
    
    <
    linkrel="stylesheet"type="text/css"href="http://www.nasdaq.com/includes/global.min-7212014v1.css"/>
    
    <!--[if lt IE 9]>
    
    <script src="http://www.nasdaq.com/includes/html5shiv-printshiv.js"></script>
    
    <link rel="stylesheet" type="text/css" href="http://www.nasdaq.com/includes/global-ie8.css?s" />
    
    <![endif]-->
    
    <!--[if IE 7]>
    
    <link rel="stylesheet" type="text/css" href="http://www.nasdaq.com/includes/global-ie7-7162014v1.css" />
    
    <![endif]-->
    
    
    <!-- favicon and shortcut icons -->
    
    <
    linkrel="apple-touch-icon"href="http://content.nasdaq.com/images/Q_apple.png"/>
    
    <
    linkrel="shortcut icon"href="http://content.nasdaq.com/images/qfav.ico"type="image/ico"/>
    
    <
    linkrel="icon"href="http://content.nasdaq.com/images/qfav.ico"type="image/x-icon"/>
    
    <
    linkrel="shortcut icon"href="http://content.nasdaq.com/images/qfav.ico"type="image/x-icon"/>
    
    <
    linkrel="stylesheet"href="http://cdn.ideamelt.com/1.1/css/ideamelt.min.css">
    
    
    <!-- scripts -->
    
    <
    scriptsrc="http://www.nasdaq.com/dynamic_includes/marketstatus.js"></script>
    
    <
    scriptsrc="http://www.nasdaq.com/aspx/marketstatus.aspx"></script>
    
    <
    scriptsrc="http://www.nasdaq.com/includes/jquery.min.js"></script>
    
    <
    scriptsrc="http://www.nasdaq.com/includes/global.min-812014v1.js"></script>
    
    
    <!-- the dynamic css container -->
    
    <
    styletype="text/css"title="dynamic">
    
    </
    style>

    justement marc
    la balise script qui est dans le IE 9 porte un autre nom en IE 10 et le code est vraiment similaire a quelque exceptions près

    et c'est ce code qui génère une table finale justement en hidden et c'est la fonction getquote(false) qui affiche ou pas

    il te suffit de te servir de mon ami F12 et réseaux et capture pour t'en rendre compte lire le code dans "corps de la demande "
    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

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




    Justement non car l'élément visé dans le code source de la page, donc juste au-dessus de la table,
    est encore une fois en dur ! Je ne vois pas le rapport avec les feuilles de style …

    Évidemment j'avais jeté un œil au code de la page sur un des ordinateurs sous Windows 8 + IE10 :
    exactement identique à celui sous Seven + IE9 pour l'élément parent de la table !
    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)

  13. #113
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut regarde bien
    marc dans le if IE9 il y a pas que le style qui change

    c'est même la première ligne

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <!--[if lt IE 9]><script src="http://www.nasdaq.com/includes/html5shiv-printshiv.js"></script>
    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. #114
    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 Patrick …

    L'élément est en dur dans le code ! What else ?!

    Si tu modifies le code source de la page en renommant l'élément parent de la table, .all(ELM) ne le trouve plus ! …

    Si tu ajoutes au code d'origine de cet élément une propriété name équivalente à son id,
    .getElementsByName devrait fonctionner …

    Preuve que ton script (de feuille de style !) n'a pas de déclaration concernant le parent de la table !
    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. #115
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    tiens regarde det exemple en vbs dans un hta
    quand je te dis que vbs et plus permissif

    Code html vbs : 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
    <html>
    <TITLE>exemple version beta forum W7 dmganges</TITLE>
    <HTA:APPLICATION
    WindowState="maximize" >    
    <body><div id="liste"></div></body>
    <SCRIPT language="VBSCRIPT">
    With CreateObject("InternetExplorer.Application")
            .Navigate "<a href="http://www.developpez.net/forums/f1260/systemes/windows/windows-7/" target="_blank">http://www.developpez.net/forums/f12...ows/windows-7/</a>"
            While .Busy Or .ReadyState < 1: Wend
            .Visible = false
    set tabtitre=.document.getelementsbytagname("h3")
    do:loop while tabtitre.length < 20
    for i = 0 to tabtitre.length-1
    set pere =tabtitre(i).parentnode.parentnode.parentnode.parentnode.parentnode
    if pere.classname="threads" then 
    set Arep=tabtitre(i).parentnode.parentnode.parentnode.getelementsbytagname("strong")(0)
     
    set datenews=Arep.parentnode.parentnode.parentnode.parentnode.getelementsbytagname("dd")(1).children(0)
    texte=texte & "<a>"& tabtitre(i).innertext & "</a><a>-------------derniere reponse par---" & Arep.innertext  &"----- en dte du -----" & datenews.innertext &"<br><br>"& vbcrlf & vbcrlf  
    end if:next:.quit:end with 
    document.getelementbyid("liste").innerhtml=texte
    </script></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

  16. #116
    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

    Reviens Patrick ! T'es parti où ?‼

    Vers du VBScript ‼ Sans une once d'explication ! Et cela prouverait quoi ?
    T'imagine ceux pataugeant avec le pilotage d'IE lisant ton post ?!
    Brouillard total, franchement leur horizon est loin de se dégager …
    Depuis le post #104, quelle chance si tu ne m'as pas remis à l'Ouest itwoo !

    Une contribution est censée être claire, celle-ci est bien plombée depuis le début !
    Non franchement, j'arrête là car l'id du parent de la table est en dur dans le code source de la page …

    Le but du post #110 est de juste prévenir de la possibilité d'échec de récupérer la table des posts #102 & #103
    sous peut-être Windows 8 mais plutôt la version 10 d'Internet Explorer, peut-être la 11, d'où ma demande de test !
    J'en ai pourtant effectué avant, peut-être suis-je passé à travers et si c'est le cas, mea culpa !
    Mes ordinateurs de tests pour Excel 2003 & 2007 étant sous Seven & IE9 …
    Mieux vaut prévenir que guérir …

    Le post #110 fonctionne bien sous Windows 8 & IE10 (j'espère aussi pour IE11), c'est là l'essentiel …
    Pas de souci non plus - heureusement ! - sous Seven & IE9.

    Tout ceci prouvant uniquement une chose : la difficulté ne réside pas dans la méthode elle-même
    mais bien de pointer correctement un élément …

    _________________________________________________________________________________________________
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. (Albert Einstein)
    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)

  17. #117
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    je suis la

    oui pour l'élément je suis d'accords avec toi
    moi chez moi avec seven IE 9 ca plombait (curseur qui tourne qui tourne ........)
    maintenant avec IE10 ca fonctionne

    et l'exemple c'était juste pour que tu lise la ligne while avec un readystate et un busy a 1 en VBS ca tourne comme sur des roulettes

    en vba crack boom waoutch (élément non définie)avec strictement le même code car j'essaie de coder sans les fonction vba (conversion plus facile )
    juste pour te dire que certaine erreur comme celle que tu est en train de traiter viennent purement et simplement de VBA en vbs je n'est pas tout ces soucis

    c'est pour ca que je teste en vba et en vbs toute tes versions juste pour voir si j'ai raison et les tests me donne raison

    [EDIT]
    juste une précision bien que je n'en soit pas sur
    chez moi W7 64 bits
    je lance un vbs qui s'execute forcement avec wscript.ece 64 bits
    donc quand on créé un objet (createobject("internetexplorer") )n'est il pas en 64 bits aussi?
    ce détail n'est il pas reproduis avec une version 32 ou 64 bits d'office

    je crois me souvenir que quand j'avais installé office 2010 64 bits j'avais des souci avec la manipulation internet que je n'est pas en 2007 ( juste pour info)
    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

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

    D'accord, c'est noté - pour ceux qui ne le savaient pas -, bien, mais ce n'est pas le sujet !

    J'ai testé uniquement des versions 32bits d'Excel (normal car 2003 & 2007) …

    Le ReadyState étant au minimum à 3 pour le code du post #103 et à 4, donc page complètement chargée,
    pour le code du post #102 dans lequel getElementsByName ne trouve rien non plus sous Windows 8 + IE10 !
    Ce n'est pas une erreur à proprement parler, la collection renvoyée est vide, voilà tout !
    Tandis que sous Seven + IE9 ces deux codes fonctionnent très bien !

    Ce serait dû à l'absence de la propriété name dans l'élément, d'où mon alerte …

    … et ma demande à ceux disposant des versions 10 ou 11 d'Internet Explorer, sous Seven
    ou Windows 8 ou 8.1 ou une beta 9 tant qu'on y est, de tester ces codes, d'avance merci !

    _________________________________________________________________________________________________

    Sous Seven + IE9, j'ai signalé dans la contribution de Stéphane en rapport avec son tutoriel le contraire :
    all ne trouvait pas un élément particulier d'une page web par son nom (pas de souci pour d'autres)
    tandis que getElementsByName le trouvait bien …
    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)

  19. #119
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    chez moi la version #102 me donne un beep et c'est tout!!!!

    W 7 64: office 2007 32 bits : Avec IE10 32 BIT forcément puisque lancé par EXCEL 2007 32 BITS

    w 7 64 : VBS DONC EN 64 bits Avec IE 10 en 64 BITS forcément puisque lancé par WSCRIPT.EXE 64 avec à la place du traitement des cellules un MSGBOX

    ET BIEN J'AI LES DONNEES


    C'EST PLUS CLAIR LA
    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

  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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    en gros
    a ctte ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With CreateObject("HTMLFile")
                                  .write T
    avec app32 sur system 64 j'ai rien
    avec app64 sur system 64 j'ai tout
    je ne peut pas être plus clair

    [EDIT]
    Marc je viens de me rendre compte que nous avons pas la même façon de pointer les éléments
    tu te sert de "item(X)ou children(X) et effectivement ca pose problème

    depuis des deboirs en nombre plus que suffisant
    par curiosité j'ai essayé autre chose

    je pointe un element
    getelement(s/pas s)by(tagname,id,name,classname)
    ensuite pour ponter un de ses enfants
    je fait gelementpointé .getelement.........

    le tout bien évidement c'est de pointer le bon parent et ta boucle sur le .length est amplement suffisant en 32 et 64 bits pour choper le code

    essaie d'en faire un avec un "element.getsouselemenby....t" tu verra
    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

Discussions similaires

  1. [MySQL] Comment extraire des données dans un fichier .svc depuis une page web
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/12/2013, 13h02
  2. Réponses: 1
    Dernier message: 08/07/2009, 12h52
  3. [XL-2003] Faire mise à jour fichier excel stocké sur une page web
    Par fidecourt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/04/2009, 18h12
  4. Comment ouvrir Word ou Acrobat Reader à partir d'une page web ?
    Par Kuuei dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 17/05/2006, 16h18
  5. Comment empêcher la mise à jour d'un contrôle à l'écran ?
    Par JojoLaFripouille dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/09/2003, 13h52

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