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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| Public Function ClôtureDeFinDAnnée()
On Error GoTo ErreursCloture
If MsgBox("Bienvenue dans le module de clôture de fin d'année . Vous allez copier MON PROGRAMME - dans votre répertoire de sauvegarde, afin de garder une trace de l'année en cours. Attention : Certaines données seront effacées. Voulez-vous continuer ?", vbQuestion + vbYesNo, "MON PROGRAMME -Clôture de fin d'année ") = vbNo Then Exit Function
'Préparation à la copie de MON PROGRAMME -
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Parametres_Save", dbOpenDynaset) 'ouverture du recordset de la table Parametres_Save
If rs.EOF = True Then
MsgBox "Veuillez indiquer le répertoire dans lequel sauvegarder dans le formulaire ""Sauvegarde"" afin de définir le dossier dans lequel vous souhaitez stocker votre sauvegarde de clôture de fin d'année ...", vbExclamation + vbOKOnly, "MON PROGRAMME -Clôture de fin d'année "
MsgBox "La clôture ne s'est pas faite. Veuillez réessayer ultérieurement !", vbCritical + vbOKOnly, "MON PROGRAMME -Clôture de fin d'année "
Exit Function
End If
'Module de copie
'Référence nécessaire : Microsoft Scripting Runtime
Dim fs As New Scripting.FileSystemObject
Set fs = CreateObject("Scripting.FileSystemObject")
DoCmd.Hourglass True
DoCmd.Echo True, "Clôture en cours...."
Set rs = CurrentDb.OpenRecordset("Parametres_Save", dbOpenDynaset)
Dim Destination As String 'répertoire de sauvegarde pour la clôture
Dim Source As String 'Répertoire où se trouve la base de donnée courante
Dim NomBase As String 'nom de la base frontale (base de donnée courante)
Dim NomCloture As String 'nom de sauvegarde de la base de donnée pour la clôture
Dim AAencours As String
rs.MoveFirst
Source = Left(CurrentDb.Name, InStr(CurrentDb.Name, Dir(CurrentDb.Name)) - 1)
NomBase = Left(Dir(CurrentDb.Name), Len(Dir(CurrentDb.Name)) - 4)
AAencours = DLookup("AAec", "Etablissement")
'Contrôle que le chemin indiqué dans RepSauvse termine bien par un \
If Right(rs!RepSauv.Value, 1) <> "\" Then
Destination = rs!RepSauv.Value & "\"
Else
Destination = rs!RepSauv.Value
End If
'Format de clôture : Nom de la base de donnée jj mm aa + indication de l'Année académique
NomCloture = NomBase + " - Clôture de fin de l'année " + AAencours + " - Date du " + CStr(Day(Now())) + " " + CStr(Month(Now())) + " " + CStr(Year(Now()))
If Dir(Destination, vbDirectory) = "" Then
If MsgBox("Le chemin indiqué n'existe pas! Souhaitez-vous le créer?", vbQuestion + vbYesNo, "MON PROGRAMME -Clôture de fin d'année ") = vbYes Then
fs.CreateFolder CStr(Destination) 'création du répertoire indiqué dans RepSauv
GoTo Suite1
Else
MsgBox "La sauvegarde n'a pas pu être effectuée!", vbExclamation, "MON PROGRAMME -Clôture de fin d'année "
rs.Close
Set rs = Nothing
Exit Function
End If
Else
GoTo Suite1
End If
Suite1:
'Copie du fichier source vers le répertoire de destination
fs.CopyFile CStr(Source) + CStr(NomBase) + ".mdb", CStr(Destination) + CStr(NomCloture) + ".mdb", True
'Vérification que le fichier de sauvegarde existe bien dans le répertoire prévu avec le nom prévu:
If Dir(CStr(Destination) + CStr(NomCloture) + ".mdb", vbDirectory) = "" Then
MsgBox "La clôture ne s'est pas faite!", vbCritical, "MON PROGRAMME -Clôture de fin d'année "
Else
MsgBox "Clôture effectuée avec succès!", vbInformation, "MON PROGRAMME -Clôture de fin d'année "
End If
DoCmd.Echo True
DoCmd.Hourglass False
Exit Function
ErreursCloture:
Select Case Err.Number
Case 3044
MsgBox "Le chemin d'accès n'est pas valide. Assurez-vous que le nom du chemin d'accès est correct et qu'une connexion est établie avec le serveur sur lequel vous souhaitez effectuer la sauvegarde.", vbExclamation + vbOKOnly, "MON PROGRAMME -Tentative de sauvegarde"
Case 76
MsgBox "Chemin d'accès introuvable.", vbExclamation + vbOKOnly, "MON PROGRAMME -Tentative de sauvegarde"
Case Else
MsgBox "Une erreur non traitée s'est produite (" & Err.Number & "-" & Err.Description & ")", vbExclamation + vbOKOnly, "MON PROGRAMME -Tentative de sauvegarde"
End Select
End Function |
Partager