XL 2019 VBA -Message d'erreur sur requête Web

Spitnolan08

XLDnaute Barbatruc
Bonjour à tous,

Je cherche à télécharger des séries d'indices à partir de l'INSEE dont par exemple : https://www.insee.fr/fr/statistiques/serie/001710986#Tableau

J'ai obtenu le lien de téléchargement à partir du bouton Télécharger.

Mais lorsque je lance l'opération via VBA j'obtiens le message d'erreur suivant :

1611838110310.png
Mon code :

VB:
Sub MacroTest()
Site = "https://www.insee.fr/fr/statistiques/serie/telecharger/001710986?ordre=antechronologique&transposition=donneescolonne&periodeDebut=1&anneeDebut=2020&periodeFin=10&anneeFin=2020"
Application.DisplayAlerts = False
Set Sht = Sheets.Add(, ActiveSheet)
Sht.Name = "BT01"
With Sheets("BT01")
        ThisWorkbook.XmlImport Url:=Site, ImportMap:=Nothing, Overwrite:=True, Destination:=.Range("A3")
End With

End Sub
Bien sûr, en téléchargement direct, aucun problème...
Des explications du message d'erreur et des propositions ?
Merci de votre aide
 
Solution
Merci sylvanu,

Ben oui, mais c'est bien sûr !
Un peu fatigué le gars ! Il s'imaginait que par magie le fichier zip allait se dézipper tout seul et se mettre au garde à vous ....
Mais alors comment contourner le pb ?

J'ai bien trouvé grâce à un autre site, une alternative (cf code ci-dessous) mais elle me convient beaucoup moins car elle demande plus de retraitement et surtout télécharge énormément de données. Or, il faudrait que je réalise pour ma base une cinquantaine de requêtes similaires...
En effet, le but est d'alimenter une feuille de calcul unique regroupant tous les indices BT depuis début 2020 uniquement.
VB:
Sub MacroTest()
Site = "https://bdm.insee.fr/series/sdmx/data/SERIES_BDM/001710986"      
Application.DisplayAlerts =...

sylvanu

XLDnaute Barbatruc
Supporter XLD

Spitnolan08

XLDnaute Barbatruc
Merci sylvanu,

Ben oui, mais c'est bien sûr !
Un peu fatigué le gars ! Il s'imaginait que par magie le fichier zip allait se dézipper tout seul et se mettre au garde à vous ....
Mais alors comment contourner le pb ?

J'ai bien trouvé grâce à un autre site, une alternative (cf code ci-dessous) mais elle me convient beaucoup moins car elle demande plus de retraitement et surtout télécharge énormément de données. Or, il faudrait que je réalise pour ma base une cinquantaine de requêtes similaires...
En effet, le but est d'alimenter une feuille de calcul unique regroupant tous les indices BT depuis début 2020 uniquement.
VB:
Sub MacroTest()
Site = "https://bdm.insee.fr/series/sdmx/data/SERIES_BDM/001710986"      
Application.DisplayAlerts = False
Set Sht = Sheets.Add(, ActiveSheet)
Sht.Name = "BT01"
With Sheets("BT01")
ThisWorkbook.XmlImport Url:=Site, ImportMap:=Nothing, Overwrite:=True, Destination:=.Range("A3")
End With
End Sub

J'ai également essayé de télécharger en une opération l'ensemble (ou presque) de tous les indices qui m'intéressent via la page : https://www.insee.fr/fr/statistiques/series/103173847
mais j'ai fait chou blanc...
Même en manuel je n'y arrive pas !
 
Dernière édition:

Spitnolan08

XLDnaute Barbatruc
Re,

J'ai trouvé comment faire avec mon fichier zip grâce au forum Excel Pratique.

VB:
Option Explicit

#If VBA7 Then
    Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
    (ByVal pCaller As LongPtr, ByVal szURL As String, ByVal szFileName As String, _
    ByVal dwReserved As LongPtr, ByVal lpfnCB As LongPtr) As Long
#Else
    Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
    (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, _
    ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
#End If

Sub Unzip()

    Dim WS As Object, ShApp As Object
    Dim répertoire_zip As String, répertoire_unzip As Variant, URL As String, nom_fichier As Variant
    Dim code_retour As Integer

    '// Assignation répertoires
     Set WS = CreateObject("WScript.Shell")
    répertoire_zip = WS.SpecialFolders("Desktop")
    répertoire_unzip = WS.SpecialFolders("MyDocuments")

    '// Téléchargement fichier
     URL = "https://www.insee.fr/fr/statistiques/serie/telecharger/001710986?ordre=antechronologique&transposition=donneescolonne&periodeDebut=1&anneeDebut=2020&periodeFin=10&anneeFin=2020"
    nom_fichier = répertoire_zip & "\" & "Save.zip"
    code_retour = URLDownloadToFile(0, URL, nom_fichier, 0, 0)
    If code_retour = 0 Then MsgBox "Téléchargement effectué" Else Exit Sub

    '// Dézippage fichier
     Set ShApp = CreateObject("Shell.Application")
    ShApp.Namespace(répertoire_unzip).CopyHere ShApp.Namespace(nom_fichier).items

End Sub

Par contre, pas encore trouvé pour tout télécharger d'un coup...
 

Spitnolan08

XLDnaute Barbatruc
Re,
Finalement, j'ai essayé le téléchargement "simultané" selon méthode du Post #3 de 37 séries différentes et le temps de chargement est relativement court compte tenu de l'importante quantité de données.
J'espère juste que cela n'affectera pas le fonctionnement de mon appli par une mobilisation de trop de ressources.
Merci
 

Statistiques des forums

Discussions
312 213
Messages
2 086 307
Membres
103 174
dernier inscrit
OBUTT