Bonjour itwoo
il a grandi notre petit djedail
Bonjour itwoo
il a grandi notre petit djedail
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
Bonjour Pat,
Merci ...suis toujours dans les tests mais ca marche nickel, ou alors s'il y a une erreur cela vient du code source de la page, de la présentation des datas...mais pas de toutes vos lignes de code jusqu'à présent
Bien test en cours et ce week end une petite erreur s'est produite sur le 51° script (donc la page 51)...Une valeur qui ne cote pas normalement avec donc une ligne de datas qui bloque les split, replace...
il est à noter que cela pourra surement à l'avenir se reproduire et qu'il faudra donc adapter le code en fonction des modifications faites par euronext.
Voici cependant pour résoudre l'erreur en remontant simplement le On error resume next d'un niveau...dans la sub creationvbs2:
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 code = code & vbCrLf & "resultat = Replace(DemandeFichier.responseText, ""["", vbCrLf)" & vbCrLf & _ "tablo = Split(resultat, vbCrLf)" & vbCrLf & "Z = 0" & vbCrLf & _ "For i = 2 To UBound(tablo)" & vbCrLf & _ "tablo2(Z, 0) = Split(Split(tablo(i), ""\u003e"")(1), ""\"")(0)" & vbCrLf & _ "tablo(i) = Split(Split(tablo(i), ""/div\u003e"""","""""")(1), ""]"")(0)" & vbCrLf & _ "tablo2(Z, 1) = Split(tablo(i), """""","""""")(0)" & vbCrLf & _ "tablo2(Z, 2) = Split(tablo(i), """""","""""")(1)" & vbCrLf & _ "tablo2(Z, 3) = Split(tablo(i), """""","""""")(2)" & vbCrLf & _ "tablo2(Z, 4) = Split(tablo(i), """""","""""")(3)" & vbCrLf & _ "tablo2(Z, 4) = Replace(tablo2(Z, 4),""."","""")" & vbCrLf & _ "tablo2(Z, 4) = Replace(tablo2(Z, 4),"","",""."")" & vbCrLf & _ "On Error Resume Next" & vbCrLf & _ "tablo2(Z, 6) = Replace(Split(tablo(i), """""","""""")(5), Chr(34),"""")" & vbCrLf & _ "tablo2(Z, 5) = Split(Split(tablo(i), ""\u003e"")(1), ""\"")(0)" & vbCrLf & _ "Err.Clear" & vbCrLf & _ "If instr(tablo2(Z, 1), "",null"")>0 then" & vbCrLf & _ "tablo2(Z, 1) = split(tablo2(Z, 1),"""""",null"")(0)" & vbCrLf & _ "tablo2(Z, 2) = ""-"":tablo2(Z, 3) =""-"":tablo2(Z, 4) =""-"":tablo2(Z, 5) =""-"":tablo2(Z, 6) = ""-""" & vbCrLf & _ "End If" & vbCrLf & _ "On Error GoTo 0" & vbCrLf & _ "reponse = reponse & tablo2(Z, 0) & chr(9) & tablo2(Z, 1) & chr(9) & tablo2(Z, 2) & chr(9) & tablo2(Z, 3) & chr(9) & tablo2(Z, 4)& chr(9) & tablo2(Z, 5)& chr(9) & tablo2(Z, 6) & vbCrLf" & vbCrLf & _ "Z = Z + 1" & vbCrLf & _ "Next"
Bonjour,
un petit point à préciser lorsque navigation et ouverture de pages web successives avec requête par IE...
Plus haut il y a utilisation par exemple de la rosace
avec identification par son Id ("ajaxloader") ou de threadlist avec identification par son id ("threadlist") il n'y a pas de bloquage du processus car utilisation de IEDoc.getElementById:
dans l'attente lgtb : Null : Variant/Null =>lgtb= Null
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Set lgtb = IEDoc.getElementById("ajaxloader") Do: DoEvents: Loop Until lgtb.Visible = False
Puis ensuite il y a chargement
En revanche si le pointage ne porte pas sur un élément avec un id mais par exemple sur son classname et même si l'objet pointé est bien unique il y aura un bloquage à l'initialisation (aucun bloquage si user attend le chargement de la page pour pointage):
il n’y a bien qu’un seul élèment répondant mais en faisant comme cela problème car : lgtb : Nothing : Variant/Object cela bloque dans VBA le if lgtb = ...celui ci ne peut pas se charger, cela ne marche que si user a attendu volontairement le téléchargement complet de la page web avec un point d'arrêt avant de relancer VBA
Code : Sélectionner tout - Visualiser dans une fenêtre à part lgtb = IEDoc.getElementsByClassname("view-all-anchor")
Donc il a falu remonter sur des éléments parents ayant un id pour effectuer la vérification de sécurité avec IEDoc.getElementById, et la plus de probléme.
Pour le moment tout va toujours parfaitement bien
Salut,
que de souvenirs !
De par son comportement erratique selon la version d'IE, je ne fais plus confiance à getElementsByClassname
mais lui préfère évidemment getElementByID ou encore GetElementsByTagName comme dans ma contribution
[Pilotage Internet Explorer] Comment attendre la mise à jour d'un élément d'une page Web …
_____________________________________________________________________________________________________
Je suis Charlie, Bardo, Sousse
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)
Et oui que de souvenir!
En effet le get elementsbyclassname et bien trop capricieux non seulement avec les versions de IE mais aussi selon le DOCTYPE
DE TOUTE FACON il y a bien d autre moyen de crer une boucle d attente ou de le cibler
tout simplement en creant une boucle simple"for each sur le tagname"
Et dans cette boucle "if element.classname"
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
oui des bons souvenirs
Bonjour,
Pour vous signaler que depuis 2 semaines lors d'un lancement de grand nombre de requêtes sur Nasdaq.com est bien 1% environ des requêtes ne reviennent pas, il suffit alors de relancer ces 1% défectueux pour que les requêtes fonctionnent...cela ne se produisait pas avant, ca doit venir du site...
Vérification en cours.
A bientôt
salut itwoo c'es pas euronext plutot ?
donne le dernier code que tu utilise
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
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)
Bonjour,
Avant de vous répondre refait des essais et bien plus rien (j'ai mis 2-3 sécurités pour voir d'où cela pouvez venir mais plus rien pour le moment!!!)
Le grand nombre c'est environ 300 requêtes, ce n'est pas si énorme, ca ne le fait plus, mais je vais retester ce WE car il y a peut être un probléme de maintenance du site le WE...par contre cela venait bien de Nasdaq et pas d'Euronext...
A bientôt
Bonjour,
Tests refaits encore une fois ce matin et résultat: AUCUN PROBLEME.
Cela doit venir de temps en temps du site donc ce n'est pas grave ni insurmontable.
Vraiment merci pour tout, c'est vraiment le bonheur grâce à votre aide
bon WE
Bonjour,
Pour le Nasdaq sur certains intervalles de temps il peut y avoir une erreur, qui se produit de manière aléatoire lors d'un grand nombre de requêtes...sur environ 1% des cas.
Par exemple si 300 valeurs à étudier et bien lors du lancement Ford peut bugger au 1° lancement puis ne plus bugger au 2° lancement...
Mais la trés bonne nouvelle c'est que cela ne vient pas de votre code qui est nickel, non l'erreur enfin identifiée vient du retour de la requête en mettant:
il est possible d'identifier que parfois chaine n'est pas vide mais chaine ne contient pas non plus les datas, voici chaine:
Code : Sélectionner tout - Visualiser dans une fenêtre à part chaine = DemandeFichier.responseText
Donc l’idée mettre un vérificateur qui soit présent dans toutes les chaines bonnes et pas dans celle fausses il s’agit du mot : Results soit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 : chaine : "<div id="quotes_content_left_pnlAJAX"> </div>" : String
Par contre pourquoi y a t'il ce probléme, surement une mauvaise connection, mais là je ne sais pas vraiment...
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Not InStr(chaine, "Results") > 0 Then ag = True: Exit Sub
En tous les cas avec une boucle de sécurité il suffit de relancer pour les valeurs défectueuses...
Bonne journée
Bonjour et merci de ton retour !
Peut-être le site sature par moment …
Déjà tu as la chance qu'il n'y ait pas de contrôle du nombre de requêtes reçues dans un intervalle court
comme sur certains sites où l'émetteur peut se retrouver grillé rapidement sans pouvoir interroger
de nouveau le site même par une navigation manuelle pendant 24h et parfois bien plus !
En identifiant à coup sûr une requête défectueuse, il suffirait de la relancer au sein même de la procédure VBScript
soit immédiatement soit après une pause de quelques secondes (entre dix et trente).
Autre voie si besoin de les visualiser : une requête défectueuse doit renvoyer un code spécial dans la feuille de calculs
puis prévoir une procédure n'émettant des requêtes uniquement pour ce code spécial …
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)
Bonjour,
Oui c'est noté.
TVB pour le moment, je suis très satisfait du résultat grâce à vous tous
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager