Archivage

Simons

XLDnaute Occasionnel
Bonjour le forum XLD,

Je me creuse la tête, je rame, je galère..

Je voudrais créer une macro pour archiver tous les mois les feuilles d'un classeur.
Exemple :
Au 1er juillet l'ensemble des feuilles de mon classeur sont copiés collés vers un nouveau classeur avec comme nom le mois passé. Un p'ti raz sur mon classeur (ce qui me permettrais de ne pas le faire trop gonfler :) ) et le tour est joué..
C'est assez costaud je pense comme macro alors juste un fil pour me mettre sur la voie serait déja un acte de grande sympathie.

Merci.
 

Bebere

XLDnaute Barbatruc
bonjour
j'emploie ce qui suit, commentaires inclus
'Sauvegarde automatique d'une feuille d'un classeur
'(Joël MAU, mpfe)

'A l'ouverture de ton classeur la feuille de nom 'MaFeuille',
'à modifier à ta convenance avec la valeur de la constante
'NomFeuilleACopier, est copiée dans un nouveau classeur
'Ce classeur est sauvegardé dans un dossier de Sauvegarde
'(par défaut ici le dossier 'SAUVEGARDES\\', crée dans le dossier courant,
'modifiable avec la const...DossierSauvegarde )
'Pour garder toutes les versions et les reconnaitre le nom du fichier de
'sauvegarde est constitué par le nom d'origine de ton classeur plus le jour
'est l'heure-Minutes du dernier enregistrement de ton classeur.

'Pour lancer l'opération à l'ouverture du classeur :
'====dans le module ThisWorkbook :
'Private Sub Workbook_Open()
' SauvegardeFeuille
'End Sub
'==================

'Puis A Mettre dans un module standard de ton classeur dont
'une feuille est à copier à chaque ouverture:

Public Const NomFeuilleACopier As String = 'NomFeuille'
Public Const DossierSauvegarde As String = 'G\\DossierSauvegarde'
Public Const sFormatDate As String = '''_''ddmmyy''_''hh''h''mm''mn'''
'attention notation americaine!!!

Sub SauvegardeFeuille()
Dim MaFeuille As Worksheet
Dim sPath As String, sFileSave As String

sPath = 'E:\\dossierFichier' 'ThisWorkbook.Path & '\\'
MsgBox ThisWorkbook.Name & ' ' & InfoDateModifFichier(ThisWorkbook.Name)
If FeuilleExiste(NomFeuilleACopier) Then
If Not FichierExiste(sPath & DossierSauvegarde) Then
' Dossier de sauvegarde inexistant
MkDir DossierSauvegarde ' sPath &
' crée le dossier de sauvegarde si inexistant
End If
sFileSave = sPath & DossierSauvegarde & NomFeuilleACopier & _
InfoDateModifFichier(ThisWorkbook.Name) & '.xls'
If Not FichierExiste(sFileSave) Then
' Le fichier n'existe pas déjà. Sinon pas besoin de resauvegarder
Worksheets(NomFeuilleACopier).Copy
ActiveWorkbook.SaveAs _
FileName:=sFileSave, FileFormat:=xlNormal, _
Password:='', WriteResPassword:='', _
ReadOnlyRecommended:=False, CreateBackup:=False

ActiveWorkbook.Close SaveChanges:=False
' Pas la peine de reenregistrer cela vient d'être fait!
End If
End If

Sheets(NomFeuilleACopier).Select
Range('E4:H58').ClearContents
'Range('D63:D69').Select
' Selection.ClearContents
Range('D63:D69').ClearContents
Range('J63:J69').ClearContents
Range('N4:N16').ClearContents
End Sub


Function FeuilleExiste(sName As Variant) As Boolean

' Teste si la feuille de nom 'sName' existe au niveau classeur
' Retourne vrai si existe!


On Error Resume Next

FeuilleExiste = False
FeuilleExiste = Not ActiveWorkbook.Sheets(sName) Is Nothing
Err.Clear

End Function

Function FichierExiste(sFile As Variant) As Boolean

' Teste si le fichier ou dossier (avec ou sans le \\ à la fin)
' de nom 'sFile' existe. Retourne vrai si existe!

Dim sProv As String

On Error GoTo Errorhandler

sProv = Dir(sFile, vbDirectory)
' vbDirectory est utile quand dossier vide car retourne '.' alors

FichierExiste = (sProv <> '')

Exit Function

Errorhandler:
MsgBox prompt:='Erreur sur test fichier= ' & sFile
End

End Function


Function InfoDateModifFichier(ByVal sFileIn As String) As String

' Retourne la date/heure de modification d'un fichier ,
'et si pas existant la date/heure actuelle

If FichierExiste(sFileIn) Then
InfoDateModifFichier = Format(FileDateTime(sFileIn), sFormatDate)
Else
InfoDateModifFichier = Format(Now, sFormatDate)
'jour et heure actuelle
End If

End Function
Application.Goto reference:='Essai'
Range('A1').Select
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Range('A1').Select
ActiveWorkbook.Save

à bientôt
 

sambala

XLDnaute Nouveau
Re : Archivage

Bonjour Bebere !

je me joins à votre forum, afin de vous demandez des conseils sur mon problème.

Je ne sais pas si je peut adapter votre macro sur mon projet.
je m'explique :

j'ai crée un classeur nommé présence, dans lequel on note dans différentes feuille (mois de l'année en cours) les noms d'agent présent sur des differents poste de travail.
Je voudrais archivé (sauvegarder automatiquement) les feuilles nommés (janvier, février etc...) du classeur "présence" dans la meme feuille nommé "janvierArchive" etc... qui ce trouve dans le classeur nommé " Présence Archivage".
Cette sauvegarde doit s'effectué automatiquement à la fin de journée jour pour jour.

Je vous informe que les données enregistrés dans certaines cellules de saisie sont protéger à l'éffacement par une macro existante la feuille étant également proteger. le Mots de passe etant TOTO.

je vous joins le classeur de présence en exemple.

merçi de votre coup de main.
Cordialement.
 

Pièces jointes

  • Copie de Fiche Présences STE XXXX.zip
    32.5 KB · Affichages: 42
  • Copie de Fiche Présences STE XXXX.zip
    32.5 KB · Affichages: 43
  • Copie de Fiche Présences STE XXXX.zip
    32.5 KB · Affichages: 43

Discussions similaires