Sauvegarde sous VBA ACCESS

Sauvegarde sous VBA ACCESS - VB/VBA/VBS - Programmation

Marsh Posté le 25-05-2009 à 10:18:22    

Bonjour,
 
Sauvegarde de données sous ACCESS.
 
Je fais une sauvegarde de manière fixe du répertoire dans lequel son rangées mes données ACCESS,  mais j'aimerais que l'utilisateur puisse choisir son dossier, voir un support externe comme "enregistrer sous", voici mon code:
 
Private Sub btnSauvegarde_Click()
Dim stAppName As String
 
stAppName = "C:\Monrepertoire\Sauvegardes\Sauvegarde.bat"
 
'J'utilise un fichier bat car je ne sais pas comment on peut utiliser VBA pour faire la même chose
 
Call Shell(stAppName,1)
 
End Sub
 
Merci de me dire si vous avez une solution, peut être même tout en VBA...
 
Pat...

Reply

Marsh Posté le 25-05-2009 à 10:18:22   

Reply

Marsh Posté le 25-05-2009 à 13:40:52    

Solution qui fonctionne sous Access 97 et 2003.
 
Dans un module macro voici le code à coller (ne mettre que ce code dans ce module, que tu peux sauvegarder sous le nom FonctionOuvrirDossier :

Code :
  1. Option Compare Database
  2. Option Explicit
  3. Private Const BIF_RETURNONLYFSDIRS = 1
  4. Private Const BIF_DONTGOBELOWDOMAIN = 2
  5. Private Const BIF_NEWDIALOGSTYLE As Long = &H40
  6. Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
  7. Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, _
  8.     ByVal lpBuffer As String) As Long
  9. Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, _
  10.     ByVal lpString2 As String) As Long
  11. Private Type BrowseInfo
  12.     hWndOwner As Long
  13.     pIDLRoot As Long
  14.     pszDisplayName As Long
  15.     lpszTitle As Long
  16.      ulFlags As Long
  17.     lpfnCallback As Long
  18.     lParam As Long
  19.     iImage As Long
  20. End Type
  21. Public Function SelectFolder(Titre As String, Handle As Long) As String
  22. Dim lpIDList As Long
  23. Dim strBuffer As String
  24. Dim strTitre As String
  25. Dim tBrowseInfo As BrowseInfo
  26. strTitre = Titre
  27. With tBrowseInfo
  28.     .hWndOwner = Handle
  29.     .lpszTitle = lstrcat(strTitre, "" )
  30.     .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN + BIF_NEWDIALOGSTYLE
  31. End With
  32. lpIDList = SHBrowseForFolder(tBrowseInfo)
  33. If (lpIDList) Then
  34.     strBuffer = String(260, vbNullChar)
  35.     SHGetPathFromIDList lpIDList, strBuffer
  36.     SelectFolder = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
  37. End If
  38. End Function


 
Ensuite, dans le formulaire :
- créer une textbox que tu appelles txtURL
- créer un bouton que tu appelles cdeSelectionRepertoire, pour sa caption tu peux mettre Parcourir et ensuite tu associes le code ci-dessous sur l'évènement Sur clic :

Code :
  1. Private Sub cdeSelectionRepertoire_Click()
  2. Dim strchemin As String
  3.     strchemin = SelectFolder("Sélectionnez un répertoire :", Me.hwnd)
  4.     If strchemin <> "" Then txtURL = strchemin
  5. End Sub



---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 25-05-2009 à 13:43:22    

Et si ta sauvegarde ne consiste qu'a copier le fichier Access vers un autre répertoire, tu peux utiliser la fonction Filecopy ;)


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 27-05-2009 à 01:20:38    

Rebonjour,
 
Ta réponse pour ouvrir un répertoire est super nickel, merci beaucoup.
Mais je n'ai trouvé que FileCopy pour sauvegarder ma base, et cela me renvoi une erreur 75.
J'ai essayé avec FileSystemObject.CopyFile, mais cela me donne une erreur de variable.
Microsoft a bien du penser à quelque chose pour faire une sauvegarde de fichiers access en VBA.
Pat...

Reply

Marsh Posté le 27-05-2009 à 10:02:24    

FileCopy ne fonctionne pas, peut être parce que le fichier est ouvert. Mais dans ce cas, en passant par le file system object, tu devrais pouvoir le faire. As tu bien déclaré le fso ?


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed