Utiliser un calculeur du Web avec VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

francois1955

XLDnaute Junior
Bonjour,
Je voudrais créer une application en VBA qui effectue les tâches suivantes :

Ouvrir le site WEB suivant : Composition Dependent Combinatorial Analyzer
Remplir la première box (nommée 2) de la rubrique Shoe composition par la valeur de la cellule A1 d’une feuille Excel
Valider en cliquant sur le bouton Compute de la rubrique suivante (Player cards).
Récupérer le résultat de la box EV Overall de la rubrique suivante (Player Expected Value)
Enregistrer ce résultat dans la cellule B1 de la feuille Excel...

J’ai Windows Seven, IE 8.0.7600, Excel 97 et son VBA .
Voilà, si quelqu'un avait une idée sur la chose ou un bout de code, ce serait très apprécié.
Merci d'avance,
 
Dernière édition:
Re: Re : Utiliser un calculeur du Web avec VBA

Bonsoir,
Merci pour le code visant à ramener le résultat. Visiblement il marche chez toi car la cellule B1 contient bien ce résultat.

Malheureusement, il bugue chez moi sur la ligne suivante:
"For Each elem In appIE.document.all"
Avec le message suivant:
"Erreur 70. Permission refusée"

Cela viendrait-il de ma vieille version Excel (1997 ) ?
Quoi qu'il en soit, comment est-ce possible d'imaginer un tel code ? Ceci m'était totalement impossible !

En revanche, j'ai récupéré la sauce en faisant ceci :
'récupérer le EV Overall
Dim objTable As HTMLTable
Dim objTableRow As HTMLTableRow
Set ElementCol = IE.document.getElementsByTagName("TABLE")
For Each elem In ElementCol
' element Table
If elem.tagName = "TABLE" Then
Set objTable = elem
' Table a au moins 1 Ligne
If objTable.Rows.Length >= 1 Then
Set objTableRow = objTable.Rows(1)
If Left(objTableRow.innerText, 2) = "EV" Then
Sheet1.Range("B1").Value = objTableRow.Cells(11).innerText
Exit For
End If
End If
End If
Next

Cela a l'air de marcher mais ... je ne sais absolument pas pourquoi !! lol
Tu comprends la différence ?
Je vérifie tout cela après une nuit de repos.
Merci beaucoup James.
 
Dernière édition:
Re : Utiliser un calculeur du Web avec VBA

Bonjour,

Encore Bravo ... puisque si je comprends bien, tu as trouvé la solution 😎

Lorsqu'une erreur se produit, ce n'est Excel qui est en cause ... mais la vitesse globale du traitement ...
Du coup, dans le code, il faut ajouter une loop pour attendre que la réponse soit revenue et si cela ne suffit pas, il faut regarder ailleurs ...
Donc, soit les ressources du PC (RAM, processeur, etc..) ou alors la largeur de bande (ADSL, firewall, wifi, etc ...)
Du coup, dès que j'ai un moment, je vais chercher comment optimiser la requête ...

A +
🙂
 
Re : Utiliser un calculeur du Web avec VBA

Re,

Pour tous ceux que cela pourrait intéresser : pour une plus grande rapidité, ainsi qu'une plus grande facilité de codage, il faut se documenter sur l' object MSXML2.XMLHTTP

@François ... dès je trouve un moment, je vais creuser plus avant...

A +
🙂
 
Re: Re : Utiliser un calculeur du Web avec VBA

Une question pour confirmation stp: ai-je bien compris ?
Quand il s'agit d'opérer sur la case 2, c'est direct, une seule instruction suffit parce que cette information est parfaitement identifiée pat txt2.

Pourquoi ne pourrait-on pas en faire autant avec le résultat du calculateur?
C'est parce que celui-ci n'est identifié que comme le onzième élément d'une table ? Nous sommes donc obligés de rechercher d'abord cette table, puis son onzième élément? On ne peut pas aller chercher directement cet élément ? C'est bien cela ?
 
Dernière édition:
Re : Utiliser un calculeur du Web avec VBA

François ... comment te le dire ...??? 😎

Tu as tout compris ... !!!

Effectivement, les éléments uniques sont facilement identifiables et peuvent être accédés "en direct"...
tandis qu'une multitude de tables, que rien ne différencie, oblige le code à faire des boucles et des tests de "localisation" ...

A +
🙂
 
Re: Re : Utiliser un calculeur du Web avec VBA

