1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| Option Explicit
Sub ExportData()
'
Dim fname As String
' crée une nouvelle feuille en proposant le nom à l'utilisateur
Dim timestamp As String
timestamp = Format(Now, "yyyymmdd_hhmmss")
fname = InputBox("Nouveau nom de fichier (sans le .xls) :", "Enregistrer sous", "nom_fichier")
' on teste que le fichier n'existe pas, normalement impossible mais bon :D
If Dir(fname & "_" & timestamp & ".xls") <> "" Then
MsgBox ("Un fichier de ce nom existe déjà.")
Else
fname = fname & "_" & timestamp & ".xls"
End If
If fname <> "" Then
' on crée un nouveau classeur et on l'enregistre sous le nom fname en ajoutant le timestamp, donc doublon impossible (cf. ci-dessus le test)...
Dim exc As New Excel.Application
Dim exl As New Excel.Workbook
Workbooks.Add
ActiveWorkbook.SaveAs FileName:=fname, FileFormat:= _
xlNormal, passWord:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=True
MsgBox ("Nouveau document enregistré sous " & fname)
'ActiveWorkbook.Close
End If
'
' collecte des données, copiage et collage sur le nouveau classeur
'
Dim XL01, XL02 As String
Dim XL1, XL2 As Workbook
Dim i, j, EOF As Long, ColNbr As Byte
Dim Nbr, Content As String
XL01 = ThisWorkbook.Name
XL02 = fname
Set XL1 = Workbooks(XL01)
Set XL2 = Workbooks(XL02)
XL1.Activate
Sheets("Sheet1").Select
EOF = Range("B65535").End(xlUp).Row
Cells().Select
Selection.Copy
XL2.Activate
Sheets("Sheet1").Select
Cells().PasteSpecial (xlPasteAll) ' adaptable en fonction des besoins ( si besoin, se rapporter à la doc de la fonction PasteSpecial() )
ActiveWorkbook.Save ' pour ne pas avoir fait tout le travail pour rien
' ActiveWorkbook.Close
'
XL1.Activate ' on retourne sur le premier classeur
Sheets("Sheet1").Select
Cells(1, 1).Select
'
Set XL1 = Nothing
Set XL2 = Nothing
'
Set exc = Nothing
Set exl = Nothing
End Sub |
Partager