Bonjour,

J'ai une macro qui permet d'ouvrir un fichier .XlS, dans lequel il n'y a qu'une feuille contenant des données dans un nombre de colonnes fixe mais dont le nombre de lignes augmente tous les jours.
Ensuite la macro sélectionne toutes les données depuis la ligne 2.
Puis elle les colle dans mon fichier de destination (Suivi des Commandes V2) dans une feuille dédiée (par la même occasion elle met la date de modification et fige cette date.
Elle fonctionne bien pour un fichier source dont le nom ne change pas.

Mon problème est que le nom du fichier source varie tous les jours puisque il contient la date de génération du dit fichier.
Exemple : export-commandes-20180418 (exportation du 18 avril 2018).
Comment puis-je automatiser le nom du fichier dans ma macro ?
Par la même occasion, comment puis-je le fermer ?

Et question subsidiaire, est-il possible de faire ce que fait la macro sans avoir à ouvrir et fermer le fichier source ?

Merci pour votre aide

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Import_Données()
'Ouvre fichier Export, sélectionne tout et importe sur feuille de destination en figeant la date de l'importation
'22/04 fonctionne pour fichier à nom unique
 
Dim AireACopier As Range 'ouvre le fichier et sélectionne tout
    Workbooks.Open Filename:="C:\Users\Fam\Desktop\Test import 18 04 2018 .xlsx"
    With Sheets("Pour Import")
    Prem = Range("A2").Address
    Dern = Range("H" & Range("B65536").End(xlUp)(1).Row).Address 'sélectionne colonnes A à H en fonction de la dernière cellule de B
    Set AireACopier = .Range(Prem, Dern)
    End With
    'ActiveWorkbook.Close
    'Workbooks.Close Filename:="C:\Users\Fam\Desktop\Test import 18 04 2018 .xlsx"
 
    Workbooks.Open Filename:="C:\Users\Fam\Desktop\Suivi des Commandes V2.xlsm"
    AireACopier.Copy Destination:=Workbooks("Suivi des Commandes V2.xlsm").Sheets("Import Base").Range("A2") 'colle les données
    Set AireACopier = Nothing
 
    Sheets("Import Base").Select
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "=TODAY()" 'date du jour de l'importation
    Range("D1").Value = Range("D1").Value 'vérouille la date
 
End Sub