Merci pour les encouragements mais la journée a été plus décevante:

L'exécution s'est, en effet, montrée très capricieuse:
Par moments, il y a à nouveau plantage lors du premier changement à effectuer sur la page.
A d'autres, le résultat affiché est celui de l'EV avant les changements (0.0248).
Si on exécute pas à pas (avec F8), on arrive bien au bon résultat (celui après changements).
Il semble donc qu'il faille un timing parfait: il faut effectuer les changements quand la page est entièrement loadée et enregistrer le résultats quand les changements sont effectivement validés.

Do Until IE.readyState = 4 / DoEvents/Loop est-il vraiment préférable à Do While IE.Busy/ Loop ?
 
Dernière édition:
Re : Utiliser un calculeur du Web avec VBA

Re,

Effectivement, suivant le traffic sur le réseau, la charge du serveur, le timing change ...
et le code VBA s'éxécute plus rapidement que les réponses du serveur ...

Pour ce qui des loops, il n'y a malheureusement pas de règle pour la plus efficace ...
c'est au cas par cas ... avec des tests, que tu détermines l'optimale ...
une astuce pas orthodoxe que j'utilise parfois ... je les insère toutes les deux avant la boucle sur les tables ...

A +
🙂
 
Re: Re : Utiliser un calculeur du Web avec VBA

Re,

Ces problèmes de timing me poussent à poser 2 questions supplémentaires:

Ne puis-je pas supprimer le problème de l'ouverture de la page web de la façon suivante:
Au lieu de déclencher l'ouverture par VBA, je peux l'ouvrir au préalable manuellement.
N'y a t-il pas moyen alors seulement de rechercher cette page (déjà ouverte) par VBA?

Pour le deuxième problème de timing, ne pourrait-on pas (au lieu de mettre des loops qui se révèlent plutôt imprévisibles) tester que les changements ont bien été effectivement enregistrés ?
Je pense à While :
While tel changement n'a pas été effectué
va faire un tour
Wend
 
Re : Utiliser un calculeur du Web avec VBA

Re,

Je pense que tu commences à mieux comprendre la raison pour laquelle, dès que je trouve un moment, je vais creuser plus avant l' objet XMLHTTP qui, d'après ce que certains disent, est plus souple et beaucoup plus rapide ... ( à voir )

Perso, je n'ai jamais testé la boucle While avec IE... fais le pour voir ... d'après moi, cela ne devrait pas changer ... mais seul le test peut trancher ...
Il parait aussi que Firefox est beaucoup plus rapide ... mais je n'ai pas pris le temps du test ...

A +
🙂
 
Re: Re : Utiliser un calculeur du Web avec VBA

Bonsoir James,
Je n'ai plus de plantage, ni de mauvais résultat en ajoutant Application.Wait Now + 2 / 3600 / 24 juste avant la boucle permettant de récupérer le résultat.
Merci encore beaucoup pour ta patience et ton aide.
 
Re : Re: Re : Utiliser un calculeur du Web avec VBA

Bonsoir James,
Je n'ai plus de plantage, ni de mauvais résultat en ajoutant Application.Wait Now + 2 / 3600 / 24 juste avant la boucle permettant de récupérer le résultat.
Merci encore beaucoup pour ta patience et ton aide.

Bonsoir François,

Encore une fois, toutes mes félicitations pour ta persévérance dans les tests !!! ...
Ce qui t'a mené à la solution ... 😎

A +
🙂
 
Re: Re : Re: Re : Utiliser un calculeur du Web avec VBA

Ce qui t'a mené à la solution ...
Bonjour,
Oui, je crois que j'y suis. Voici quelques remarques finales pour clore le sujet:

L'exécution du programme est certes ralentie par ces boucles et ces pauses qui permettent à la page Web de se charger, d'attendre les changements ou d'afficher les résultats mais je suis arrivé à mon but en automatisant ces tâches.
IE.document.getElementsByTagName("INPUT") permettait (du moins dans cette page Web) de rechercher les boutons radio mais pas les checkbox:
Il est en fait possible d'intervenir directement sur les uns et les autres avec:
IE.document.getElementById("identité du radio ou du checkbox").Checked = True

Encore tous mes remerciements à James sans qui je n'aurais jamais pu conclure en particulier en ce qui concerne les Tables.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

R
Réponses
0
Affichages
1 K
roland78
R
N
Réponses
2
Affichages
1 K
N
Retour