Copier un tableau dans un fichier dont le nom change
Bonjour,
Ma demande m'a l'air d'être pas compliquée, en tout cas à mes yeux de novice
Je souhaiterai faire une macro qui me permet de copier un tableau (en active sheet) dans une autre feuille d'un autre tableau dont le nom se présente comme suit :
"20130502 TRES - REC_VD.xlsm"
Le soucis c'est que la date change quotidiennement et je souhaiterai insérer une variable qui va aller chercher mon fichier parmi tous mes classeurs ouverts...
En gros, quel code doit remplacer cette syntaxe ci-dessous :
Windows("20130502 TRES - REC_VD.xlsm").Activate
Merci de votre aide.
Bonjour,
Sub Nom_glet()
dd = Right(Date, 4)
cc = Mid(Date, 4, 2)
bb = Left(Date, 2)
aa = dd & cc & bb & " TRES - REC_VD.xlsm"
Windows(aa).Activate
End SubBonjour Game Over,
Merci pour ta réponse.
Je n'arrive pas à insérer ton code, je ne sais pas s'il faut remplacer des choses, en tout cas il y a quelque chose que je fais mal.
Ci-dessous mon code, je voudrai insérer le tien juste après le "Copy" de la fin. Le nom de la feuille du fichier "yyyy/mm/dd TRES - REC_VD.xlsm" est "Payment form".
Sub Wire_file()
'
' Wire_file Macro
'
'
ActiveWorkbook.ActiveSheet.Activate
Rows("4:4").Select
Selection.Delete Shift:=xlUp
Cells.Select
Cells.EntireColumn.AutoFit
Rows("3:3").Select
Selection.AutoFilter
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 16
ActiveSheet.Range("$A$3:$U$198").AutoFilter field:=20, Criteria1:="--"
Rows("4:4").EntireRow.AutoFit
Rows("4:4").Select
Range("P4").Activate
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Rows("3:3").Select
Range("P3").Activate
Selection.AutoFilter
Selection.AutoFilter
Dim NbLg As Long
Application.ScreenUpdating = False
With ActiveSheet
If .FilterMode = True Then .ShowAllData
End With
NbLg = Range("T" & Rows.Count).End(xlUp).Row
Range("A3:U" & NbLg).AutoFilter field:=20, Criteria1:=">=" & CSng(Application.WorkDay(Date, -4))
ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields. _
Clear
ActiveWorkbook.ActiveSheet.AutoFilter.Sort.SortFields. _
Add Key:=Range("A3"), SortOn:=xlSortOnValues, Order:=xlDescending, _
DataOption:=xlSortNormal
With ActiveWorkbook.ActiveSheet.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Selection.CurrentRegion.Select
Selection.Copy
End SubSi tu as un moment, tu peux m'expliquer ton code stp ? Sinon y a pas de soucis, je comprendrai.
Bon début de semaine.
Merci
J'ai modifié le code, cela te permettra d'avoir une meilleure compréhension du script
aa = Year(Date) 'extrait l'année de la date d'aujourd'hui
aa = Format(aa, "0000") 'formate l'année à 4 chiffres
bb = Month(Date) 'extrait le mois de la date d'aujourd'hui
bb = Format(bb, "00") 'formate le mois à 2 chiffres
cc = Day(Date) 'extrait le jour de la date d'aujourd'hui
cc = Format(cc, "00") 'formate le jour à 2 chiffres
dd = aa & bb & cc & " TRES - REC_VD.xlsm" 'crée le nom du classeur
Windows(dd).Activate 'active le classeur (celui-ci doit être déjà ouvert)
ActiveWorkbook.Sheets("Payment form").Select 'sélectionne la feuille Payment formLe nom de la feuille du fichier "yyyy/mm/dd TRES - REC_VD.xlsm" est "Payment form".
Attention : yyyy/mm/dd est différent du format 20130502 que tu donnes dans ton premier message !
la macro génère un nom yyyymmdd et non yyyy/mm/dd
Oui oui, excuse moi pour le format de la date, je me suis trompé, le bon format était bel et bien celui que j'avais mis dans mon premier message.
Sinon ça marche c'est parfait, merci.
Bonne journée