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-10-30T23:02:38+00:00

    Je publie un fichier créant un tableau du taux de change à partir d'un site Web.

    L'objectif est de démonter l'usage de la méthode que tu utilises, c'est-à-dire,

    extraire des données à partir d'un tableau particulier situé sur un site Web.

    http://cjoint.com/?DJExzVsiQYE

    Ce que tu tentes de faire dans les procédures de ton fichier, c'est d'appliquer la même

    macro, peu importe la manière dont est construit le site Web. C'est comme si ta macro

    voulait extraire des données de textbox dans différents classeurs et que tu utilisais tout

    le temps le même nom des objets même si ces objets changent de nom d'un classeur à

    l'autre.

    Si dans la page Web, il n'y a pas de tableau (table) pour présenter les données, je ne vois

    pas pourquoi tu t'obstines à définir cette ligne .WebTables = "28", cette table n'existe pas

    sur le site Web.

    Le plus difficile, c'est de trouver la méthode la plus efficace pour extraire les données

    que l'on désire selon la structure du design du site Web. En fait, un site web peut

    modifier ce dernier et par conséquent rendre inopérante la macro qui fonctionnait très

    bien hier!

    Une dernière approche, cela est la troisième approche que je te donne en exemple.

    Il s'agit de trouver la meilleure solution selon le site Web...

    Tu as du boulot sur la planche!!!

    Tu colles ce code dans un module d'un classeur vierge et tu exécutes.


    Sub Comparer_Taux_De_Change()

    Dim Wk As Workbook, Rg As Range

    Application.ScreenUpdating = False

    'On peut ouvrir certains sites Web directement dans Excel

    Set Wk = Workbooks.Open("http://www.x-rates.com/d/CAD/table.html")

    Set Rg = Wk.Worksheets(1).Cells.Find("EURO")

    If Not Rg Is Nothing Then

        With ThisWorkbook.Sheets(1)

            .Range("A1") = "Monnaie du pays"

            .Range("B1") = "Valeur du CAD par rapport à la monnaie"

            .Range("C1") = "Valeur de la monnaie par rapport au CAD"

            .Range("A1").Resize(, 3).Font.Bold = True

            .Range("A1").Resize(, 3).EntireColumn.AutoFit

            .Cells(2, 1) = "EURO"

            .Cells(2, 1).Resize(, 3) = Rg.Resize(, 3).Value

        End With

    End If

    Wk.Close False

    End Sub

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

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

    0 commentaires Aucun commentaire
  2. DanielCo 107.1K Points de réputation
    2014-10-30T20:40:52+00:00

    Bonsoir Denis,

    Oui, ça sent le bug. La macro tourne parfaitement avec Excel 2007. J'avais déjà fait remonter un bug presque similaire avec un utilisateur qui l'avait rencontré lors de son passage à Excel 2010. Le problème était moins grave puisque le problème ne se produisait que si l'actualisation se faisait en arrière-plan, ce qui n'est pas le cas ici.

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

    0 commentaires Aucun commentaire
  3. DanielCo 107.1K Points de réputation
    2014-10-30T20:25:54+00:00

    Je ne retrouve plus ma réponse dans laquelle je mentionnais qu'il n'y avait pas de problème avec Excel 2007.

    Daniel

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

    0 commentaires Aucun commentaire