[Excel 2010] Problème de récupération d'URL variable
Bonjour à tous,
Je travaille sur un projet pour lequel je dois télécharger un fichier excel sur le site d'EDF ("Toutes les versions de chaque indisponibilité (.xlsx)") puis extraire et exploiter certaines données.
J'utilisais ce simple morceau de code qui marchait parfaitement, pour ouvrir directement le fichier dans excel sans le télécharger, à l'aide de l'URL récupérée sur la page avec le code suivant :
Code:
1 2
| fichier = "https://www.edf.fr/doaat/export/light/all-versions?1510242467"
Workbooks.Open fichier |
Je me suis cependant aperçu que le nombre à la fin de l'URL variait en permanence, me faisant ainsi travailler avec un fichier qui n'était pas à jour. J'ai donc opté pour une solution où je récupère directement l'URL sur le code source de la page avec la fonction suivante (récupérée sur cette page) dans un module à part. Les arguments sont le texte présent au milieu de l'URL qui me permet de détecter où celle-ci est présente dans le code source et le nombre de caractère que je conserve pour les concaténer à l'URL que je veux ouvrir dans Excel.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| Option Explicit
Private Function ExctractSourceCode(LienURL As String)
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", LienURL, False
.Send
If .ReadyState = 4 Then
If .Status <> 200 Then
ExctractSourceCode = CVErr(xlErrNA)
Else
ExctractSourceCode = .ResponseText
End If
Else
ExctractSourceCode = CVErr(xlErrNA)
End If
End With
End Function
Public Function ExtractURL(Link As String, Length As Integer)
Dim MonLienURL As String
MonLienURL = "https://www.edf.fr/groupe-edf/qui-sommes-nous/activites/optimisation-et-trading/listes-des-indisponibilites-et-des-messages/liste-des-indisponibilites"
CodeHTML = ExctractSourceCode(MonLienURL)
Link = Mid(CodeHTML, InStr(CodeHTML, Link), Length) 'Récupère le code en chiffres qui caractérise la variation temporelle de l'URL
End Function |
Fonction que j'appelle dans ma procédure comme ceci pour concaténer le bon nombre à la fin du début de l'URL, qui lui ne varie pas et ouvrir un lien à jour :
Code:
1 2 3 4
| Dim FileVersion As String
Call ExtractURL(FileVersion, 23)
fichier = "https://www.edf.fr/doaat/export/light/" & FileVersion
Workbooks.Open fichier |
Hélas, ça ne fonctionne pas, je constate que le fichier s'ouvre bien, mais bloqué à certains moments de la journée, sans afficher les dernières mises à jour... Et quand j'exécute le code pas à pas, l'URL ne varie pas et c'est toujours le même nombre qui m'est renvoyé.
Peut-être que la recherche de l'URL dans le code source est l'endroit qui ne va pas et qu'il me renvoie un URL fixe mais j'ai cherché sur la page et je n'ai pas trouvé d'autre occurrence.
Avez-vous des idées quant à l'origine du problème ?
Merci d'avoir pris le temps de me lire,
Aiklad