Bonjour à tous,

J'ai un petit soucis de ChangeLink, j'essaye de faire une macro qui remplace un lien dans mon classeur, on identifie le lien en question par sa date, on demande a l'utilisateur la date à changer et la nouvelle date. Début 2017 le nom du fichier (mais pas sa structure) a changé donc suivant la date qu'on demande le chemin est différent, mais le chemin fonctionne puisque j'arrive a ouvrir le fichier de données.
Par contre quand j'arrive au ChangeLink, il me renvoie une erreur 1004 "une formule contient une/des références invalides.
Je n'arrive pas a comprendre pourquoi.

Voici le code que j'ai obtenu via l'enregistreur de macro:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
    ActiveWorkbook.ChangeLink Name:= _
        "X:\EXPOSURE\2017\2017_05\201705_ICP_Exposure_by_contract_data.xlsx", NewName _
        :="X:\EXPOSURE\2016\201612_Exposure consummer credit by contract.xls", Type _
        :=xlExcelLinks
Et le code que j'ai écrit:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Sub MaJ_Tab()
Application.ScreenUpdating = False
 
Dim crit As Boolean, datea As String, daten As String
Dim liens(4) As String, an As String, mois As String, chem1 As String, chem2 As String
Dim i As Long, j As Long
 
i = 1
For Each link In ActiveWorkbook.LinkSources
Workbooks.Open Filename:=link, UpdateLinks:=False
liens(i) = ActiveWorkbook.Name
i = i + 1
Next link
 
crit = False
Do While Not (crit)
datea = InputBox("Quel est la date a modifier? (format YYYYMM)")
If Len(datea) = 6 And IsNumeric(datea) Then crit = True
Loop
crit = False
Do While Not (crit)
daten = InputBox("Quel est la  nouvelle date? (format YYYYMM)")
If Len(daten) = 6 And IsNumeric(daten) Then crit = True
Loop
an = Left(daten, 4)
mois = Right(daten, 2)
an_a = Left(datea, 4)
mois_a = Right(datea, 2)
 
If an < 2017 Then
    chem1 = "X:\EXPOSURE\" & an & "\"
    chem2 = an & mois & "_Exposure consummer credit by contract.xls"
Else
    chem1 = "X:\EXPOSURE\" & an & "\" & an & "_" & mois & "\"
    chem2 = an & mois & "_ICP_Exposure_by_contract_data.xlsx"
End If
If an_a < 2017 Then
    chem1a = "X:\EXPOSURE\" & an_a & "\"
    chem2a = an_a & mois_a & "_Exposure consummer credit by contract.xls"
Else
    chem1a = "X:\EXPOSURE\" & an_a & "\" & an_a & "_" & mois_a & "\"
    chem2a = an_a & mois_a & "_ICP_Exposure_by_contract_data.xlsx"
End If
Workbooks.Open chem1 & chem2
Workbooks.Open chem1a & chem2a
ThisWorkbook.ChangeLink Name:=chem1a & chem2a, NewName:=chem1 & chem2, Type:=xlExcelLinks
 
'ThisWorkbook.Sheets("graph").Range("A1:E30").Replace What:=datea, Replacement:=daten, LookAt:=xlPart, _
'        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
'        ReplaceFormat:=False
ThisWorkbook.Sheets("graph").Range("A1:E30").Replace What:=Right(datea, 2) & "/" & Left(datea, 4), Replacement:=Right(daten, 2) & "/" & Left(daten, 4), _
    LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
 
ThisWorkbook.Save
For j = i - 1 To 1 Step -1
Workbooks(liens(j)).Close False
Next j
Workbooks(chem2).Close False
Application.ScreenUpdating = True
End Sub
Merci d'avance.