[VBA] Récupérer la data d'un csv depuis son lien de téléchargement

Bonjour à tous !

J'ai un fichier excel qui traite de la donnée que je récupère via un fichier CSV que je télécharge sur un dashboard en ligne.

Je dois régulièrement retélécharger ce fichier et actualiser la donnée sur mon excel pour avoir certains inputs à jour.

Seulement, c'est fastidieux de devoir télécharger à la main le csv, l'ouvrir, convertir les données, copy paste et actualiser à chaque fois que j'ai besoin de travailler dessus.

Je dispose de l'url qui execute le téléchargement direct de mon CSV, j'aimerais pouvoir faire une fonction VBA qui récupère les données de ce CSV et les colle sur la Feuille1 de mon classeur.

J'ai essayé de bidouiller du code (ci-dessous) que j'ai pris d'un collègue, qui fait quelque chose de similaire à ce que je souhaite obtenir, sans succès (le message d'erreur étant "nous ne trouvons pas "C:\Users\xxxx\Desktop\test.csv" alors que si je lis bien le code, mon CSV téléchargé est censé s'enregistrer temporairement au même emplacement que mon excel.

Le problème ne semble pas si compliqué mais je cale, j'aurais besoin de vos lumières

Un grand merci par avance !

<br>

Sub test()

Dim link As String
 link = "www monliendetelechargementdirect com/path?reportFormat=CSV"

Call getdata2(link)

End Sub

Sub getdata2(link)
Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
Dim myurl As String
Dim sh As Object
Dim wb As Object

'disattiva alert e modifiche schermo
Application.ScreenUpdating = False
Application.DisplayAlerts = False

'codice per scaricare csv (preso da internet)
WinHttpReq.Open "GET", link, False
WinHttpReq.send

myurl = WinHttpReq.responseBody
If WinHttpReq.Status = 200 Then
    Set oStream = CreateObject("ADODB.Stream")
    oStream.Open
    oStream.Type = 1
    oStream.Write WinHttpReq.responseBody
    oStream.SaveToFile ThisWorkbook.Path & "\test.csv", 2
    oStream.Close
End If

Set sh = ActiveWorkbook
Set wb = Workbooks.Open(ThisWorkbook.Path & "\test.csv")

'copia scarico
wb.Sheets(1).UsedRange.Copy

'incolla scarico
sh.Worksheets("Feuille 1").Cells(1, 1).PasteSpecial (xlPasteAll)

Application.CutCopyMode = False
wb.Close savechanges:=False
Kill ThisWorkbook.Path & "\test.csv"

End Sub

Bonjour et

Pour ce genre de chose, pourquoi ne pas passer par Power Query

Hello !

J'avais essayé de les récupérer dans power query via la foncionnalité "Données => Obtenir des données => A partir du web" et mettre mon lien,

Sauf j'ai un message d'erreur car excel essaye d'accéder au site comme un utilisateur classique et qu'il faut une connexion via token

image

Essayez cette macro et modifiez son URL (le classeur n'est pas protégé par .htaccess/htpasswd sinon il y aura des identifiants à passer).
Pour l'URL, pas de souci, vous êtes sur mon site perso.

33excel.xlsm (21.90 Ko)

Re,

Hello !

J'avais essayé de les récupérer dans power query via la foncionnalité "Données => Obtenir des données => A partir du web" et mettre mon lien,

Sauf j'ai un message d'erreur car excel essaye d'accéder au site comme un utilisateur classique et qu'il faut une connexion via token

image

Je ne sais pas ou vous allez chercher vos données, mais ce n'est pas un lien valide tout simplement

Hello, merci pour vos retours,

@Bruno Le lien est valide, quand je le rentre dans mon navigateur j'ai le fichier qui se télécharge directement si je me suis authentifié dans les 10h

image

En revanche si je ne suis pas encore authentifié je serai d'abord redirigé sur une page où je dois rentrer un token.

Le lien à ralonge du précédent screen est la page de redirection d'où l'échec du téléchargement.

@Optimix merci pour le fichier !

image

Ce message d'erreur m'est renvoyé en ouvrant mon url avec" Application.Workbooks.Open (url) "

J'ai essayé de m'authentifier sur Edge au préalable, pensant qu'excel allait utiliser ce navigateur pour télécharger le fichier, mais ça ne fonctionne pas

Vous écrivez :

si je me suis authentifié dans les 10h

Votre fichier est donc dans un dossier protégé par des identifiants. Je regarde ça de plus près.
.

Re,

Juste pour info https://learn.microsoft.com/fr-fr/power-query/connector-authentication

Il faut juste donner le lien https:// sans le token

PQ vous demandera alors le type de connexion

C'est juste à titre d'info, je ne sais pas si ça marchera avec votre site

Rechercher des sujets similaires à "vba recuperer data csv lien telechargement"