requete sur le WEB

Anonyme
2014-10-28T10:19:07+00:00

Bonjour,

J'utilise cette macro VBA en Windows7 et Excel 2010 depuis plusieurs années pour consulter un site sur le WEB et importer des données dans une application Excel.....  depuis 15 jours elle ne fonctionne plus... et reste bloquée sur l'instruction en gras, j'ai essayé de faire des requêtes par "données/ requête sur le WEB"sans plus de succès....

J'ai absolument besoin de trouver une solution.....   qui peut m'aider ? help !!!!!

A l'avance merci,

Sub dax()

    Sheets("Base").Activate

Application.ScreenUpdating = False

    Application.Calculation = xlCalculationManual

    Sheets("tempo").Activate

Dim Tablo() As Variant, C As Variant, Cible As Object

Dim Tempo As Worksheet, Qaddress As String

Dim URL1 As String, BaseUrl As String, Quoi As String

Dim Y As Long, Ky&, Start&

Quoi = "Vente"

Application.Calculation = xlCalculationManual

BaseUrl = "URL;http://www.bloomberg.com/quote/DAX:IND"

Set Tempo = Feuil2

With Feuil2

.Activate

.UsedRange.Clear

  URL1 = BaseUrl & C

  With Tempo.QueryTables.Add(Connection:=URL1, Destination:=Tempo.Range("A2"))

    .BackgroundQuery = False

    .WebFormatting = xlWebFormattingNone

    .WebTables = "28"

    .TablesOnlyFromHTML = False

    .RefreshOnFileOpen = False

    .Refresh BackgroundQuery:=False

    .SaveData = True

     Set Cible = Range("A1:CQ9000").Find(Quoi, LookIn:=xlValues)

  End With

End With..... etc.....pour chercher et formater le cours recherché....

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
Anonyme
2014-10-28T20:05:55+00:00

Si la suggestion de Daniel ne répond pas à tes attentes,

Explique ce que tu fais dans ce classeur.

Est-ce que tu répètes toujours la même macro?

Si tu veux rafraîchir les données du QueryTable en utilisant toujours la

même requête, c'est ligne de code est suffisante... Adapte le nom de la feuille

Feuil2.QueryTables(1).Refresh BackgroundQuery:=False

À chaque fois que tu exécutes la macro, une connexion s'ajoute au classeur et

aussi une plage nommée du nom du QueryTable. La procédure suivante supprime

toutes les connections du classeur et les plages nommées. Après quoi, tu peux

employer ta macro si c'est cela que tu préfères...

'-------------------------------------------------

Sub test()

Dim Nb As Long, N As Name

'Suppression de toutes les connections du classeur

With ThisWorkbook.Connections

    Nb = .Count

    For a = 1 To Nb

        .Item(a).Delete

    Next

End With

'Suppression de tous les noms du classeur.

For Each N In ThisWorkbook.Names

    N.Delete

Next

End Sub

'-------------------------------------------------

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
DanielCo 107.1K Points de réputation
2014-10-28T19:30:35+00:00

Essaie donc, au lieu de recréer ta connexion :

ActiveWorkbook.Connections("Connexion").Refresh

en reprenant le nom de ta connexion. Sinon, essaie aussi avec :

.Refresh

au lieu de :

.Refresh BackgroundQuery:=False

Daniel

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire

29 réponses supplémentaires

  1. Anonyme
    2014-11-03T08:59:53+00:00

    Merci à M.D pour la mini application de requête   http://cjoint.com/?DJExzVsiQYE  avec macro très documentée, en tant qu'application elle ne m'est pas utile mais en tant qu'exemple pour faire autre chose elle me sera très utile.

    Ce Week End, j'ai tout de même pu avancer et reconstituer 2 de mes applications sur 3.

    Pour faire le point :

    1° faire des requêtes laisse des historiques de connections à effacer OK enregistré

    2° faire des requêtes, selon votre macro implique de prendre uniquement les "tables" d'un site WEB

    et ceci marche bien et m'a permis de résoudre un certain nombre de problèmes avec par exemple la macro :

    Sub invesco()

    Sheets("tempo").Activate

    Range("a1:V1398").Clear

    Dim AdrURL As String, Hpl As String

    Hpl = "http://www.morningstar.fr/fr/funds/snapshot/snapshot.aspx?id=F00000027O"

    AdrURL = "URL;" & Hpl

    ActiveSheet.QueryTables.Add(Connection:=AdrURL, _

    Destination:=Range("A1")).Refresh False

    etc.... pour le formatage et transfert dans les feuilles.....

    3° Mais il me reste à trouver comment importer les données d'un site qui sont hors table ?

    prenons un exemple, allez sur le site WEB suivant avec l'adresse

     http://www.bloomberg.com/quote/DAX:IND

     Lorsque cette page s'affiche sur le WEB en gras, vous verrez sur une des premières lignes à côté de DAX:IND on a le cours en temps réel actuellement soit +/- 9325,25... c'est pour une de mes applications uniquement cette données qui m'intéresse !

    4° En ce qui concerne l'adresse WEB que j'utilisais http://boerse.dab-bank.de/maerkte-kurse/indizes/indizes-suche/id\_20735.html?idNotation=20735&factsheetTab=overview

    je reste persuadé qu'au environ du 10 octobre une modification de Window7 ou d'Excel10 empêche cet accès.... me dit un ami toujours accessible sur une mes anciennes version en Vista et Excel7 !

    Cela irait-il mieux en Excel 2013 ou alors est-ce un problème de table peut être inexistant sur ce site ?

    Que ferais-je sans vous ! 

    Merci,

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2014-10-31T08:29:28+00:00

    ... vous êtes des humains ou des zombies qui ne dorment jamais ?

    merci pour votre nouveau déluges de réponses :

    dans l'ordre :

    1° la macro Sub Télécharger_Page_Web ( )

    fonctionne aussi chez moi avec les mêmes réponses qui sont OK

    2° oui il est fort possible que les gestionnaires des sites WEB concernés mettent des verrouscontre des intrusions extérieures... il s'agit de sites financiers , parfois de banques et celles ci se protègent.

    Par contre, il y a des sites qui sont "open" aux utilisateurs...  notamment Bloomberg... qui n'est pas une macro mais le nom d'un des plus importants sites financiers distributeurs d'informations financières.

    Par le passé en essayant d'entrer sur des sites il m'est arrivé de recevoir en retour du courrier avec mise en demeure de plaintes en Justice pour tentatives d'intrusions.... sans pourtant que cela n'ait été jusque là !

    Mais je n'ai plus essayé !

    3° Est-ce que passez à Office2013 serait  une bonne solution ?

    4° Oui je sais... il y a des "tables" et du "texte".... mais je ne m'était pas penché sur la question dans la mesure où ma macro initiale (copie d'une autre macro que j'avais reçue sur un forum et modifié à  mes besoins)  fonctionnait et me donnait ce que je demandais

    5° La macro Sub Comparer_Taux_de_Change( )

    marche bien dans une nouvelle application !

    Comme vous dites, oui j'ai du pain sur la planche, je vais maintenant essayer d'intégrer tout ça dans mon application et voir ce que cela donne...          je vous tiens au courant.

    encore mille mercis,

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2014-10-30T23:07:15+00:00

    Merci, Daniel, si en plus il y a un bogue... du plaisir en perspective pour le demandeur!

    ;-))

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire