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-30T19:54:34+00:00

    Bonjour,

    La macro "Télécharger_Page_Web", c'était simplement un petit exemple

    quant à la facilité de télécharger le contenu d'une page Web et le fait

    que l'adresse du site que tu suggérais dans la macro  "Sub dow()" ne

    fonctionnait pas. À cet égard, j'ai même tenté de l'importer manuellement

    à l'aide des commandes de la feuille de calcul, et je suis arrivé au même résultat.

    Loin de moi, la pensée que tu devrais remplacer ton code par celui de mon

    petit exemple.

    Quand j'exécute cette macro en utilisant ton adresse :

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

    Sub Télécharger_Page_Web()

    Dim AdrURL As String, Hpl As String

    'L'adresse de la page Web à télécharger

     Hpl = "http://www.bloomberg.com/quote/SPX:IND"

       AdrURL = "URL;" & Hpl

       'le paramètre False de la méthode Refresh permet

       'de ne rendre la main à Excel que lorsque les données

       'ont été entièrement transférées dans la feuille de calcul

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

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

     End Sub

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

    J'obtiens ceci... sans égard à ce que tu recherches comme résultat,

    il y a au moins le renvoi de données!

    Open: 1,979.49 Day Range: 1,974.75 - 1,999.40 Year To Date: +9.40%
    Previous Close: 1,982.30 52-Week Range: 1,737.92 - 2,019.26 1-Year: +15.14%

    La question que je me pose, est-ce possible que certains sites Web utilisent des astuces afin d'empêcher le téléchargement du contenu des pages Web qu'ils exhibent? J'avoue ne pas m'y connaître beaucoup en codage de page Web. De quelles astuces s'agit-il? Peut-on passer outre dans une procédure VBA? J'avoue mon ignorance sur ce sujet.  As-tu déjà demandé à un forum qui traite essentiellement de ce sujet de se pencher sur cette question?

    Dans le classeur que tu as publié, la macro "Sub dax()" extrait bien la totalité du texte de la page Web

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

    Le code que tu as publié dans ce fil est différent. As-tu réellement une connexion qui porte le nom de

    "Bloomberg"? Ce à quoi tu fais référence dans cette ligne de code? Pourquoi as-tu enlevé le "False" à la ligne de code? Dans le message précédent, j'explique la raison de ce paramètre. As-tu pris le temps de lire?

    "ThisWorkbook.Connections("Bloomberg").Refresh"

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

    0 commentaires Aucun commentaire
  2. Anonyme
    2014-10-30T19:20:32+00:00

    wouaaahhhh.... beaucoup de réponses, MERCI... malheureusement.. peu de résulta....

    reprenons dans l'ordre ;

    1° réintégration de mon application Excel  OK

    2° la macro VBA pour supprimer les connexions marche bien   OK

    3° la macro VBA   DAX sur Bloomberg qui marche chez vous ne marche pas chez moi...

    'macro modifiée sur FORUM par Daniel reste bloquée ... sur ThisWorkbook.Connections("Bloomberg").Refresh........

    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

    ThisWorkbook.Connections("Bloomberg").Refresh

    .UsedRange.Clear

      URL1 = BaseUrl & C

    4° la requête par données / WEB.. etc... (que j'avais déjà essayée) ne marche pas et pour n'importe quel site renvoie :

    Turn History On
    Clear All Turn Off
    Quick links to your favorite sites:
    Modify Tab Settings Help Privacy Policy Settings
    Distributed by Mindspark Interactive Network, Inc.

    5° la macro VBA que vous recommandez

    Sub Telecharger_Page_Web()

    Dim AdrURL As String, Hpl As String

    Hpl = "http://www.bloomberg.com/quote/SPX:IND"

    AdrURL = "URL:" & Hpl

    ActiveSheet.QueryTables.Add(Connection:=AdrURL, Destination:=Range("A15")).Refresh False

    ' moi je reste bloqué sur l'instruction précédente et si après la virgule je met le caractère _ il me dit que ce caractère est erroné pourtant accepté dans le titre !

    End Sub

    voilà, j'espère que ceci peut vous éclairer... en revenant toujours à une question n'est ce pas un problème de logiciel ou de Windows ?

    merci

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

    0 commentaires Aucun commentaire
  3. Anonyme
    2014-10-30T17:25:28+00:00

    Bonjour Daniel,

    Pourtant, lorsque l'on colle l'adresse directement dans la barre d'adresse d'internet Explorer, la page Web s'ouvre correctement!

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

    0 commentaires Aucun commentaire