Bonsoir,
Pour faire vite et simplement, pour que ça fonctionne.
Mais le code doit être optimisé...
Pas besoin d'ouvrir une nouvelle instance d'Excel dans la mesure ou il est déja actif
Private Sub CommandButton1_Click()
'Déclaration des variables
Dim NmFich As String
Dim xlApp As Excel.Application 'Application Excel
Dim xlWb As Excel.Workbook 'Classeur Excel
Dim xlSh As Excel.Worksheet 'Feuille Excel
Dim CeClasseur As String 'Nom de ce classeur
Dim Derligne As Long
Dim Plage As Range
Application.ScreenUpdating = False
CeClasseur = ThisWorkbook.Name
With Application.FileDialog(msoFileDialogOpen)
.Title = "Recherche fichier à ouvrir"
.ButtonName = "Ouvrir"
If Not .Show = -1 Then Exit Sub
NmFich = .SelectedItems(1)
Set xlApp = CreateObject("Excel.Application")
Set xlWb = Workbooks.Open(NmFich)
Set xlSh = xlWb.Worksheets(1)
End With
With Workbooks(CeClasseur).Sheets("feuil1")
.Cells.ClearContents
Derligne = xlSh.Range("B" & Rows.Count).End(xlUp).Row
Set Plage = xlSh.Range("B4:E" & Derligne)
Plage.Copy Destination:=.Cells(1, 1)
End With
Application.Windows(2).Activate
xlWb.Close
End Sub