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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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 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 : 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
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