Merci, finalement j'ai réussi à m'en sortir en faisant un mix des 2.
Pour ceux que ça interesse, en gros, j'ai un premier classeur avec une feuille "Feuil1" et une feuille "Résumé" qui dépend de valeurs de Feuil1, mais qui dépend aussi d'autres feuilles de ce classeur qui elles ne changeront pas. J'ai un 2eme classeur avec les même 2 feuilles que le premier classeur (mais avec des données qui changent).
Je cherche à remplacer "Feuil1" du 1er classeur par "Feuil1" du 2eme, tout en m'assurant que les valeurs dont dépend "Résumé" du premier classeur n'ait pas de liens cassés (des liens qui pointent vers la nouvelle "Feuil1" mais aussi les autres feuilles qui changent pas).
Après cassage de tête, voila ce que je fais,
J'efface "Résumé" du classeur 2, et le remplace par "Résumé" du classeur 1, et je corrige les liaisons du classeur 2 avec ChangeLinks.
Ensuite, j'efface "Feuil1" et "Résumé" du classeur 1, et je les remplace par celle du classeur 2, et je corrige les liaisons du classeur 1 encore avec ChangeLinks.
Le tout avec des Application.DisplayAlerts = False pour pas qu'Excel m'emmerde en plein milieu des opérations.
Le tout marche et fait exactement ce que je veux, mais c'est assez bordélique comme méthode, si qq'un a une meilleure idée je suis quand même preneur.
Sub Importer()
Dim classeur As String
Dim feuille As String
Dim chemin As String
classeur = Application.GetOpenFilename(FileFilter:="Fichiers Excel (*.xls), *.xls", Title:="Choisir un fichier Excel")
Workbooks.Open classeur
feuille = Workbooks(2).ActiveSheet.Name
'step1
Application.DisplayAlerts = False
Workbooks(2).Sheets("Résumé").Delete
Workbooks(1).Sheets("Résumé").Copy after:=Workbooks(2).Sheets("Navigation")
alinks = Workbooks(2).LinkSources(xlExcelLinks)
chemin = Workbooks(2).Path & "\" & feuille & ".xls"
Workbooks(2).ChangeLink alinks(1), chemin, xlExcelLinks
'step2
Application.DisplayAlerts = False
Workbooks(1).Sheets(feuille).Delete
Workbooks(1).Sheets("Résumé").Delete
Workbooks(2).Sheets(feuille).Copy after:=Workbooks(1).Sheets("Navigation")
Workbooks(2).Sheets("Résumé").Copy after:=Workbooks(1).Sheets("Navigation")
alinks = Workbooks(1).LinkSources(xlExcelLinks)
chemin = Workbooks(1).Path & "\" & Workbooks(1).Name
Workbooks(1).ChangeLink alinks(1), chemin, xlExcelLinks
Application.DisplayAlerts = True
End Sub
a+
Grotone