Sauvegarder un fichier access par macro

Claudy

XLDnaute Accro
Bonjour,
je travaille beaucoup sur des fichiers.xls et le vba, pour importer des données dans un fichier access.
Ce fichier access est très important, idéalement il me faudrait le sauvegarder , en faire une copie, dans un autre dossier plusieurs fois sur une journée...
Y a t il moyen d'automatiser cela par une macro au départ d'un fichier .xls ?
Merci d'avance,
Claudy (allez les mauves, on va gagner!)
 

jmd2

XLDnaute Accro
Re : Sauvegarder un fichier access par macro

hello

n'est-il pas suffisant de faire des copies de ton fichier .xls * et seulement 1 fois/jour d'exporter vers Access ?

* je te propose de faire 2 copies, dans 2 répertoires non seulement différents, mais surtout sur 2 disques ou supports différents
sais-tu faire une macro pour ça ?
ces copies ne sont là que pour parer à tout incident.
(en plus des sauvegardes auto d'Excel sur ton disque, que tu peux programmer toutes les 5 minutes, ou moins)
 

Claudy

XLDnaute Accro
Re : Sauvegarder un fichier access par macro

Bonjour et merci...
Sauvegarder mes fichiers excel, aucun problème mais le plus important c'est de sauvegarder ou faire une copie de mon fichier access.
Et comme tu dis, sur plusieurs disques.
merci, a+
HS:Mon prono pour ce soir:0-2
 

Staple1600

XLDnaute Barbatruc
Re : Sauvegarder un fichier access par macro

Bonjour à tous,


Une solution en passant par un script vbs et en utilisant le planificateur de tâches de windows

(voir ici un exemple de script vbs : Ce lien n'existe plus

Script à adapter à tes besoins
(nom des répertoire, nom du fichier)

Dans ce script justement, il s'agit de sauvegarder un fichier Access (*.mdb)

LA syntaxe vbs étant trés proche de VBA, tu peux également adapetr ce script en VBA si tu lancer une sauvegarde à partir d'Excel.

Dans tout les cas, teste ce script sur une copie de ta base de données.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Sauvegarder un fichier access par macro

Re

Une procédure simple de sauvegarde en VBA
(Le fichier Access doit être fermé au préalable)
(et les répertoires être préexistants)
Code:
Sub backup()
Dim RepSource$, RepDestination$, FSource$, NomFic$, Original$, Sauvegarde$
'////Répertoires/////
RepSource = "C:\temp\"
RepDestination = "C:\Backup\"
'////noms des fichiers/////
FSource = "fichier.mdb"
NomFic = Left(FSource, Len(FSource) - 4) & _
Format(Date, "dd-mm-yy") & "_" _
& Replace(Time, ":", "-") & ".mdb"
Original = RepSource & FSource
Sauvegarde = RepDestination & NomFic
'à commenter ici pour tests
MsgBox Original
MsgBox Sauvegarde
'//////////////////////////
'sauvegarde
Name Original As Sauvegarde
End Sub

EDITION: la même macro en plus court
Code:
Sub backup_II()
Dim Original$, Sauvegarde$
Original = "C:\temp\fichier.mdb"
Sauvegarde = "C:\backup\fichier" & _
Format(Date, "dd-mm-yy") & "_" _
& Replace(Time, ":", "-") & ".mdb"
Name Original As Sauvegarde
End Sub
 
Dernière édition:

Claudy

XLDnaute Accro
Re : Sauvegarder un fichier access par macro

Bonsoir et merci...
J'ai essayé avec :

Sub backup_II()
Dim Original$, Sauvegarde$
Original = "C:\temp\fichier.mdb"
Sauvegarde = "C:\backup\fichier" & _
Format(Date, "dd-mm-yy") & "_" _
& Replace(Time, ":", "-") & ".mdb"
Name Original As Sauvegarde
End Sub

C'est presque ce qu'il me faut, mais cette procédure m'enlève le fichier d'origine de son dossier (original), alors que je voudrais bien qu'il y reste...
A+
Claudy (H-2 avant le choc!)
 

Staple1600

XLDnaute Barbatruc
Re : Sauvegarder un fichier access par macro

Re



La ca devrait être mieux

Code:
Sub backup_III()
Dim Original$, Sauvegarde$
Original = "C:\temp\fichier.mdb"
Sauvegarde = "C:\backup\fichier" & _
Format(Date, "dd-mm-yy") & "_" _
& Replace(Time, ":", "-") & ".mdb"
FileCopy Original, Sauvegarde
End Sub
 

RENAUDER

Nous a quitté
Repose en paix
Re : Sauvegarder un fichier access par macro

Bonjour,
Puisque vous êtes dans les Backup, cela peut-être intéressant de compacter la base avant de la sauvegarder.
J'ai un bout de code qui permet de compacter une base Access sans qu'elle soit ouverte. J''utilise régulièrement ce code et ça fonctionne bien.

Ca peut intéresser certain d'entre vous alors voici le code.
Code:
Sub CompactBase()
    ' Définition de la base à compacter
    nameBaseSource = "NoOFSAP.mdb"
    pathBaseSource = "C:\Excel\5-8 SAP NoOFSAP.MDB\"
    uidBaseSource = ""    '"User"
    pwdBaseSource = ""    '"Password"
    pathDataBaseSource = pathBaseSource & nameBaseSource

    ' Définition de la base compactée temporaire
    nameBaseDestination = "BDTemp.mdb"
    pathBaseDestination = "C:\Excel\5-8 SAP NoOFSAP.MDB\"
    uidBaseDestination = ""    ' "User"
    pwdBaseDestination = ""    '"Password"
    pathDataBaseDestination = pathBaseDestination & nameBaseDestination

    ' Définition des valeurs du compactage
    strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;"
    strEngine = "Jet OLEDB:Engine Type=5;"
    strEncrypt = "Jet OLEDB:Encrypt Database=False;"

    strUidBaseSource = "User ID=" & uidBaseSource & ";"
    strPwdBaseSource = "Password=" & pwdBaseSource & ";"

    strUidBaseDestination = "User ID=" & uidBaseDestination & ";"
    strPwdBaseDestination = "Password=" & pwdBaseDestination & ";"

    strDataBaseSource = "Data Source=" & pathDataBaseSource & ";"
    strCompactDataBaseSource = strProvider & strDataBaseSource

    strDataBaseDestination = "Data Source=" & pathDataBaseDestination & ";"
    strCompactDataBaseDestination = strProvider & strEngine & strEncrypt & strDataBaseDestination

    ' Création d'un objet FileSystemObject
    Set ObjFileSystem = CreateObject("Scripting.FileSystemObject")

    ' Vérification de l'existence de la base à compacter
    If (ObjFileSystem.FileExists(pathDataBaseSource)) Then

        ' Vérifie que la base temporaire n'existe pas
        If (ObjFileSystem.FileExists(pathDataBaseDestination)) Then
            'Si elle existe la base temporaire est effacée
            ObjFileSystem.DeleteFile pathDataBaseDestination
        End If

        ' Création de l'objet JetEngine
        Set ObjEngine = CreateObject("JRO.JetEngine")
        ' Compactage de la base de données
        ObjEngine.CompactDatabase strCompactDataBaseSource, strCompactDataBaseDestination
        ' Destruction de l'objet JetEngine
        Set ObjEngine = Nothing

        ' Remplacement de l'ancienne base par la base compactée temporaire
        ObjFileSystem.CopyFile pathDataBaseDestination, pathDataBaseSource, True
        ' Effacement de la base compactée temporaire
        ObjFileSystem.DeleteFile pathDataBaseDestination

    End If

    ' Destruction de l'objet FileSystemObject
    Set ObjFileSystem = Nothing
End Sub
 

Varden

XLDnaute Nouveau
Re : Sauvegarder un fichier access par macro

Bonjour,

Je déterre ce topic mais là je sèche ...
Le problème c'est que je travail sur access et j'ai un petit problème avec le planificateur de tâche windows...

Vous avez dit que la base de données doit être fermée :
"
Une procédure simple de sauvegarde en VBA
(Le fichier Access doit être fermé au préalable)
(et les répertoires être préexistants)
"
mais comment, avec le planificateur de tâche windows, je peux effectuer cette macro? :
"
Sub backup_III()
Dim Original$, Sauvegarde$
Original = "C:\Temp\ESSAI.mdb"
Sauvegarde = "C:\backup\ESSAI" & _
Format(Date, "dd-mm-yy") & "_" _
& Replace(Time, ":", "-") & ".mdb"
FileCopy Original, Sauvegarde
End Sub
"

Novice dans le planificateur de tâche je ne sais pas comment faire. Pouvez-vous m'aider même si ce n'est pas du Excel?

Cordialement, Varden
 

Claudy

XLDnaute Accro
Re : Sauvegarder un fichier access par macro

Bonjour....
C'est vieux ce machin...
Comme ça à chaud:
faire un fichier excel, avec la macro ci dessus, à mettre dans le workbook.open!
Lancer ce fichier avec le pla nificateur!
A+
 

Varden

XLDnaute Nouveau
Re : Sauvegarder un fichier access par macro

Bon et bien je crois que je vais venir te faire un gros bisoux !!

Merci beaucoup pour la réponse je test avec le planificateur là dans 1 minute je sais si celà fonctionne ou non.

Merci encore, bonne journée :)
 

Discussions similaires

Réponses
6
Affichages
360
Réponses
16
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
314 948
Messages
2 114 649
Membres
112 206
dernier inscrit
salah zabi