Enregistrer feuille dans fichier, ouvrir copie et enregistrer à nouveau
Bonjour le forum,
Je me rapproche de vous concernant un problème que je rencontre sur un enregistrement xls.
J'avais écris un code pour engeristrer en PDF et Excel avec des versions +1 à chaque fois mais ne n'est pas ce qui est attendu.
'°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ENREGISTRER EN PDF °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Dim Date_test As String '°°
Dim Site As String '°°
Dim version As String '°°
Dim NomFichierpdf As String '°°
Dim LeRep As String '°°
version = ActiveSheet.[I1] '°°
tir = ActiveSheet.[E2] '°°
Site = ActiveSheet.[E1] '°°
NomFichierpdf = tir & " pour la station " & Site & " v" & version '°° ENREGISTRER EN PDF
[A1:O251].Select '°°
ActiveSheet.PageSetup.PrintArea = "$A$1:$O$251" '°°
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
NomFichierpdf & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=Flase, IgnorePrintAreas:=False, _
OpenAfterPublish:=False '°°
'°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Deverrouiller_station_bouton.Visible = True
Deverrouiller_station_bouton.Enabled = False 'Bricolage sinon le bouton reste grisé
Deverrouiller_station_bouton.Enabled = True ' " " "
Cells.Locked = True
ActiveSheet.Protect "123"
'+++++++++++++++++++++++++++++++++++++ ENREGISTREMENT ONGLET DANS UN NOUVEAU FICHIER EXCEL ++++++++++++++++
Dim NomFichierxls As String '++
Dim NomCompletFichier As String '++
Dim NomPersonne As String '++
Dim extension As String '++
extension = ".xlsm" '++
NomFichierxls = tir & " pour la station " & Site & " v" & version & extension '++
NomCompletFichier = NomFichierxls '++
ActiveSheet.Copy '++
ActiveWorkbook.SaveAs Filename:=NomCompletFichier, FileFormat:=xlOpenXMLWorkbookMacroEnabled '++
ActiveWorkbook.Close '++
'++
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Désormais il faut que l'enregistre tous mes feuilles modifiées dans un seul et même classeur Excel et que j'imprime mes feuilles pdf dans un seul fichier.
Concernant ce dernier, je suis en train de bricoler le code notamment le nom des feuilles et leurs incrément pour utiliser cette formule :
ThisWorkbook.Sheets(Array("Mise en service stations Ariane", "Test")).Select
Ma question se porte plus sur l'enregistrement en xls. Comment faire pour enregistrer via un bouton la feuille dans le classeur. Pouvoir ouvrir à nouveau le classeur pour travailler sur une copie de la feuille précédente, modifier cette copie et l'enregistrer à nouveau dans le même fichier dans un onglet en version 1, version 2 etc...
Je peux diffuser le fichier si vous le désirez.
Je continue tout de même de travailler de mon côté.
Bonjour,
Activesheet.copycopie la feuille active dans un nouveau classeur.
Activesheet.copy after:=sheets(1) 'after:=sheets(sheets.count)copie la feuille active, dans le même classeur, après la feuille 1 (ou en commentaire, à la fin).
activeworkbook.savecopyas cheminfichiercrée une copie du classeur actif au nom de fichier désigné dans la variable cheminfichier
Il est possible de copier plusieurs feuilles d'un coup :
sheets(array("f1", "f2", ..., "fin")).copy 'adapter nomsJ'espère que ça vous aidera car je n'ai pas bien compris le problème.
En tout cas, de manière général, je conseille l'utilisation d'un fichier éternel, subissant des modifications (archivées dans une base), dont seules les feuilles de saisie sont exportées en PDF mais pas copiées/dupliquées en fichiers supplémentaires car dans 99% des cas, c'est inutile.
Cdlt,
Bonjour 3GB,
Merci pour ce retour, j'ai essayé de supprimer le post étant donné que j'ai finalement réussi à faire la manip mais sans y parvenir...
L'idée est d'avoir un fichier en mise en service d'appareils, ré-ouvrir ce même fichier dans un onglet +1 où les mêmes données sont disponibles et modifiables (la version -1 est verrouillée).
Du coup en ouvrant le fichier et déverrouillant avec le bouton, une copie de créée. Mon problème était de faire apparaitre le bon nom de la station mais Excel génère automatiquement un onglet "titre de l'ancien onglet (2)" ce qui me convient parfaitement. A chaque copie il s'incrémente (3) etc...
J'ai donc utilisé la formule suivante, ce qui copie toujours le nouvel onglet après le dernier modifié.
ActiveSheet.Copy after := ActiveSheetPour l'impression PDF de tous mes onglets, j'ai utilisé la formule suivante :
ThisWorkbook.Sheets.Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF etc...Merci tout de même pour ton aide :)
Bonjour MatthieuGIL,
Tant mieux, nickel si ça marche.
Si tu souhaites renommer la feuille que tu as créée, après le activesheet.copy after:=activesheet, tu peux mettre la ligne :
activesheet.name = "nouveaunom"En effet, la copie créée devient la feuille active. Il faut juste éviter de donner un nom qui existe déjà ou un nom trop long (31 car.) ou certains caractères spéciaux...
Cdlt,