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. #121
    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 une qui marche avec les deux (vba,vbs)
    re
    marc une version simplifié qui fonctionne avec les deux tout le temps (30 essaie d'affiler )

    mais tu disais si j'ai bien compris la boucle sur le length des enfant de l'élément quand elle changeait
    on prenait la table
    hors dans le code si dessous la ligne verte ne marche pas et pour cause c'a n'est pas les chidren qui sont caduques mais l'élément lui même pointé au départ
    en débloquant la ligne verte on s'en rend bien compte
    il faut donc re pointer l'élément maitre et la table désiré en l'occurrence ici le chidren(1) ou le element.getelementsbytagname("table")(0) 0 puisque c'est la seule dans ces enfant de cet élément

    par contre il n'y a plus de tolérance avec le readystate c'est 4 un point c'est tout
    et le .all sur la combo ne fonctionnait pas (getelem.......)

    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
    Sub DemoNASDAQieB()
        Const QUOTE$ = "abbv", TXT$ = "        Import en cours "
        texte = " Connexion …" & Time & "**"
        Application.StatusBar = texte
        With CreateObject("InternetExplorer.Application")
            .Navigate "http://www.nasdaq.com/symbol/" & QUOTE & "/historical"
            .Visible = True
            Do While .ReadyState < 4: Loop
            Application.StatusBar = texte & "page chargée a: " & Time & "**"
            With .document.getelementbyid("ddlTimeFrame"): .Value = "3y": .onchange: End With
            With .document.getelementbyid("quotes_content_left_pnlAJAX")
     
                With .Children: While .Length: DoEvents: Wend: End With
     
             '.getelementsbytagname("table")(0).innertext
     
            End With
            code = .document.getelementbyid("quotes_content_left_pnlAJAX").getelementsbytagname("table")(0).innertext
            .Quit
        End With
        MsgBox code
    End Sub
    en pointant de cette Facon il est impossible de pointer le mauvais élément
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    code = .document.getelementbyid("quotes_content_left_pnlAJAX").getelementsbytagname("table")(0).innertext
    vue du timing de la satut bar
    Pièce jointe 154947
    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. #122
    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 !

    Si le code du post #102 fait un bip de ton côté, ce sera pareil avec celui du post #103 :
    getElementsbyName ne trouvant rien avec IE10 (indépendant donc de la version de Windows comme pressenti),
    l'élément parent de la table n'ayant pas de propriété name

    Par contre le code du post #110 marchera, tu ne l'as même pas testé car le tien du post #121 est équivalent,
    all & getElementByID, même combat ! Idem pour repointer l'élément : getElementsbyName, renvoyant une collection,
    ne pose pas de problème (sous IE9 …) mais all et getElementByID, pointant directement sur l'élément,
    deviennent logiquement caduques … Post #110, ligne n°39 comme je l'avais pourtant indiqué avant le code !

    _________________________________________________________________________________________________

    Je n'ai plus d'IE11 sous le coude (ne le réinstallerai pas car deux PC ont été chamboulés la dernière fois !),
    si quelqu'un dispose de cette version, peut tester les codes des posts #103 & #110 et en faire un retour, merci d'avance !
    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. #123
    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 bonjour marc

    pourquoi ne pas boucler directement sur la présence de celui ci alors plutôt que sur le length de ses enfants
    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. #124
    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




    Pour peut-être rester dans la logique initiale de la contribution
    et nécessaire aussi par exemple dans le code du post #110 pour la ligne n°24,
    explication dans le post #102 concernant la ligne n°20 …

    Après tu adaptes à ta sauce !
    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. #125
    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
    bonjour marc

    oui tu a raison pour rester dans l'idée de la contribution boucler sur la table.children.length elle même

    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
    Sub DemoNASDAQieB()
        Const QUOTE$ = "abbv", TXT$ = "        Import en cours "
        texte = " Connexion  à…" & Time & "    "
        Application.StatusBar = texte
        With CreateObject("InternetExplorer.Application")
            .Navigate "http://www.nasdaq.com/symbol/" & QUOTE & "/historical"
            .Visible = True
            Do While .ReadyState < 4: Loop
            texte = texte & "page chargée à: " & Time & "   "
            Application.StatusBar = texte
            With .document.getelementbyid("quotes_content_left_pnlAJAX").getelementsbytagname("table")(0)
                With .document.getelementbyid("ddlTimeFrame"): .Value = "3y": .onchange: End With
                With .Children: While .Length: DoEvents: Wend: End With
            End With
            Application.StatusBar = texte & "Le code a été récupéré à :  " & Time
     
            code = .document.getelementbyid("quotes_content_left_pnlAJAX").getelementsbytagname("table")(0).innertext
            .Quit
        End With
        MsgBox code
    End Sub
    Mais attention a l'interprétation du phénomène!!!!
    ce n'est pas le length de la table qui change c'est le pointeur de l'arrière grand père qui devient caduque a la fin de la mise jour
    Alors oui tu me dira "ouis mais le length de la table passe a zero!!!
    moi je te répond non !! c'est le innerhtml du grand papa qui se vide !! le dernier exemple que j'ai poster le montre bien puisque je suis obligé de repointer (LES DEUX: PARENT ET TABLE)l
    a table en fait partie donc forcement .....
    donc en fonction du travail a faire ne pas interpréter de travers
    ET POURTANT SI ON REGARDE LE CODE SOURCE, A AUCUN MOMENT L'ELEMENT ECRIT EN DUR (COMME TU DIS ) DANS LE CODE DIPARAIT
    CE QUI SE PASSE EN FAIT C'EST QUE LA FONCTION LE REECRIT ET C'EST POUR CA QU'IL DEVIENT CADUQUE IL EST LA MAIS EN FAIT CA N'EST PLUS LE MEME MEME SI IL A TOUTE CES PROPRIETES

    ce qu'il faut retenir c'est cette boucle qui arrange bien tout le monde

    Pour te donner un exemple plus que concret tu n'a cas lance mon application et cliquer sur le bouton GO
    et des que la mise a jour est faite clique droit et afficher le code source
    a aucun endroit tu trouvera les données te concernant
    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. #126
    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


    Rien n'a changé depuis le début de cette contribution ‼ Pourtant je me suis plusieurs fois répété …
    J'ai même réexpliqué de nouveau le principe tout spécialement dans le post #102
    en précisant bien la table n'étant pas la seule à être mise à jour …

    Si une collection est pointée, comme à l'origine celle des tables ou dans les posts #102 & #103 via getElementsByName,
    seuls les éléments impactés par la mise à jour sont réinitialisés mais pas la collection …

    Si un élément est pointé directement comme via all ou getElementByID,
    l'élément - son pointeur figé avant la mise à jour - devient logiquement caduque …

    A l'Ouest, rien de nouveau …
    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. #127
    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
    bonjour marc
    juste une parentheze

    pour ma part j'utilise le ".all" sur des inputs (text,button,submit,password)car il ont pratiquement tout le temps un "name"
    ce qui n'est pas forcement le cas pour les autres balises
    pour le reste j'utilise le getelementby........ pour tout autre balise
    de cette manière, je n'est pas de soucis avec ie 9 ou 10 ou même 11
    après le fait qu'il faut re pointer n'est pas un soucis le getelementsby.... blinde très bien la sélection du bon élément

    quand au "getelementbyname" je l'utilise que très peu j'ai toujours eu des soucis avec celui la de la même manière que avec

    le "getelementsbyclassname"(c'est pour ca que qwazerty avait fait une fonction getclassename )
    pourtant cette fonction existe bien dans dans la librairie mais selon la version de ie ca bug

    donc conclusion en ce qui me concerne

    .all rien que pour les input
    getelementbyname poubelle
    getelementsbyclassname poubelle

    c'est brutal oui mais je n'ai pas de soucis avec la manipulation librairie IE
    rien de nouveau !! j'ai toujours fait comme ca et ca fait longtemps que j'ai quitter l'est
    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. #128
    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'acco' d'ac ! Mais comme déjà évoqué dans cette discussion et signalé dans la contribution de Stéphane (Qwazerty),
    j'ai eu le cas où all ne trouvait pas un élément avec une propriété name au contraire de getElementsByName !

    Donc je m'en tiens à ceci :

    • si élément avec propriété id all ou getElementByID.

    • Si élément avec propriété name getElementsByName
    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. #129
    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
    bonjour marc
    soit comme tu veux

    tu travail avec ie 9 ou 10
    si c'est 9 j'aurais besoins de toi pour un test
    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. #130
    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





    Firefox ‼

    Sinon uniquement pour le pilotage d'Internet Explorer principalement IE9 sous Seven, IE10 sous Windows 8 à l'occasion …

    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. #131
    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: une info
    Hello a vous 2,

    Pas suivi de manière approfondi votre discussion mais cela viendra plus tard…

    tout d'abord les news:
    sur l'autre post fait refait les tests par requête aussi bien pour nasdaq que pour euronext (historique et all equities) aucune panne ni probléme depuis le dernier post ici (le 101) (code version all equities non fini de regarder cependant)

    D'un point de vue informatique pour info avant Qwaz donc en lancant hors requête il est vrai que parfois IE ou VBA (mais comme Marc je penche pour IE) bloqué de manière inexpliquée (et c'est ce que vous cherchez à déterminer) aprés 4-5 lancement par VBA successif...Au départ j'ai cru que c'était Nasdaq qui ramait...mais à chaque fois en fermant IE et le fichier excel puis en le réouvrant et en recommencant il n'y avait plus de blocage...et surtout dans la réalité nasdaq fonctionnait toujours nickel aucune panne informatique n'était signalée!!!
    Cela dit d'un point de vue non informatique il est extrêment rare que Nasdaq bloque et cela se sait car le marché s'arrête...inutile de vous dire le prix de la panne à la seconde donc Nasdaq bloqué semble extrêmemet peu probable...et je crois (pas sûr à 100%) que le site d'affichage donnant les cotations (qui est objet de la discussion, est lié) donc il semble peu probable que le site d'affichage tombe en panne ou rame alors que nasdaq fonctionne (cela est peut être possible cependant) ...et nasdaq depuis le post 101 n'est pas tombé en panne...la piste Nasdaq en panne semble à écarter

    Pas évident...suis sur l'autre post en ce moment pour tout tester donc rdv aprés ici au besoin...
    Encore Merci Patrick pour toute ton aide...c'est tip top quel bonheur

    Par contre les . Marc c'est pas mal du tout dans VBA pour beaucoup de choses !!!

    A bientôt

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

    Marc ton VA adapté fait gagner 1 seconde a chaque fois!!!Comme utilisation du format texte il convient à merveille
    Pour le reste toujours en tests et amélioration...
    ca avance pas vite mais ca avance surtout pour le moment sans erreur grâce à vous tous
    Bientôt étude de tes abeilles...
    Merci encore
    A bientôt

  13. #133
    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





    Ce qui fait gagner du temps est de lire la table hors Internet Explorer !

    Sur un ordinateur de tests, plus de trois secondes de gagnées, tout dépend aussi de la puissance de l'ordinateur …


    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)

  14. #134
    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 à vous 2,

    En train de lire votre discussion (suis au post#48, oui bon d'accord c'est un grand retour en arrière) car il y a une explication à apporter qui contribue à vos remarques suivantes:
    Sur mon ordi il se produit ceci:
    A savoir que sous VBA et pour vous connecter à la page d'accueil du site il y a une grosse différence entre les 2 codes tests suivants:qui met en lumière la différence par identification entre id"" et all"" donc une certaine forme de pointage à bien vérifier comme l'indique Marc
    C'est ce que dit Qwaz dans son tuto...en grande partie...
    Pour bien le voir effectuer les test dans l'ordre (c'est important)

    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 test1()
    url = "http://www.developpez.net/forums/subscription.php"
    Set IE = CreateObject("internetexplorer.application")
    IE.Visible = True
    IE.navigate url
    Do: DoEvents: Loop Until IE.readystate = 4
    Set IEDoc = IE.document
    On Error Resume Next
    i = 0
    For Each elem In IEDoc.all 
    If elem.ID = "vb_login_username" Then
    login = True
    MsgBox ("vb_login_username est l'élément n° " & i) 'n° 527
    ag = True
    End If
    If elem.ID = "vb_login_password" Then
    MsgBox ("vb_login_password est l'élément n° " & i) 'n° 530
    bg = True
    End If
    If (ag = True) And (bg = True) Then Exit For
    i = i + 1
    Next
     
    If login = True Then 
    Set user = IEDoc.getelementbyid("vb_login_username") 'pour identifier l'input identifiant il n'y a qu'une réponse
    '+ : user :  : Variant/Object/HTMLInputElement
    '    : id : "navbar_username" : String
    '    : name : "vb_login_username" : String
    '    : sourceIndex : 421 : Long ca devrait être le 527!!! donc ce n'est pas le bon user...
    '    : value : "Identifiant" : String
    MsgBox ("L'élément est le n° " & user.sourceIndex)
    user.Value = "monlogin"
     
    Set pass = IEDoc.getelementbyid("vb_login_password") 'pour identifier l'input password il n'y a qu'une réponse
    '    : id : "navbar_password" : String
    '    : name : "vb_login_password" : String
    '    : sourceIndex : 422 : Long  ca devrait être le 530!!! donc ce n'est pas le bon pass...
    MsgBox ("L'élément est le n° " & pass.sourceIndex)
    'pass.Value = "monpassword"
     
    Set bout = IEDoc.getelementsbyclassname("button")
    bout(0).Click
    End If
    Err.Clear
    Do: Loop Until IE.readystate = 4
    end sub
    >Et bien il est imposible de passer la page d'acceuil de developpez (et rien ne s'affiche dans les input du navigateur), alors qu'en faisant le test 2 tout focntionne à merveille:

    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
     
    Sub test2()
    url = "http://www.developpez.net/forums/subscription.php"
    Set IE = CreateObject("internetexplorer.application")
    IE.Visible = True
    IE.navigate url
    Do: DoEvents: Loop Until IE.readystate = 4
    Set IEDoc = IE.document
    On Error Resume Next
    i = 0
    For Each elem In IEDoc.all 
    If elem.ID = "vb_login_username" Then
    login = True
    MsgBox ("vb_login_username est l'élément n° " & i) 'n° 527
    ag = True
    End If
    If elem.ID = "vb_login_password" Then
    MsgBox ("vb_login_password est l'élément n° " & i) 'n° 530
    bg = True
    End If
    If (ag = True) And (bg = True) Then Exit For
    i = i + 1
    Next
     
    If login = True Then 
    Set user = IEDoc.all("vb_login_username") 'pour identifier l'input identifiant mais attention cette fois il y a 2 user
    '  + : Item 1 :  : Variant/Object/HTMLInputElement
    '      : id : "navbar_username" : String
    '       : name : "vb_login_username" : String
    '      : sourceIndex : 421 : Long     => VOILA LE PARASITE DE LA VERSION v1
    '      : value : "Identifiant" : String
    '  + : Item 2 :  : Variant/Object/HTMLInputElement
    '      : id : "vb_login_username" : String
    '      : name : "vb_login_username" : String
    '      : sourceIndex : 527 : Long
    '      : value : "" : String
    'c'est Item2 le bon...
    MsgBox ("L'élément est le n° " & user.Item(1).sourceIndex)
    user.Item(1).Value = "identifiant"
     
    Set pass = IEDoc.all("vb_login_password") 'pour identifier l'input password idem il y a 2 pass...
    '  + : Item 1 :  : Variant/Object/HTMLInputElement
    '       : id : "navbar_password" : String
    '        : name : "vb_login_password" : String
    '      : sourceIndex : 422 : Long      => VOILA LE PARASITE DE LA VERSION v1.c
    '       : value : "" : String
    '  + : Item 2 :  : Variant/Object/HTMLInputElement
    '        : id : "vb_login_password" : String
    '       : name : "vb_login_password" : String
    '      : sourceIndex : 530 : Long
    '      : value : "" : String
    MsgBox ("L'élément est le n° " & pass.Item(1).sourceIndex)
    pass.Item(1).Value = "monpassword"
     
    Set bout = IEDoc.getelementsbyclassname("button")
    bout(0).Click
    End If
    Err.Clear
    Do: Loop Until IE.readystate = 4
    End sub
    Mais le plus vicieux c'est que si test1 fait en 1° il ne marche pas, donc le test2 fait marche MAIS si relance juste aprés du test 1 et bien là il se met à marcher car le site doit garder un cookie temporel par exemple de 5 mn!!!

    A bientôt

  15. #135
    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
    Bonjour itwoo

    ca se résume a 2 choses en fait

    all("xxx") peur servir pour un objet avec un "Name" ou un "ID"
    getelementbyid sert que pour les elements qui ont un id
    mais attention tout dépend des balises méta concernant la compatibilité avec tel ou tel version en tète de fichier
    ce qui implique que selon la version de IE ca marche ou pas il est bien la le problème
    récurent et de plus en plus présent dans tout les exercice que j'ai pu faire forcement avec le html5 qui maintenant est reconnu langage de base
    avec des nom de balise de plus en plus nombreuse ainsi que leur propriétés

    je viens d'avoir ce problème justement sur un autre sujet

    une balise qui n'est pas trouvée alors qu'elle est bien présente
    seulement parce que des accents était dans l'url c'est pour te dire

    mais ne t'en fait pas Marc et moi on veille au grains

    heureusement d'ailleurs sinon tu 't'en sort jamais a la vitesse ou tu vas
    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. #136
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

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

    Oui merci Pat...
    Et cool ton code pour voir les news...

    Le but du message précédent c'était pour Marc par rapport au pointage ...avec la dernière ligne qui était la plus importante:
    A savoir que si tu faisais le test2 (puis tu fermais tout) puis le test1 et bien le test1 marchait alors que le test1 seul ne marche jamais puisqu'il est faux!!!
    Donc ici malgré un faux pointage et bien cela marchait comme si IE où le site avait gardé en mémoire les datas et donc marchait de nouveau malgré de fausses données!!!...et c'est surement pour ca que sur nasdaq il y avait des erreurs suivant le placement du onchange et les nombres de boucle pour les différentes valeurs car IE ou le site avait comme en mémoire les datas(surtout que pas IE.Quit à chaque boucle de relance), je n'ai pas pensé à mettre dans les tests précédents un IE.Quit (par contre je fermais bien IE quand même entre test2 et test1 sous 2 classeurs excel différents)

    Mais surtout ce que je ne m'explique pas c'est qu'aujourd'hui et bien ce test2 et test1 puis test1 ne marchent plus ce matin!!!(ou alors il y a eu une modif au niveau du site...et l'anomalie n'existe plus!!!) Pourtant j'en suis sûr et certain elle était bien là lors de l'écriture du post...
    Tu penses ca m'a tellement rappelé le sujet présent que je l'ai vérifiée 10 fois avant de poster le message...

    Donc si plusieurs boucles s'enchainent bien faire un IE.Quit mais ca ne sera peut être pas suffisant...car apparemment entre test2 et test1 ca ne venait pas de là...et comme ca ne le fait plus ce matin pas moyen de trouver...
    Enfin l'essentiel c'est que ca marche

    PS: oui je vais pas vite du tout mais elle est bien cette contribution de Marc et je relis tout pour les sécurités car malgré toutes les précautions et bien il y a toujours une surprise quelque part (je t'avoue le coup du test2 test1 ca m'a laissé sur le carreau j'aurais pas parié un kopec dessus surtout que maintenant ca ne le fait plus!!!)
    Mais bon ca ne remet pas du tout en cause ce qu'a fait Marc, c'est juste encore autre chose avec IE

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

    Bonjour !

    J'ai bien vu le post #134 mais j'attends toujours d'être tranquille pour tester à tête reposée …

    Sinon je ne suis pas étonné outre mesure, ce sont les aléas d'IE, peut-être du cache ou d'un cookie …

    Dans la discussion récente de _yuck_, pour un cas précis il n'obtenait pas un temps de trajet
    alors que de mon côté pour le même cas j'obtenais bien un résultat;
    puis le lendemain, sans rien changer au code, je me suis retrouvé comme lui !


    _________________________________________________________________________________________________
    Le progrès : trop robot pour être vrai ! (Jacques Prévert)
    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)

  18. #138
    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,

    Ok donc voilà surement l'erreur et bien ca fait au moins une erreur pas vraiment identifiée mais qui s'explique...et qui nous a sacrément embêtée (quand t'y connais pas grand chose tu te demandes ce qu'il se passe )
    En revanche si tu n'a pas de temps il n'est pas nécessaire que tu le perdes la dessus...plus rien aujourd'hui ne découle de cette erreur...
    Ici lecture en cours de ta contribution et ensuite de tes abeilles...va bien finir par tourner sans erreur all.equities
    Allez bon WE

  19. #139
    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,

    à propos du post #134 et de la procédure test1, si je réactive la ligne n°39 (postée en commentaire, est-ce volontaire ?),
    aucun souci de mon côté sous Seven & IE9 pour se connecter ! Idem avec la procédure test2 …




    _________________________________________________________________________________________________
    Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. (Confucius)
    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)

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

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

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

    Oui il faut bien réactiver ligne 39 du test1 c'est une erreur en changeant mon password je l'ai mis en commentaire...

    Ici test1 ne marche jamais s'il est lancé en 1° puisque les n° ne sont pas 527 et 530 mais 421 et 422...pour les identifiants...

    En revanche parfois il marche s'il est lancé en 2° soit juste aprés test2 qui a bien les bons n°527 et 530...et IE ou le cache doit les garder en mémoire un petit peu ce qui permet à test1 (parfois de marcher si lancé juste aprés)

    Oh oh une idée toi tu travailles en early binding ou en late binding (autant c'est ca l'explication)?
    ici suis en early binding :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim IE As InternetExplorer
    Dim IEDoc As HTMLDocument
     
    Set IE = CreateObject("internetexplorer.application") 
    Set IEDoc = IE.document
    car il y a peut être une différence sur le n° et les éléments reconnus si early ou late binding...faut que je teste ca demain

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