Extraire un onglet Excel pour l'enregistrer dans un autre fi
Bonjour à tous,
Alors voilà j'ai un classeur excel contenant un onglet avec une facture. J'aimerais pouvoir enregistrer cette facture dans un autre fichier excel en gardant la mise en forme et qu’elle se mette dans le dossier de mon choix.
J'ai déjà bien avancé sur le code VBA mais je n'arrive pas à ce qu'elle s'enregistre dans mon dossier de destination.
Je vous met le code ci-dessous :
Sub Excel()
'
' Excel Macro
Chemindossier = "C:\Users\stephane\Dropbox\Finance\Factures\2018\"
sortie = Range("E17").Value & "-" & Range("C5").Value & ".xls"
'sauvegarde du nom du classeur et de la feuille active
originefeuille = ActiveSheet.Name
origineclasseur = ActiveWorkbook.Name
'creation de ton doc "sortie"
Workbooks.Add.SaveAs sortie
Worksheets.Add.Name = "facture"
'retour sur le fichier d'origine pour copier
Workbooks(origineclasseur).Activate
Sheets(originefeuille).Select
Range("A1:E55").Select
Selection.Copy
'collage dans le classeur créé
Workbooks(sortie).Activate
Sheets("facture").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Workbooks(sortie).Save
Workbooks(sortie).Close
Worksheets("facture").Range("A1:E55").ExportAsFixedFormat Type:=xlTypexl, _
Filename:=Chemindossier & Range("E17").Value & "-" & Range("C5").Value, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub
Merci d'avance aux personnes pouvant me débloquer
Bonjour,
Si tu es en Excel 2013, pourquoi enregistrer ton fichier au format .xls?
Je n'ai peut-être pas tout compris, mais s'il s'agit d'enregistrer une copie de ta feuille au format Excel, il me semble que tu pourrais te contenter d'écrire:
Sub test_xlsx()
cheminDossier = "C:\Users\stephane\Dropbox\Finance\Factures\2018\"
sortie = Range("AG17").Value & "-" & Range("C5").Value & ".xlsx"
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=cheminDossier & sortie
End SubSi tu dois vraiment sauvegarder en ".xls", essaie:
Sub test_xls()
cheminDossier = "C:\Users\stephane\Dropbox\Finance\Factures\2018\"
sortie = Range("AG17").Value & "-" & Range("C5").Value & ".xls"
ActiveSheet.Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=cheminDossier & sortie, FileFormat:=xlExcel8
End SubBonjour
IL faut copier l'onglet, pas la plage
Sheets(originefeuille).Copy Before:=Workbooks(sortie).Sheets(1)Merci à vous pour votre aide.
Mon problème est que je veux seulement les cellules de A1 à E55 avec un collage spécial des valeurs, de la mise en forme et de la largeur de's colonnes.
Votre code fonctionne mais pour toute la feuille.
J'arrive presque à bout de ce code mais qui me crée 2 fichiers et je comprend pas forcement pourquoi ...
Code :
Sub Excel()
'
' Excel Macro
Chemindossier = "C:\Users\stephane\Dropbox\Finance\Factures\2018\"
sortie = Range("E17").Value & "-" & Range("C5").Value & ".xls"
'sauvegarde du nom du classeur et de la feuille active
originefeuille = ActiveSheet.Name
origineclasseur = ActiveWorkbook.Name
'creation de ton doc "sortie"
Workbooks.Add.SaveAs sortie
Worksheets.Add.Name = "facture"
'retour sur le fichier d'origine pour copier
Workbooks(origineclasseur).Activate
Sheets(originefeuille).Select
Range("A1:E55").Select
Selection.Copy
'collage dans le classeur créé
Workbooks(sortie).Activate
Sheets("facture").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ActiveWorkbook.SaveAs Filename:=Chemindossier & sortie, FileFormat:=xlExcel8
Workbooks(sortie).Close
End Sub
Merci à ceux qui pourront me dire.
Bonjour stephane86,
Tu a écrit :J'arrive presque à bout de ce code mais qui me crée 2 fichiers et je comprend pas forcément pourquoi...
Sauf erreur de ma part, tu as ces 2 instructions .SaveAs :
'creation de ton doc "sortie"
Workbooks.Add.SaveAs sortie
Worksheets.Add.Name = "facture"
ActiveWorkbook.SaveAs Filename:=Chemindossier & sortie, FileFormat:=xlExcel8
Cordialement
Re
stephane86 a écrit :...Mon problème est que je veux seulement les cellules de A1 à E55 avec un collage spécial des valeurs, de la mise en forme et de la largeur des colonnes.
Votre code fonctionne mais pour toute la feuille.
Alors il faut mettre en titre "Extraire une plage" et non "Extraire un onglet"