Chargement des cours par Excel. Etat des lieux

Zone d'échange de sources C, C++, Java, VB, VBA et autres...

Modérateur : webmaster

Répondre
Michel_Sacotte
Messages : 4
Enregistré le : 16/05/2009 20:51
Localisation : ROMBAS

Chargement des cours par Excel. Etat des lieux

Message par Michel_Sacotte » 16/05/2009 20:59

Bonsoir,
Je cherche depuis quelques temps à charger des cours de bourse par Excel VBA. Il y a sur le web un certain nombre d'exemples mais à priori ils sont vieux et ne marche pas. Y aurait t'il quelqu'un qui aurait la gentillesse de me dire si des codes marchent et ou les trouver.
Merci d'avance
Michel SACOTTE

Avatar du membre
evaristegalois
Messages : 318
Enregistré le : 05/07/2003 14:04
Contact :

Message par evaristegalois » 18/05/2009 21:40

Quel est ton niveau en VBA? as tu des idées de cotations que tu veux? (Toute la cote, juste quelques uns, ou encore l'historique de tout un titre depuis 10 ans etc..)

Michel_Sacotte
Messages : 4
Enregistré le : 16/05/2009 20:51
Localisation : ROMBAS

Message par Michel_Sacotte » 19/05/2009 21:15

Bonsoir,
Merci d'avoir répondu. J'ai un bon niveau en VBA pour la gestion des cellules, les bases de données de type Mdb....mais je ne connais pas bien les accès aux bases sur serveur.
Je cherche à rapatrier chaque jour les cours du cac 40 et mieux du SRD;
Merci d'avance pour votre aide
Michel
Michel SACOTTE

Avatar du membre
evaristegalois
Messages : 318
Enregistré le : 05/07/2003 14:04
Contact :

Message par evaristegalois » 19/05/2009 22:21

regarde du coté de la référence :
Microsoft winhttp Services (tu peux toujours faire des requetes avec des importations de data, mais le win http est bien plus performant.). Après il faut que tu trouves une page internet qui regroupe toutes les informations voulues.

Code : Tout sélectionner

Sub tt()
Dim myWinHttp As WinHttpRequest
Set myWinHttp = New WinHttpRequest

With myWinHttp
    .Open "GET", "http://www.google.fr", True
    .SetTimeouts 1000, 1000, 1000, 1000
    .Send
    Debug.Print .ResponseText
End With

End Sub

Michel_Sacotte
Messages : 4
Enregistré le : 16/05/2009 20:51
Localisation : ROMBAS

Message par Michel_Sacotte » 01/06/2009 09:36

Bonjour,
Avec ces renseignements et le site http://jacxl.free.fr/cours_xl/cours_xl_ ... ouvrir_web j'ai réussi effectivement à lire les cours de bourse. Cependant ce que je cherche à faire est un petit peu plus compliqué pour moi. Je cherche à lire un fichier .txt envoyé par une requete sur le serveur les échos. Je m'explique:
Je vais sur le site
http://www.boursorama.com/outils/telech ... ment.phtml?
puis je clique sur SRD Puis j'indique la date dans la case indiquée puis je clique sur télécharger et enfin sur enregistrer une fois sur la grille du serveur puis sur windows. Je voudrais automatiser ces opérations chaque jour pour m'éviter cette répétition quotidienne. Est ce possible. Je remercie d'avance celui ou celle qui pourrait me donner quelques indications pour faire cela
Michel
Michel SACOTTE

Avatar du membre
webmaster
Messages : 769
Enregistré le : 14/06/2003 15:21
Contact :

Message par webmaster » 03/07/2009 23:15

Bonsoir,

La page de téléchargement de Boursorama à laquelle vous faites référence est accessible après avoir ouvert une session sur le site. L'ouverture de session génère un id de session stocké dans un cookie. Pour pouvoir accéder à la page de téléchargement, vous devrez ouvrir une session pour récupérer le cookie en question, puis générer la bonne requête contenant le cookie.

Par ailleurs, la requête doit être soumise via un POST et non un GET, vous devez donc passer les paramètres du formulaire dans les en-têtes de la requête HTTP, si vous passez les paramètres directement dans l'URL cela ne fonctionnera pas.

Donc en résumé, il vous faut coder :
- l'ouverture de session (accès à la page pointée par le formulaire d'ouverture de session en passant vos id/pwd) ;
- POST vers la page pointée par le formulaire de téléchargement en passant le cookie et les paramètres souhaités dans les en-têtes de la requête HTTP.

