In fine, cela ne fonctionne pas aussi bien que prévu.
Ce qu'il faudrait alors, c'est définir une zone pour définir le répertoire où se trouve la source, tester la zone, si elle est vierge stopper la macro et demander la mise à jour de cette zone, demander ensuite de fermer et relancer le fichier...
Sinon, j'ai mis à jour le programme ...
dans workbook
Const dossier = "Z:\TEST\"
Const source = "GPC_V3.xlsm"
Private Sub Workbook_Open()
actualiser Sheets("Répartition").Range("D7:I11"), dossier, source
actualiser Sheets("Répartition").Range("L7:P11"), dossier, source
actualiser Sheets("Répartition").Range("S2"), dossier, source
actualiser Sheets("SOURCE").Range("A1:L29"), dossier, source
' MsgBox "Les données source ont été actualisées !"
End Sub
Dans un module
Option Explicit
Sub actualiser(plage As Range, chemin As String, fichier As String)
Dim cel As Range
For Each cel In plage
cel.FormulaR1C1 = "=IF('" & chemin & "[" & fichier & "]" & cel.Parent.Name & "'!R" & cel.Row & "C" & cel.Column & "="""","""",'" & chemin & "[" & fichier & "]" & cel.Parent.Name & "'!R" & cel.Row & "C" & cel.Column & ")"
Next
plage.Copy
plage.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Je vais essayer de voir si je peux gagner un peu de temps sur le chargement tout en restant très flexible.