with your answers, I have find a solution, thanks. I open a copy of the database that contains the basic tables (the program works on linked tables), I delete the unnecessary tables and data from the new accounting year, I add to it the necessary queries, reports and modules and I save this DB under the name CHEMIN_SAUVEGARDE_COMPTE FF Sàrl compte<exercice>.accdb
' create the db for accounts of current year
retCar = MsgBox("Create the db FF Sàrl compte" & exercice & " ?", vbOKCancel, _
"Clôture de l'exercice comptable")
If retCar = vbOK Then
gNomFichier = CHEMIN_SAUVEGARDE_COMPTE & "FF Sàrl compte " & exercice & ".accdb"
' Create Microsoft Access Workspace object.
Set wrkAcc = CreateWorkspace("", "admin", "", dbUseJet)
Set dbCurrent = wrkAcc.OpenDatabase("C:\FF Sàrl\FF Sàrl données\FF Sàrl Data\FF Sàrl data - copie.accdb", True)
' delete useless tables
With dbCurrent
.TableDefs.Delete "Table des erreurs"
.TableDefs.Delete "tblConversionApexDbf45"
.TableDefs.Delete "tblDetailNoteHandylife"
.TableDefs.Delete "tblExportPaiementPraxo"
.TableDefs.Delete "tblExportPaiementPraxoCopy"
.TableDefs.Delete "TblLocalite"
.TableDefs.Delete "tblNoteHandylife"
.TableDefs.Delete "tblPaiementOrphelin"
.TableDefs.Delete "tblClientService"
.TableDefs.Delete "tblEmployeEnfant"
.TableDefs.Delete "tblNotePaiement"
.TableDefs.Delete "tblOldNotePaiement"
.TableDefs.Delete "tblPatientAdresseFact"
.TableDefs.Delete "tblNotePoursuite"
.TableDefs.Delete "tblPoursuite"
.TableDefs.Delete "tblClientMiseEnCompte"
.TableDefs.Delete "tblCompteBancaire"
.TableDefs.Delete "tblDecompteSalaire"
.TableDefs.Delete "tblDecompteVacances"
.TableDefs.Delete "tblEnfant"
.TableDefs.Delete "tblOfficeJudiciaire"
.TableDefs.Delete "tblPaiement"
.TableDefs.Delete "tblService"
.TableDefs.Delete "tblNote"
.TableDefs.Delete "tblOldNote"
.TableDefs.Delete "tblClientOldPC"
.TableDefs.Delete "tblClientPieceComptable"
.TableDefs.Delete "tblOldPaiement"
.TableDefs.Delete "tblAdresseFact"
.TableDefs.Delete "tblPatient"
.TableDefs.Delete "tblEmploye"
' in tblEcriture and tblDetailEcriture, delete dta of the new year
qryStr = "SELECT distinct tblEcriture.detailRef FROM tblEcriture where tblEcriture.[date Ecriture] > " & FF_dateSQL(dateCloture)
Set qryDef = .CreateQueryDef("", qryStr)
Set recTemp = qryDef.OpenRecordset()
If Not recTemp.EOF Then
recTemp.MoveLast
recTemp.MoveFirst
Set tbldef = .TableDefs("tblDetailEcriture")
qryStr = "SELECT tblDetailEcriture.* FROM tblDetailEcriture"
Set qdfTemp = .CreateQueryDef("", qryStr)
Set recCompte = qdfTemp.OpenRecordset()
recCompte.MoveLast
recCompte.MoveFirst
Do While Not recTemp.EOF
recCompte.FindFirst "[no Detail Ecriture] = " & recTemp!detailref
If Not recCompte.NoMatch Then
recCompte.Delete
recCompte.Requery
End If
recTemp.MoveNext
Loop
End If
' in tbldecompte, delete data of the new year
qryStr = "SELECT tbldecompte.* FROM tbldecompte where tblDecompte.[date conf] > " & FF_dateSQL(dateCloture)
Set qryDef = .CreateQueryDef("", qryStr)
Set recTemp = qryDef.OpenRecordset()
If Not recTemp.EOF Then
recTemp.MoveLast
recTemp.MoveFirst
Do While Not recTemp.EOF
recTemp.Delete
recTemp.MoveNext
Loop
End If
End With
dbCurrent.Close
wrkAcc.Close
FileCopy "C:\FF Sàrl\FF Sàrl données\FF Sàrl Data\FF Sàrl data - copie.accdb", gNomFichier
' copy account queries in the new db
For Each qryDef In CurrentDb.QueryDefs
Select Case qryDef.Name
Case "reqActif", "reqPassif", "reqActifPassif", _
"reqBeneficePerteReporte", "reqBilan", "reqC51", _
"reqC51Stat", "reqC51TVA", "reqCategorie", "reqCompte", _
"reqCompteComplet", "reqCompteDA", "reqCompteEcriture", _
"reqCompteSommeDA", "reqCompteVide", "reqDecompte", "reqDivision", _
"reqEcriture", "reqFactureExt", "reqGroupe", "reqLstComptes", _
"reqNouveauCapital", "reqResultatAvantImpot", _
"reqResultatAvantImpotOld", "reqResultatComptable", _
"reqResultatComptableOld", "reqResultatExp", _
"reqResultatExploitation", "reqResultatExploitationOld", _
"reqResultatHorsExp", "reqResultatOrdinaire", _
"reqResultatOrdinaireOld", "reqStatistiquesAnnuelles", _
"reqStatistiquesMensuelles", "reqStatistiquesParClient", _
"reqStatistiquesSemestrielles", "reqStatTotales"
DoCmd.CopyObject gNomFichier, , acQuery, qryDef.Name
End Select
Next qryDef
' copy account reports in the new db
For Each obj In Application.CurrentProject.AllReports
Select Case obj.Name
Case "rptBilanAnnuel", "rptBilanProvisoire", "rptCloture", _
"rptComptes", "rptCompteVide", "rptPlanComptable", "rptResultat", _
"rptResultatHorsExploitation", _
"rptStatistiquesAnnuelles", "rptStatistiquesMensuelles", _
"rptStatistiquesParClient", "rptStatistiquesSemestrielles", _
"subRptStatistiquesMensuelles", "subRptStatistiquesParClient", _
"subRptStatistiquesSemestrielles"
DoCmd.CopyObject gNomFichier, , acReport, obj.Name
End Select
Next obj
' copy classes 'ValeursFF', 'Compte' et 'client' and module 'UtilitaireCompte' in the new db
DoCmd.CopyObject gNomFichier, , acModule, "ValeursFF"
DoCmd.CopyObject gNomFichier, , acModule, "Compte"
DoCmd.CopyObject gNomFichier, , acModule, "Client"
DoCmd.CopyObject gNomFichier, , acModule, "UtilitaireCompte"