Option Compare Database 'fonctions de contrôle du bon fonctionnement de l'appli Public Function connexion() 'connexion de l'utilisateur Dim val As Integer Dim login, sql, VERSION As String login = CurrentUser val = acces(login) VERSION = parametre("VERSION") 'maj des infos dans ztblUtilisateur, et dans tbl_paramutil si besoin If val > 0 Then 'utilisateur reconnu: on met à jour ses infos sql = "UPDATE ztblUtilisateurs SET ztblUtilisateurs.VersionAppli = '" & VERSION & "', ztblUtilisateurs.DerniereConnexion = '" & Date & "' " & _ "WHERE (((ztblUtilisateurs.login)='" & login & "'));" connexion = 1 Else 'nouvel utilisateur sql = "INSERT INTO ztblUtilisateurs ( login, acces, VersionAppli, DerniereConnexion ) " & _ "SELECT '" & login & "' AS Expr1, 'consult' AS Expr2, '" & VERSION & "' AS Expr3, '" & Date & "' AS Expr4;" Call PremCo(login) connexion = 0 End If DoCmd.SetWarnings False DoCmd.RunSQL sql DoCmd.SetWarnings True End Function Sub PremCo(ByVal login As String) Dim sql, impr As String DoCmd.SetWarnings False 'ajout des lignes dans paramètres utilisateur sql = "INSERT INTO tbl_ParamUtil ( Parametre, Description, [User] ) " & _ "SELECT tbl_ParamUtil.Parametre, First(tbl_ParamUtil.Description) AS PremierDeDescription, '" & login & "' AS Expr1 " & _ "From tbl_ParamUtil " & _ "GROUP BY tbl_ParamUtil.Parametre;" DoCmd.RunSQL sql 'choix de l'imprimante impr = NomImpr(True) sql = "UPDATE tbl_ParamUtil SET tbl_ParamUtil.Valeur = '" & impr & "' " & _ "WHERE (((tbl_ParamUtil.Parametre)='Imprimante') AND ((tbl_ParamUtil.User)='" & login & "'));" DoCmd.RunSQL sql DoCmd.SetWarnings True End Sub Public Function VerifEtat(Tbl As String, ByVal CodeAgent As String, ByVal moisRH As Integer, ByVal anneeRH As Integer, avertissement As Integer) Dim critere, msg As String 'vérification des données stockées davant la création d'un formulaire 'si données non validées, suppression, sinon, invalidation 'avertissement: si 0, pas de message d'vartissement avant execution des requêtes; si 1: avertissement critere = "[CodeAgent]='" & CodeAgent & "' AND [MoisRH]=" & moisRH & " AND [AnneeRH]=" & anneeRH VerifEtat = 0 If Nz(DCount("[IDSuivi]", Tbl, critere), 0) >= 1 Then If DLookup("[Etat]", "tbl_SuiviRH", critere) = "Importé" Then 'msg = "Voulez vous mettre à jour les données déjà enregistrées dans la table [" & Tbl & "]?" Else If acces(CurrentUser) = 2 Then msg = "[ADMIN] Ce formulaire a déja été validé/édité. Voulez vous vraiment recréer les formulaires?" Else MsgBox "Ces données ont déja été validées. Veuillez contacter un administrateur." VerifEtat = -1 Exit Function End If End If If Len(msg) > 0 Then If MsgBox(msg, vbYesNo, Tbl) = vbNo Then VerifEtat = -1 Exit Function End If End If Call suppression(Tbl, CodeAgent, moisRH, anneeRH, avertissement) End If End Function Public Sub ControleMenu() Dim critere As String 'contrôle l'affichage du menu en fonction de l'état des données CodeAgent = forms![frm_menu].lst_agent.Column(0) moisRH = forms![frm_menu].lst_mois.Column(0) anneeRH = forms![frm_menu].lst_annee.Column(0) If anneeRH > 2000 And moisRH <= 12 And moisRH > 0 Then critere = "[Valide]=True AND [MoisRH]=" & moisRH & " AND [AnneeRH]=" & anneeRH If Not Nz(DCount("[IDSuivi]", "tbl_SuiviRH", critere), 0) >= 1 Then VerrouMenu (1) End If If CodeAgent <> "" Then critere = "[Valide]=True AND [CodeAgent]='" & CodeAgent & "' AND [MoisRH]=" & moisRH & " AND [AnneeRH]=" & anneeRH If Nz(DCount("[IDSuivi]", "tbl_SuiviRH", critere), 0) = 1 Then 'fichier importé If DLookup("[Etat]", "tbl_SuiviRH", critere) = "Importé" Or DLookup("[Etat]", "tbl_SuiviRH", critere) = "Invalidé" Then If DCount("[IDSuivi]", "tbl_FormHS", critere) > 0 And DCount("[IDSuivi]", "tbl_FormDep", critere) > 0 Then 'données importées et analysées 'vérif: If VerifCompteLignes(CodeAgent, moisRH, anneeRH) = 1 Then 'apparemment pas d'erreur d'analyse VerrouMenu (3) Else MsgBox "Attention: il est possible que des erreurs se soient produites lors de l'analyse des données. Il est conseillé de remettre à jour les données." VerrouMenu (3) End If Else 'données importées pas analysées VerrouMenu (2) End If ElseIf DLookup("[Etat]", "tbl_SuiviRH", critere) = "Validé" Then 'validé ou edité VerrouMenu (4) If DLookup("[Edite]", "tbl_SuiviRH", critere) = True Then forms![frm_menu].Edition.Caption = "Edité le " & DLookup("[DateEdition]", "tbl_SuiviRH", critere) forms![frm_menu].Edition.Visible = True End If End If ElseIf Nz(DCount("[IDSuivi]", "tbl_SuiviRH", critere), 0) > 1 Then 'erreur de suivi MsgBox "Attention: plusieurs lignes sont considérées comme valides dans la table de suivi pour cet agent et cette période." VerrouMenu (1) Else 'les données n'ont pas été importées VerrouMenu (1) End If Else If Nz(DCount("[IDSuivi]", "tbl_SuiviRH", critere), 0) >= 1 Then VerrouMenu (6) Else VerrouMenu (5) End If End If Else VerrouMenu (0) End If End Sub Public Function VerifCompteLignes(ByVal CodeAgent As String, ByVal moisRH As Integer, ByVal anneeRH As Integer) Dim critere As String critere = "[CodeAgent]='" & CodeAgent & "' AND [MoisRH]=" & moisRH & " AND [AnneeRH]=" & anneeRH If DCount("[DateRH]", "r_NbJoursImport", critere) = DCount("[IDSuivi]", "tbl_FormHS", critere) And DCount("[DateRH]", "r_NbJoursImport", critere) = DCount("[IDSuivi]", "tbl_FormDep", critere) Then VerifCompteLignes = 1 'ok Else VerifCompteLignes = 0 'erreur End If End Function Public Function PeriodeAgent(CodeAgent As String, ByVal moisRH As Integer, ByVal anneeRH As Integer) 'retourne le code de la période de validité correspondante à l'agent pour le mois et l'année indiqués 'renvoie 0 si code non trouvé 'Si le mois et/ou l'année entrés en paramètres sont à 0, on prend les valeurs du formulaire menu Dim rs As DAO.Recordset Dim critere As String Dim DateRH As Date If CurrentProject.AllForms("frm_Menu").IsLoaded Then If moisRH = 0 Then moisRH = CInt(forms![frm_menu].[mois]) If anneeRH = 0 Then anneeRH = CInt(forms![frm_menu].[Annee]) 'ElseIf CurrentProject.AllForms("frm_chargement").IsLoaded Then ' If moisRH = 0 Then moisRH = CInt(Forms![frm_chargement].[mois]) ' If anneeRH = 0 Then anneeRH = CInt(Forms![frm_chargement].[Annee]) Else PeriodeAgent = 0 Exit Function End If critere = "[CodeAgent]='" & CodeAgent & "'" DateRH = CDate("15/" & moisRH & "/" & anneeRH) Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_PeriodeAgent WHERE " & critere & ";") 'Debug.Print "SELECT * FROM tbl_PeriodeAgent WHERE " & critere & ";" If Not rs.RecordCount > 0 Then PeriodeAgent = 0 Exit Function End If rs.MoveFirst Do Until DateRH >= rs![DateInf] And (DateRH <= rs![DateSup] Or IsNull(rs![DateSup])) rs.MoveNext If rs.EOF = True Then PeriodeAgent = 0 Exit Function End If Loop PeriodeAgent = CInt(rs![CodePeriode]) End Function Public Function PeriodeBareme(NomBareme As String, ByVal moisRH As Integer, ByVal anneeRH As Integer) 'retourne le code de la période de validité correspondante au barême pour le mois et l'année indiqués 'renvoie 0 si code non trouvé 'si le mois et l'année entrés en paramètres sont égaux à 0, on prend ceux du menu Dim rs As DAO.Recordset Dim critere As String Dim DateRH As Date If CurrentProject.AllForms("frm_Menu").IsLoaded Then If moisRH = 0 Then moisRH = CInt(forms![frm_menu].[mois]) If anneeRH = 0 Then anneeRH = CInt(forms![frm_menu].[Annee]) ElseIf CurrentProject.AllForms("frm_chargement").IsLoaded Then If moisRH = 0 Then moisRH = CInt(forms![frm_chargement].[mois]) If anneeRH = 0 Then anneeRH = CInt(forms![frm_chargement].[Annee]) Else PeriodeBareme = 0 Exit Function End If 'MsgBox "periode bareme: " & moisRH & "/" & anneeRH critere = "[NomBareme]='" & NomBareme & "'" DateRH = CDate("15/" & moisRH & "/" & anneeRH) Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_PeriodeBareme WHERE " & critere & ";") If Not rs.RecordCount > 0 Then PeriodeBareme = 0 Exit Function End If rs.MoveFirst Do Until DateRH >= rs![DateInf] And (DateRH <= rs![DateSup] Or IsNull(rs![DateSup])) rs.MoveNext If rs.EOF = True Then PeriodeBareme = 0 Exit Function End If Loop PeriodeBareme = rs![CodePeriode] End Function Public Function CtrlValidite(ByVal table As String, ByVal Champ1_valeur As String, ByVal NvelleDateInf As Date) 'cette fonction vérifie que la nouvelle période n'entre pas en conflit avec une autre période 'elle est utilisée au sein de la fonction NvellePeriode Dim rs As DAO.Recordset Dim sql, champ1_nom As String Set rs = CurrentDb.OpenRecordset(table) champ1_nom = rs.Fields(0).Name Set rs = Nothing sql = "SELECT * FROM " & table & " WHERE [" & table & "].[" & champ1_nom & "]='" & Champ1_valeur & "' ORDER BY [DateInf];" Set rs = CurrentDb.OpenRecordset(sql) 'si pas d'autres périodes If rs.RecordCount = 0 Then Exit Function rs.MoveFirst Do Until rs.EOF = True If Not IsNull(rs![DateSup]) = True Then If NvelleDateInf <= rs![DateSup] And NvelleDateInf >= rs![DateInf] Then ' la nouvelle date est comprise dans une période déja existante, la fonction renvoie le code de cette période CtrlValidite = rs![CodePeriode] Exit Function End If End If rs.MoveNext Loop 'la nouvelle date n'est pas comprise dans une période existante, mais elle peut être antérieure ' à une période existante, auquelle cas la date de fin devra être automatiquement remplie rs.MoveFirst Do Until rs.EOF = True If Not IsNull(rs![DateSup]) = True Then If NvelleDateInf <= rs![DateInf] Then 'la fonction renvoie le code de cette période en négatif CtrlValidite = -1 * rs![CodePeriode] Exit Function End If End If rs.MoveNext Loop CtrlValidite = 0 End Function Function CtrlBareme(NomBareme As String, PeriodeValidite As Integer) Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_Periodebareme WHERE [NomBareme]='" & NomBareme & "' AND [PeriodeValidite]=" & PeriodeValidite) End Function Public Function VerifPeriodeAgent(CodeAgent As String) 'cette fonction vérifie la cohérence des périodes affectées aux données de l'agent 'elle renvoie une chaine de caractères constituée du code de l'agent et de chaque date manquante dans la table des périodes Dim rs As DAO.Recordset Dim sql As String Dim pbm As String Dim dat As Date Dim i, k As Integer sql = "SELECT tbl_PeriodeAgent.CodeAgent, tbl_PeriodeAgent.DateInf, tbl_PeriodeAgent.DateSup, tbl_PeriodeAgent.CodePeriode " & _ "FROM tbl_PeriodeAgent " & _ "WHERE (((tbl_PeriodeAgent.CodeAgent)='" & CodeAgent & "')) " & _ "ORDER BY tbl_PeriodeAgent.DateInf;" Set rs = CurrentDb.OpenRecordset(sql) If Not rs.RecordCount > 0 Then VerifPeriodeAgent = CodeAgent & ";" & "Tout" Exit Function End If dat = #1/1/2013# 'attention: format mois/jour/annee pbm = "" Do Until dat >= Date Ok = 0 rs.MoveFirst Do Until rs.EOF = True If dat <= Nz(rs![DateSup], Date) And dat >= rs![DateInf] Then Ok = 1 rs.MoveNext Loop If Ok = 0 Then k = 0 For i = 0 To UBound(Split(pbm, ";")) If Split(pbm, ";")(i) = Month(dat) & "/" & Year(dat) Then k = 1 Next i If k = 0 Then pbm = pbm & Month(dat) & "/" & Year(dat) & ";" 'on évite les doublons End If dat = dat + 1 Loop If pbm <> "" Then pbm = CodeAgent & ";" & pbm pbm = Left(pbm, Len(pbm) - 1) End If rs.Close Set rs = Nothing VerifPeriodeAgent = pbm End Function Public Function VerifPeriodeBareme(NomBareme As String) 'cette fonction vérifie la cohérence des périodes affectées aux baremes 'elle renvoie une chaine de caractères constituée du nom du bareme et de chaque date manquante dans la table des périodes Dim rs As DAO.Recordset Dim sql As String Dim pbm As String Dim dat As Date Dim i, k As Integer sql = "SELECT tbl_PeriodeBareme.NomBareme, tbl_PeriodeBareme.DateInf, tbl_PeriodeBareme.DateSup " & _ "FROM tbl_PeriodeBareme " & _ "WHERE (((tbl_PeriodeBareme.NomBareme)='" & NomBareme & "')) " & _ "ORDER BY tbl_PeriodeBareme.DateInf;" Set rs = CurrentDb.OpenRecordset(sql) If Not rs.RecordCount > 0 Then VerifPeriodeBareme = NomBareme & ";" & "Tout" Exit Function End If dat = #1/1/2013# 'attention: format mois/jour/annee pbm = "" Do Until dat >= Date Ok = 0 rs.MoveFirst Do Until rs.EOF = True If dat <= Nz(rs![DateSup], Date) And dat >= rs![DateInf] Then Ok = 1 rs.MoveNext Loop If Ok = 0 Then k = 0 For i = 0 To UBound(Split(pbm, ";")) If Split(pbm, ";")(i) = Month(dat) & "/" & Year(dat) Then k = 1 Next i If k = 0 Then pbm = pbm & Month(dat) & "/" & Year(dat) & ";" 'on évite les doublons End If dat = dat + 1 Loop If pbm <> "" Then pbm = NomBareme & ";" & pbm pbm = Left(pbm, Len(pbm) - 1) End If rs.Close Set rs = Nothing VerifPeriodeBareme = pbm End Function Public Function VerificationComplete() 'lance les différentes fonctions de vérification et remplit éventuellement la table tmp_problemes Dim rs1, rs_pbm As DAO.Recordset Dim tmp, ErreurPeriode, ErreurDonnees As String Dim i As Integer 'vidage de la table tmp_problemes DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM tmp_problemes;" DoCmd.SetWarnings True ErreurPeriode = "" ErreurDonnees = "" Set rs_pbm = CurrentDb.OpenRecordset("tmp_problemes") 'Verification des périodes: Set rs1 = CurrentDb.OpenRecordset("SELECT tbl_Agents.CodeAgent FROM tbl_Agents GROUP BY tbl_Agents.CodeAgent;") rs1.MoveFirst Do Until rs1.EOF = True tmp = VerifPeriodeAgent(rs1![CodeAgent]) If tmp <> "" Then For i = 1 To UBound(Split(tmp, ";")) rs_pbm.AddNew rs_pbm![ObjetConcerne] = Split(tmp, ";")(0) rs_pbm![erreur] = "Date(s) Manquantes(s) pour la gestion des périodes des données agent" rs_pbm![Detail] = Split(tmp, ";")(i) rs_pbm.Update Next i ErreurPeriode = "Erreurs détectées dans le paramétrage des périodes (cf. tmp_problemes)" End If rs1.MoveNext Loop rs1.Close Set rs1 = CurrentDb.OpenRecordset("SELECT tbl_baremes.NomBareme FROM tbl_baremes GROUP BY tbl_baremes.NomBareme;") rs1.MoveFirst Do Until rs1.EOF = True tmp = VerifPeriodeBareme(rs1![NomBareme]) If tmp <> "" Then For i = 1 To UBound(Split(tmp, ";")) rs_pbm.AddNew rs_pbm![ObjetConcerne] = Split(tmp, ";")(0) rs_pbm![erreur] = "Date(s) Manquantes(s) pour la gestion des périodes du bareme" rs_pbm![Detail] = Split(tmp, ";")(i) rs_pbm.Update Next i ErreurPeriode = "Erreurs détectées dans le paramétrage des périodes (cf. tmp_problemes)" End If rs1.MoveNext Loop rs1.Close 'vérification de la cohérence des données des tables tmp = VerifTables() If tmp <> "" Then For i = 1 To UBound(Split(tmp, ";")) rs_pbm.AddNew rs_pbm![ObjetConcerne] = Split(tmp, ";")(0) rs_pbm![erreur] = "Données incohérentes/manquantes" rs_pbm![Detail] = Split(tmp, ";")(i) rs_pbm.Update Next i ErreurDonnees = "Erreurs détectées dans la cohérence des données des tables (cf. tmp_problemes)" End If If rs_pbm.RecordCount > 0 Then End If If Len(ErreurPeriode) > 0 Or Len(ErreurDonnees) > 0 Then VerificationComplete = ErreurPeriode & vbNewLine & ErreurDonnees Else VerificationComplete = "" End If End Function Public Function VerifTables() 'vérification de la cohérence des données des tables Dim pbm As String Dim rs As DAO.Recordset Dim i As Integer pbm = "" 'tbl_agents Set rs = CurrentDb.OpenRecordset("SELECT tbl_Agents.CodeAgent, tbl_Agents.TypeVehicule, tbl_Agents.DateAutorisationVP, tbl_Agents.PuissanceFiscVP, tbl_Agents.NbKmAutorisesVP " & _ "FROM tbl_Agents " & _ "WHERE ((tbl_Agents.TypeVehicule)<>'4') AND ((((tbl_Agents.TypeVehicule) Is Not Null)) OR (((tbl_Agents.DateAutorisationVP) Is Not Null)) OR (((tbl_Agents.PuissanceFiscVP) Is Not Null)) OR (((tbl_Agents.NbKmAutorisesVP) Is Not Null)));") rs.MoveFirst Do Until rs.EOF = True 'verif des données véhicules For i = 1 To rs.Fields.Count - 1 If IsNull(rs.Fields(i).Value) Then pbm = pbm & ";Agent " & rs![CodeAgent] & ": champ manquant [" & rs.Fields(i).Name & "]" Next rs.MoveNext Loop If Left(pbm, 1) = ";" Then pbm = Right(pbm, Len(pbm) - 1) If pbm <> "" Then pbm = "tbl_Agents;" & pbm VerifTables = pbm End Function Public Function VerifRepas(CodeAgent As String, DateRH As Date) 'vérification des données à l'import: un agent n'a le droit qu'à un repas par jour '0 -> ok ; -1 -> non VerifRepas = -1 If Nz(DSum("repas", "tbl_ImportRH", "[CodeAgent]='" & CodeAgent & "' and [DateRH]=#" & Format(DateRH, "mm-dd-yyyy") & "#"), 0) > 1 Then VerifRepas = 0 End Function Public Function VerifDroit(ByVal IdImportRH As Long) 'vérification des données à l'import: un agent n'a le droit à des frais que s'il s'est rendu ailleurs que sur sa residence admin '1 -> a le droit ; 0 -> pas le droit, mais pas de données ; -1 pas le droit et des données Dim ResAdm As String Dim rs As DAO.Recordset Dim sortie As Integer 'attention aux périodes de validité des données ResAdm = Nz(DLookup("ResidenceAdmin", "tbl_Agents", "[CodeAgent]='" & CodeAgent & "' AND [PeriodeValidite]=" & PeriodeAgent(CodeAgent, Month(DateRH), Year(DateRH))), "") VerifDroit = 0 If Len(ResAdm) = 0 Then Exit Function sortie = 0 Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_ImportRH WHERE [CodeAgent]='" & CodeAgent & "' AND [DateRH]=#" & Format(DateRH, "mm-dd-yyyy") & "#;") 'Debug.Print "SELECT * FROM tbl_ImportRH WHERE [CodeAgent]='" & CodeAgent & "' AND [DateRH]=#" & Format(DateRH, "mm-dd-yyyy") & "#;" If Not rs.RecordCount > 0 Then Exit Function rs.MoveFirst Do Until rs.EOF = True If Not rs![Localisation] Like ResAdm Then sortie = sortie + 1 rs.MoveNext Loop If sortie = 0 Then VerifDroit = 0 rs.MoveFirst Do Until rs.EOF = True If rs![Repas] > 0 Or rs![DistanceTranche1] > 0 Or rs![DistanceTranche2] > 0 Then VerifDroit = 0 rs.MoveNext Loop End If End Function Public Function VerifVP(CodeAgent As String, DateRH As Date) 'On Error GoTo fin Dim sql As String VerifVP = -1 sql = "SELECT tbl_ImportRH.IdImportRH, tbl_ImportRH.CodeAgent, tbl_ImportRH.DateRH, tbl_ImportRH.VehiculePersoTranche1, tbl_ImportRH.VehiculePersoTranche2, " & _ "tbl_Agents.TypeVehicule " & _ "FROM tbl_ImportRH INNER JOIN tbl_Agents ON tbl_ImportRH.CodeAgent = tbl_Agents.CodeAgent " & _ "WHERE (tbl_ImportRH.CodeAgent='" & CodeAgent & "' AND tbl_ImportRH.DateRH=#" & Format(DateRH, "mm-dd-yyyy") & "#) AND " & _ "(tbl_ImportRH.VehiculePersoTranche1='True' OR tbl_ImportRH.VehiculePersoTranche2='True') AND tbl_Agents.TypeVehicule='4';" 'Debug.Print sql Set rs = CurrentDb.OpenRecordset(sql) If rs.RecordCount > 0 Then VerifVP = 0 fin: On Error Resume Next rs.Close End Function Public Function VerifImport(CodeAgent As String, moisRH As Integer, anneeRH As Integer) On Error GoTo err 'procède à l'examen des données brutes lors de l'import Dim rs As DAO.Recordset VerifImport = "" If Len(CodeAgent) = 0 Or Not moisRH > 0 Or Not moisRH < 13 Or Not anneeRH > 2000 Then Exit Function Set rs = CurrentDb.OpenRecordset("SELECT * FROM r_DonneesImport WHERE [CodeAgent]='" & CodeAgent & "' AND [MoisRH]=" & moisRH & " AND [AnneeRH]=" & anneeRH & ";") If Not rs.RecordCount > 0 Then Exit Function rs.MoveFirst Do Until rs.EOF = True If rs![FraisValide] = False Then VerifImport = " -> DONNEES A VERIFIER" Exit Function End If rs.MoveNext Loop rs.Close Set rs = CurrentDb.OpenRecordset("SELECT * FROM r_DonneesImport2 WHERE [CodeAgent]='" & CodeAgent & "' AND [MoisRH]=" & moisRH & " AND [AnneeRH]=" & anneeRH & ";") If Not rs.RecordCount > 0 Then Exit Function rs.MoveFirst Do Until rs.EOF = True 'If VerifDroit(CodeAgent, rs![DateRH]) = -1 Or VerifRepas(CodeAgent, rs![DateRH]) = -1 Or VerifVP(CodeAgent, rs![DateRH]) = -1 Then If VerifRepas(CodeAgent, rs![DateRH]) = 0 Or VerifVP(CodeAgent, rs![DateRH]) = 0 Then VerifImport = " -> DONNEES A VERIFIER" Exit Function End If rs.MoveNext Loop rs.Close Exit Function err: VerifImport = "Impossible de vérifier les données" End Function Public Function VerifDonneesExport(ByVal CodeAgent As String, ByVal moisRH As Integer, ByVal anneeRH As Integer) As Boolean 'procède à l'examen des données lors de l'export vers PERIPLE On Error GoTo fin VerifDonneesExport = True If Len(VerifImport(CodeAgent, moisRH, anneeRH)) > 0 Then VerifDonneesExport = False fin: On Error Resume Next Exit Function err: MsgBox "Des erreurs se sont produites lors de la vérification des données, veuillez contacter un administrateur" VerifDonneesExport = False GoTo fin End Function