Private Sub Workbook_Activate()
Dim i%, dat As Date, memdat As Date, n%, wb As Workbook, ouvre As Boolean
'---initialisations à adapter---
Dim chemin(1 To 2), fichier(1 To 2)
chemin(1) = Me.Path & "\"
chemin(2) = Me.Path & "\"
fichier(1) = "Fichier1.xlsm"
fichier(2) = "Fichier2.xlsm"
'---dates/heures de dernière modification---
On Error Resume Next 'si un fichier n'est pas trouvé
For i = 1 To UBound(chemin)
dat = 0
dat = FileDateTime(chemin(i) & fichier(i))
If dat > memdat Then memdat = dat: n = i
Next
If Me.FullName = chemin(n) & fichier(n) Then Exit Sub
'---copie la cellule "Cible"---
Application.EnableEvents = False 'désactive les évènements
Set wb = Workbooks(fichier(n))
If wb Is Nothing Then ouvre = True: Application.ScreenUpdating = False: _
Set wb = Workbooks.Open(chemin(n) & fichier(n))
Evaluate("'" & wb.Name & "'!Cible").Copy Evaluate("'" & Me.Name & "'!Cible") 'cellules nommées
If ouvre Then wb.Close False
Application.EnableEvents = True ' réactive les évènements
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
With Evaluate("'" & Me.Name & "'!Cible") 'cellule nommée
If Sh.Name = .Parent.Name Then If Not Intersect(Target, .Cells) Is Nothing Then Me.Save
End With
End Sub