Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
895 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Sauvegarde sous VBA ACCESS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sauvegarde sous VBA ACCESS

n°1887496
evipat
Posté le 25-05-2009 à 10:18:22  profilanswer
 

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...

mood
Publicité
Posté le 25-05-2009 à 10:18:22  profilanswer
 

n°1887592
otobox
Maison fondée en 2005
Posté le 25-05-2009 à 13:40:52  profilanswer
 

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
n°1887595
otobox
Maison fondée en 2005
Posté le 25-05-2009 à 13:43:22  profilanswer
 

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
n°1888296
evipat
Posté le 27-05-2009 à 01:20:38  profilanswer
 

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...

n°1888379
otobox
Maison fondée en 2005
Posté le 27-05-2009 à 10:02:24  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Sauvegarde sous VBA ACCESS

 

Sujets relatifs
Création d'un test sur PowerPoint avec VBA[ACCESS]Fromulaire / Sous-formulaire
[VBA] Lire la propriété Interior.Color d'une celluleinsert asp dans base access
Sauvegarder un seul onglet (VBA) Excel[VBA] Problème double macro
[VBA] Collage format datesauvegarde classeur
accessinserer sur access
Plus de sujets relatifs à : Sauvegarde sous VBA ACCESS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR