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 :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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2fichier = "https://www.edf.fr/doaat/export/light/all-versions?1510242467" Workbooks.Open fichier
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 FunctionHé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é.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim FileVersion As String Call ExtractURL(FileVersion, 23) fichier = "https://www.edf.fr/doaat/export/light/" & FileVersion Workbooks.Open fichier
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
Partager