Récupérer le nom d'un workbook pour le fermer plus tard

Bonjour,

J'ai construit un fichier avec deux macros:

la première ouvre le navigateur afin de sélectionner un autre fichier duquel importer les données.

Elle va faire une sélection de colonnes et retourne dans mon fichier de base pour les coller.

La seconde macro va traiter les données et les mettre en forme.

Tout va bien mais je n'arrive pas à trouver le moyen de fermer le fichier qui est appelé pour la copie des données, étant donné que je repasse d'abord au fichier de base pour coller les données avant de pouvoir le quitter.

J'ai tenté de faire quelque chose avec la fonction suivante pour récupérer le nom après avoir ouvert le fichier :

'Pop up a window to select the file to import, unfilter the table, copy the columns.

Private Sub GetFileUnfilter()

Dim fNameAndPath As Variant

fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLS), *.XLS", Title:="Select File To Be Opened")

If fNameAndPath = False Then Exit Sub

Workbooks.Open Filename:=fNameAndPath

On Error Resume Next

ActiveSheet.ShowAllData

Columns("A:W").Select

Range(Selection, Selection.End(xlToRight)).Select

Selection.Copy

End Sub

'search for filename

Function FileToClose() As String

FileToClose = ActiveWorkbook.FullName

End Function

Plus loin dans mon code, après avoir collé les données dans le fichier de base, j'ai voulu appeler le second workbook pour le fermer, mais je n'arrive pas à trouver le bon code pour rappeler le workbook pour le fermer.

Private Sub CloseFile()

Workbooks(FileToClose).Close

End Sub

Est-ce que vous auriez une solution à me proposer ?

D'avance un grand merci

Bonjour,

une proposition

Private Sub GetFileUnfilter()
    Dim fNameAndPath As Variant
    Set twb = ThisWorkbook
    Set wsd = twb.Sheets("feuil1") ' à adapter feuille destination
    fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLS), *.XLS", Title:="Select File To Be Opened")
    If fNameAndPath = False Then Exit Sub
    Set wb = Workbooks.Open(fNameAndPath) 'le classeur que l'on vient d'ouvrir est maintenant connu sous le nom wb
    ActiveSheet.Columns("A:W").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy wsd.Cells(1, 1) 'on copie à partir de A1
    wb.Close False
End Sub

Bonjour h2so4,

Merci pour cette solution.

ça a l'air de bien fonctionner, et en plus cela raccourci mon code.

Bon après-midi !

Rechercher des sujets similaires à "recuperer nom workbook fermer tard"