Webmaster

valyno
Messages : 1
Enregistré le : 12/08/2009 16:56

Message par valyno » 12/08/2009 17:02

Bonsoir,

J'avais réalisé une requête qui me permettait de récupérer les cours du SBF120 sur le site de Boursorama, la voici :

Code : Tout sélectionner

Crée la requête vers Boursorama et récupère les cours du SBF 120 J-1 (cours de clôture)
'creation du fichier requête
Open "d:\marequete.iqy" For Output As #1
' Ecrit le contenu de la requête dans le fichier iqy
Print #1, "WEB" & Chr(10) & "1" & Chr(10) & "http://www.boursorama.com/outils/telechargement/telechargement.phtml?hid_date=ok&MARCHE=1rPPX5&CODE=&A_LIBELLE=1&A_SICO=1&A_DATE=1&A_CLOT=1&jour1=" & Feuil9.Range("f2") & "&mois1=" & Feuil9.Range("e2") & "&annee1=" & Feuil9.Range("g2") & "&jour2=" & Feuil9.Range("f2") & "&mois2=" & Feuil9.Range("e2") & "&annee2=" & Feuil9.Range("g2") & "&FILE_FORMAT=EXCEL&ISINY=Y&download=T%E9l%E9charger" & Chr(10) & "Selection = AllTables" & Chr(10) & "Formatting = None" & Chr(10) & "PreFormattedTextToColumns = True" & Chr(10) & "ConsecutiveDelimitersAsOne = True" & Chr(10) & "SingleBlockTextImport = False" & Chr(10) & "DisableDateRecognition = False"
' Ferme le fichier requête
Close #1
' Lance la requête
Feuil8.QueryTables.Add("FINDER;D:\marequete.iqy", Feuil8.Range("A1")).Refresh
Malheureusement, depuis le mois d'octobre 2008, cette requête ne fonctionne plus...
Webmaster, tu parles de procéder par une requête en POST.
Comment fait-on ? je ne connais absolument pas cette méthode (noob inside), j'avais déjà eu bien du mal à écrire ma macro avec la requête dans l'URL...

Merci par avance !

EDIT : je parcours ce forum plein de posts très intéressants...
Je vais peut-être trouver une solution alternative grace aux nombreux exemples de méthodes proposées...

Avatar du membre
webmaster
Messages : 769
Enregistré le : 14/06/2003 15:21
Contact :

Message par webmaster » 13/08/2009 22:17

Bonsoir,

Vous pouvez utiliser la macro fournie dans un autre post sur ce même forum qui permet de récupérer automatiquement les cours sur le site d'Euronext.

Si vous souhaitez accéder au téléchargement de Boursorama, il faut écrire une macro en VBA qui utilise l'API Wininet (Aide MSDN pour Wininet). Cela nécessite quelques connaissances du fonctionnement du protocole HTTP de manière à pouvoir construire la ou les requêtes adéquates. En l'occurence il faudra au moins jouer une requête de connexion à Boursorama pour ouvrir une session côté serveur et obtenir le cookie qui va bien, puis jouer un POST pour la page de téléchargement. En HTTP on peut accéder à une URL via une requête GET ou via une requête POST. Les deux permettent de passer des paramètres (correspondants en l'occurence aux choix et saisies opérées dans le formulaire de téléchargement), mais le POST envoie les paramètres dans les en-têtes de la requête HTTP alors que le GET les envoie sur l'URL (les "?variable1=valeur1&variable2=valeur2" qu'on voit souvent à la fin d'une URL). Il me semble avoir joué à une époque avec le formulaire Boursorama et je crois me souvenir que le serveur n'acceptait que des POST.

Avec Wininet, cela revient à une séquence d'appels à InternetOpen(), InternetConnect(), HttpOpenRequest() et HttpSendRequest() ou HttpSendRequestEx(). Voir "Wininet Reference" puis "WinInetFunctions" dans l'aide du MSDN.

Webmaster

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités