IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Copie de sauvegarde d'une base Access via VBA


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Copie de sauvegarde d'une base Access via VBA
    Bonjour,

    Je souhaite effectuer automatiquement une copie de sauvegarde d'une base de données (Access 2003), copie déclenchée par le bouton quitter de mon formulaire principal.
    La copie est placée dans un dossier particulier, elle est renommée avec le nom de la base auquel j'ajoute la date du jour ; la copie écrase le fichier s'il existe déjà, cela me permet d'avoir une copie journalière de ma base.

    J'ai tenté d'utiliser la méthode copy de l'objet FSO, sans succès : j'obtiens une erreur 91 "Variable objet ou variable de bloc With non définie".
    Ci dessous le code correspondant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Dim oFSO As Scripting.FileSystemObject
    Dim oFl As Scripting.File
     
    Set oFSO = New Scripting.FileSystemObject
    Dim Db As Database
    Dim tD As Recordset
    Set Db = CurrentDb
    Set tD = Db.OpenRecordset("T_PARAMETRES")
    Chemin_Sauvegarde = tD!Chemin_Sauvegarde_Base
    tD.Close
     
    Nom_Base = Mid(Application.CurrentProject.Name, 1, InStr(Application.CurrentProject.Name, ".") - 1)
    Date_Sauve = Date_Avec_Tiret(Now)
    Nom_Fichier_Sauvegarde = Chemin_Sauvegarde & Nom_Base & "_" & Date_Sauve & ".mdb"
       oFl.Copy Nom_Fichier_Sauvegarde, True
    Je ne suis pas un pro du VBA, si quelqu'un à une idée...

    Merci d'avance

    Chris du 25

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 282
    Points : 356
    Points
    356
    Par défaut
    Bonjour,

    Je pense que tu pourrais essayer avec ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Dim tD                      As Recordset
    Dim oFSO                    As Variant
    Dim Nom_Base                As String
    Dim Nom_Sauvegarde          As String
    Dim Chemin_Sauvegarde       As String
     
    ' Declare un Scripting.FileSystemObject
    ' -------------------------------------
    Set oFSO = CreateObject("Scripting.FileSystemObject")
     
    ' Cherche le chemin de sauvegarde
    ' -------------------------------
    Set tD = CurrentDb.OpenRecordset("T_PARAMETRES", dbOpenSnapshot)
    Chemin_Sauvegarde = tD.Fields("Chemin_Sauvegarde_Base").Value
    tD.Close
    Set tD = Nothing
     
    ' Cherche le nom de la base courrante
    ' -----------------------------------
    Nom_Base = Application.CurrentProject.Name
     
    ' Construit le nom de la base de sauvegarde
    ' -----------------------------------------
    Nom_Sauvegarde = Chemin_Sauvegarde & "\" & oFSO.GetBaseName(Nom_Base) & "_" & Date_Avec_Tiret(Now) & ".mdb"
    Nom_Sauvegarde = Replace(Nom_Sauvegarde, "\\", "\")
     
    ' Effectue la copie
    ' -----------------
    oFSO.CopyFile Nom_Base, Nom_Sauvegarde, True
     
    ' Termine
    ' -------
    Set oFSO = Nothing
    Je ne l'ai pas teste mais je pense que ca ferait un bon debut

  3. #3
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    oFl.Copy Nom_Fichier_Sauvegarde, True
    C'est le FSO qui doit copier, pas le fichier oFl que vous n'avez pas instancié

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Merci...
    Merci les gars, cela fonctionne parfaitement.

    Une question subsidiaire, j'utilise une syntaxe différente de la votre pour accéder à la valeur d'un champ;

    ]Votre syntaxe :

    tD.Fields("Chemin_Sauvegarde_Base").ValueMa syntaxe

    tD!Chemin_Sauvegade_BaseLaquelle est la plus efficace??

  5. #5
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    La deuxième est recommandée (avec le !)

    Mais les deux restent valables

Discussions similaires

  1. ouvrir une base access via vba
    Par moimemessssssssss dans le forum Macros Access
    Réponses: 7
    Dernier message: 08/01/2015, 21h53
  2. [XL-2010] Connexion à une base Access via VBA Excel
    Par Alaedjens dans le forum Excel
    Réponses: 2
    Dernier message: 17/01/2014, 10h57
  3. Interroger une base access via le web
    Par pascale86 dans le forum Access
    Réponses: 1
    Dernier message: 15/03/2007, 15h33
  4. Acceder à une base access via visual C++
    Par faceo75 dans le forum MFC
    Réponses: 4
    Dernier message: 07/02/2007, 16h17
  5. Réponses: 3
    Dernier message: 06/06/2006, 08h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo