Screener marché boursiers ( Macro Excel )

Screener marché boursiers ( Macro Excel ) - VB/VBA/VBS - Programmation

Marsh Posté le 30-11-2015 à 08:33:23    

Bonjour à tous, dans le cadre de mes activités d'investisseur en bourse, et après avoir longtemps cherché, un petit coup de main m'aiderai beaucoup !
 
 A partir d'une feuille Excel contenant des liens hypertextes en colonne A, je cherche à obtenir un renvoi automatique d'une information dans la page ouverte par ce lien hypertexte, toujours au même endroit.
 
 Le lien ci dessous donne la liste des actions Françaises cotées en bourse via morningstar.fr
 
http://tools.morningstar.fr/fr/sto [...] geId=fr-FR
 
 je fais mon copier coller du listing sur Excel et j'aimerais un renvoi de l'information caractéristiques -> Cours/actif net qui se situe en bas à droite de la fiche société ouverte par le lien hypertexte
 
 Par exemple pour la première de la liste :  
 1000Mercis SA, je cherche le renvoi suivant Cours/actif net = 2.04.
 4Service Cloud, la rien à renvoyer ( c'est une petite société et mornigstar n'a pas les infos)
 A toute vitesse, pareil
 A2micile, pareil  
 Ab science Cours/actif net = -34.70
 
 Le volume pouvant atteindre presque 1400 sociétés à la fois, le fait de tout ouvrir manuellement n'arrange pas mes yeux et prend du temps, c'est pourquoi vos idées m'intéressent.
 
 Merci pour votre aide  
 Valentin

Reply

Marsh Posté le 30-11-2015 à 08:33:23   

Reply

Marsh Posté le 30-11-2015 à 16:55:01    

Bonjour,
 
Je ne sais pas si c'est possible en VBA, mais de toute façon, pose-toi la question de savoir si légalement tu as le droit de faire un robot pour récupérer ce genre d'informations...

Reply

Marsh Posté le 30-11-2015 à 18:52:11    

Bonsoir Atac,  
 
Merci pour ta recomandation
 
Pour le moment le procède manuellement avec une macro qui ouvre les liens hypertextes par lots de 200, puis je ferme au fur et à mesure du visionnage de l'info.
 
Là c'est juste pour gagner 1 jour ou 2 de travail, mais effectivement il faudrait que je leur en parle avant de lancer la moulinette

Reply

Marsh Posté le 30-11-2015 à 18:56:28    

 
           Bonjour, bonjour !
 
           C'est souvent possible, tout dépend en fait de la programmation du site …   Mais ce n'est pas pour autant autorisé !
 
           Il y a tellement d'exemples sur le Web avec différentes méthodes,
           commencer déjà par l'existant d'Excel depuis le menu Données,  A partir du Web  …  (QueryTable en VBA)
 
           Réserver en dernier recours le pilotage d'Internet Explorer assez lent (voir l'exemple de ce forum dans une discussion récente),
           le mieux étant d'utiliser l'outil d'inspection interne à un navigateur afin de reproduire la requête utilisée …
 
           Sans compter les sites se chargeant de collecter les données …
           Bref, en effectuant une recherche digne de ce nom et en se sortant les doigts, il y a des possibilités !
 

Reply

Marsh Posté le 01-12-2015 à 11:18:57    

Outre le fait que pour un tel volume de requêtes, il faut conatcter le site pour demander l'autorisation de leur pomper leurs données (ça ne passera pas inaperçu dans les logs du serveur web du site concerné), le VBA n'est, à mon avis, pas le langage le plus adapté.
 
En 1), je verrais plutôt un script en Perl, PHP ou Python qui, pour chaque URL, va extraire les données souhaitées en manipulant le DOM du HTML de la page. En PHP, il existe les libs Snoopy ou mieux et plus complet, SimpleTest, qui permet de simuler un navigateur web basique (post de formulaire, ouverture de liens, récup du html, extraction de portions...). Y'a aussi cette lib, Simple html dom : http://simplehtmldom.sourceforge.net/
 
2) un script en AutoIt vu que tu es sous Windows. La syntaxe est proche du VBA et il dispose de fonctions pour manipuler des url. Autre avantage : il est possible de compiler en exe le script pour le rendre plus facilement déployable ;)
 
3) une petite appli en C# ou java. Mais là, on rentre de qq chose de plus "bourrin" et demande sans doute plus de compétences en dév. :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 01-12-2015 à 11:38:37    

> En 1), je verrais plutôt un script en Perl,
 
Clair, utilisation du module WWW::Mechanize s'il y a des interactions avec des boites de dialogue, et LWP ou LWP::Simple directement sinon. Et utilisation de Excel::Writer::XLSX pour écrire le document excel.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 01-12-2015 à 12:47:36    

Je ne pratique pas le Perl, c'est pour ça que j'ai proposé PHP avec des libs que j'ai déjà utilisées. Mais je me doutais bien qu'il y avait des équivalents en Perl et certainement en Python ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 01-12-2015 à 16:15:26    

 
            Tout dépend du design du site mais je récupère sans souci des données de pages Web que ce soit en VBScript ou en VBA
            en reproduisant la requête utilisée lors de la navigation via un objet WinHttp.WinHttpRequest ou MSXML2.XMLHttp
            comme bien d'autres …
 
            En dehors d'un outil spécifique à Chrome cité dans le lien au sein de la discussion récente,
            j'ai oublié de citer l'outil selenium-VBA permettant de piloter différents navigateurs dont même un ghost
 
            Mais le plus rapide en VBA est la requête, quand c'est possible …
 

Reply

Marsh Posté le 01-12-2015 à 21:18:32    

Je tiens à tous vous remercier pour vos partages, malgré mon niveau basique en programmation, je vais m'instruire au plus vite..
Dès demain je vais commencer à appliquer tous vos conseils.
Je vous tiens au courant, bonne soirée

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed