Option Explicit
Sub test1()
'pour une plage classique
Dim chemin$, fichier$, feuille$, rngsource As Range, rngdestination As Range
chemin = ThisWorkbook.Path & "\" 'ne pas oublier le dernier slach
fichier = "source.xlsx"
feuille = "toto"
Set rngsource = [b4:d10]
Set rngdestination = Sheets("Feuil1").[A1]
GetTableOnClosedFich chemin, fichier, feuille, rngsource, rngdestination
End Sub
Sub GetTableOnClosedFich(chemin$, fichier$, feuille$, rng As Range, rngD As Range)
ThisWorkbook.Names.Add "plage", RefersTo:="='" & chemin & "[" & fichier & "]Feuil1'!" & "Tableau1"
' me donne qu'une partie du tableau
With rngD.Resize(rng.Rows.Count, rng.Columns.Count)
.Value = "=plage"
.Value = .Value
End With
' me donne le tableau mais en partant de A1 de la source et donc des ligne et ou colonnes "#VALEUR"
With rngD.Resize(rng.Rows.Count + 3, rng.Columns.Count + 1)
.Value = "=plage"
.Value = .Value
End With
ThisWorkbook.Names("plage").Delete
End Sub