Utilitaires.bas 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. Option Compare Database
  2. Private Const BIF_RETURNONLYFSDIRS = 1
  3. Private Const BIF_DONTGOBELOWDOMAIN = 2
  4. Private Const BIF_NEWDIALOGSTYLE As Long = &H40
  5. Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
  6. Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, _
  7. ByVal lpBuffer As String) As Long
  8. Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, _
  9. ByVal lpString2 As String) As Long
  10. Private Type BrowseInfo
  11. hwndOwner As Long
  12. pIDLRoot As Long
  13. pszDisplayName As Long
  14. lpszTitle As Long
  15. ulFlags As Long
  16. lpfnCallback As Long
  17. lParam As Long
  18. iImage As Long
  19. End Type
  20. Function Environ(VarName)
  21. Dim wss, env
  22. Set wss = CreateObject("WScript.Shell")
  23. Set env = wss.environment("process")
  24. Environ = env(VarName)
  25. If Environ = "" Then
  26. Set env = wss.environment("system")
  27. Environ = env(VarName)
  28. End If
  29. End Function
  30. Public Sub ImprEtats(ByVal stEtat As String, ByVal itCopies As Integer, ByVal critere As String)
  31. 'imprime un état en plusieurs exemplaires
  32. ' stEtat : nom de l'état
  33. ' itCopies : nombre de copies
  34. DoCmd.OpenReport stEtat, acViewPreview, , critere
  35. DoCmd.PrintOut acPages, , , , itCopies
  36. DoCmd.Close acReport, stEtat
  37. End Sub
  38. Public Sub ExportBordereau(ByVal NomBord As String, ByVal moisRH As Integer, ByVal anneeRH As Integer)
  39. Dim OuvAutoPdf As Boolean
  40. Dim NomMois, repPDF As String
  41. If MsgBox("Voulez-vous ouvrir le PDF une fois créé?", vbYesNo) = vbYes Then
  42. OuvAutoPdf = True
  43. Else
  44. OuvAutoPdf = False
  45. End If
  46. repPDF = chemin(moisRH, anneeRH)
  47. NomMois = Left(UCase(MonthName(moisRH)), 4)
  48. If repPDF = "" Then
  49. Call MsgBox("Vous devez définir un répertoire de stockage pour utiliser cette fonction.", , NomEtat)
  50. Exit Sub
  51. End If
  52. If dir(repPDF, 16) = "" Then MkDir (repPDF)
  53. critere = "[MoisRH]=" & moisRH & " AND [AnneeRH]=" & anneeRH
  54. DoCmd.OpenReport NomBord, acViewPreview, , critere
  55. DoCmd.OutputTo acOutputReport, , "PDF", repPDF & NomBord & "_" & NomMois & anneeRH & ".pdf", OuvAutoPdf
  56. DoCmd.Close acReport, NomBord
  57. End Sub
  58. Public Sub ExportEtatPDF(ByVal NomEtat As String, ByVal CodeAgent As String, ByVal moisRH As Integer, ByVal anneeRH As Integer)
  59. Dim OuvAutoPdf As Boolean
  60. Dim NomMois, repPDF, nomFichier, NomAgent, critere, str As String
  61. OuvAutoPdf = False
  62. NomAgent = Nz(Split(DLookup("Nom", "r_Agents", "[CodeAgent]='" & CodeAgent & "'"), " ")(0), "") & "." & _
  63. Left(Nz(Split(DLookup("Nom", "r_Agents", "[CodeAgent]='" & CodeAgent & "'"), " ")(1), ""), 1)
  64. If NomAgent = "" Then
  65. 'erreur nom
  66. NomAgent = Nz(InputBox("L'application n'a pas trouvé le nom de famille de l'agent. Celui ci doit se trouver dans la table tbl_Equipe, au format 'NOM Prenom'. Vous pouvez le renseigner manuellement:"), "")
  67. If NomAgent = "" Then Exit Sub
  68. End If
  69. repPDF = chemin(moisRH, anneeRH)
  70. 'NomMois = Left(UCase(MonthName(moisRH)), 4)
  71. 'NomFichier=NomAgent & "_" & NomMois & anneeRH & "_" & NomEtat & ".pdf"
  72. If Len(CStr(moisRH)) = 1 Then
  73. NomMois = anneeRH & "0" & moisRH
  74. Else
  75. NomMois = anneeRH & moisRH
  76. End If
  77. nomFichier = NomAgent & "_" & NomMois & "_" & NomEtat & ".pdf"
  78. If repPDF = "" Then
  79. Call MsgBox("Vous devez définir un répertoire de stockage pour utiliser cette fonction.", , NomEtat)
  80. Exit Sub
  81. End If
  82. If dir(repPDF, 16) = "" Then MkDir (repPDF)
  83. critere = "[CodeAgent]='" & CodeAgent & "' AND [MoisRH]=" & moisRH & " AND [AnneeRH]=" & anneeRH
  84. nomFichier = repPDF & NomAgent & "_" & NomMois & "_" & Replace(NomEtat, "Et_", "") & ".pdf"
  85. DoCmd.OpenReport NomEtat, acViewPreview, , critere
  86. DoCmd.OutputTo acOutputReport, , "PDF", nomFichier, OuvAutoPdf
  87. DoCmd.Close acReport, NomEtat
  88. End Sub
  89. Public Function SelectFolder(titre As String, Handle As Long) As String
  90. Dim lpIDList As Long
  91. Dim strBuffer As String
  92. Dim strTitre As String
  93. Dim tBrowseInfo As BrowseInfo
  94. strTitre = titre
  95. With tBrowseInfo
  96. .hwndOwner = Handle
  97. .lpszTitle = lstrcat(strTitre, "")
  98. .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN + BIF_NEWDIALOGSTYLE
  99. End With
  100. lpIDList = SHBrowseForFolder(tBrowseInfo)
  101. If (lpIDList) Then
  102. strBuffer = String(260, vbNullChar)
  103. SHGetPathFromIDList lpIDList, strBuffer
  104. SelectFolder = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
  105. End If
  106. End Function
  107. Public Function NomImpr(Optional PremCo As Boolean)
  108. 'ouvre le formulaire frm_ChoixImpr et renvoie le nom de l'imprimante choisie
  109. 'ouverture du formulaire
  110. DoCmd.OpenForm "frm_ChoixImpr"
  111. If PremCo = True Then MsgBox "VEUILLEZ TOUT D'ABORD CHOISIR L'IMPRIMANTE QUE DEVRA UTILISER VOTRE APPLICATION" & vbNewLine & "(Vous pourrez ensuite en changer à partir du menu 'parametres', accessible depuis l'écran d'accueil)"
  112. 'la fonction reste en attente jusqu'à ce qu'une imprimante ait été choisie
  113. Do Until Nz(forms![frm_ChoixImpr].impr, "") <> ""
  114. DoEvents
  115. Loop
  116. 'récupération du nom de l'imprimante
  117. If Not forms![frm_ChoixImpr].impr = "annuler" Then
  118. NomImpr = Nz(forms![frm_ChoixImpr].impr, "")
  119. Else
  120. NomImpr = ""
  121. End If
  122. 'fermeture du formulaire
  123. DoCmd.Close acForm, "frm_ChoixImpr"
  124. End Function
  125. Public Function Attendre(tps As Double)
  126. 'tps en ms
  127. Dim t0, t As Single
  128. t0 = Timer
  129. Do Until 1000 * (t - t0) >= tps
  130. t = Timer
  131. DoEvents
  132. Loop
  133. End Function
  134. Sub testchrono()
  135. MsgBox "1"
  136. Call Attendre(5000) '5s
  137. MsgBox "2"
  138. End Sub
  139. Public Function OuvrirRepertoire(chemin As String)
  140. 'validité du chemin
  141. If (IsNull(chemin)) Then
  142. MsgBox ("Chemin d'accès non valide")
  143. Exit Function
  144. End If
  145. 'existence du répertoire
  146. If (dir(chemin, vbDirectory) <> "") Then
  147. 'Appel de l'explorateur Windows
  148. Shell "explorer " & chemin, vbNormalFocus
  149. Else
  150. MsgBox ("Ce répertoire n'existe pas")
  151. End If
  152. End Function
  153. Public Function ChercherNomFichier()
  154. Dim initialFileName As Variant
  155. ' Displays the Office File Open dialog to choose a file name
  156. ' for the current employee record.
  157. Dim fileName As String
  158. Dim result As Integer
  159. With Application.FileDialog(3) ' 3 is a constant: msoFileDialogFilePicker
  160. .Title = "Selection d'un fichier à importer"
  161. .Filters.Add "All Files", "*.*"
  162. .Filters.Add "XML", "*.xml"
  163. .FilterIndex = 2
  164. .AllowMultiSelect = False
  165. initialFileName = DLookup("Valeur", "tbl_parametre", "Parametre = 'RepXML'")
  166. If dir(initialFileName) = "" Then initialFileName = DLookup("Valeur", "tbl_parametre", "Parametre = 'RepXML_defaut'")
  167. If IsNull(initialFileName) Then
  168. initialFileName = fCurrentDBDir
  169. End If
  170. .initialFileName = initialFileName
  171. result = .Show
  172. If (result <> 0) Then 'result = 0 if nothing was selected
  173. fileName = Trim(.SelectedItems.Item(1))
  174. 'filename contains the path you want.
  175. ChercherNomFichier = fileName
  176. End If
  177. End With
  178. End Function
  179. Public Sub ImportXMLPDA(ByVal strfilename As String)
  180. 'déclaration file system object
  181. Dim FSO
  182. 'instanciation
  183. Set FSO = CreateObject("Scripting.FileSystemObject")
  184. 'importation des données xml
  185. Application.ImportXML DataSource:=strfilename, ImportOptions:=acAppendData
  186. End Sub
  187. Public Function ExtraitNomFichier(strNomFichierCplt As String) As String
  188. Dim i, j As Long
  189. j = InStr(1, strNomFichierCplt, "\")
  190. Do
  191. i = j
  192. j = InStr(i + 1, strNomFichierCplt, "\")
  193. Loop Until j = 0
  194. ExtraitNomFichier = Mid(strNomFichierCplt, i + 1, Len(strNomFichierCplt) - i)
  195. End Function
  196. Public Function ExtraitNomRep(strNomFichierCplt As String) As String
  197. Dim i, j As Long
  198. j = InStr(1, strNomFichierCplt, "\")
  199. Do
  200. i = j
  201. j = InStr(i + 1, strNomFichierCplt, "\")
  202. Loop Until j = 0
  203. ExtraitNomRep = Mid(strNomFichierCplt, 1, i)
  204. End Function
  205. Function ReformateDate(InputDate As String) As Date 'change le format date importé en format intelligible ACCESS
  206. Dim DateCourte As String
  207. Dim y As String
  208. Dim m As String
  209. Dim d As String
  210. Dim DateOrdre As String
  211. DateCourte = Left(InputDate, 10)
  212. y = Left(DateCourte, 4)
  213. m = Mid(DateCourte, 6, 2)
  214. d = Right(DateCourte, 2)
  215. DateOrdre = d & "/" & m & "/" & y
  216. ReformateDate = CDate(DateOrdre)
  217. End Function
  218. Public Function NomAgentAbrege(Nom As String)
  219. If Not Len(Nom) > 0 Or Not UBound(Split(Nom, " ")) > 0 Then
  220. NomAgentAbrege = Nom
  221. Exit Function
  222. End If
  223. NomAgentAbrege = Left(Split(Nom, " ")(1), 1) & "." & Split(Nom, " ")(0)
  224. End Function
  225. Public Function parametre(ByVal param As String, Optional ByVal valeur2 As String)
  226. 'renvoie la valeur d'un paramètre demandé depuis tbl_parametre
  227. Dim critere As String
  228. If Not IsNull(valeur2) And valeur2 <> "" Then
  229. critere = "[parametre]='" & param & "' AND [valeur2]='" & valeur2 & "'"
  230. Else
  231. critere = "[parametre]='" & param & "'"
  232. End If
  233. parametre = Nz(DLookup("valeur", "tbl_parametre", critere), Null)
  234. End Function
  235. Public Function chemin(ByVal moisRH As Integer, ByVal anneeRH As Integer)
  236. 'renvoie la valeur du répertoire PDF de la table tbl_ParamUtil
  237. Dim critere, str As String
  238. critere = "[parametre]='repPDF' AND [User]='" & CurrentUser & "'"
  239. If Not moisRH > 0 Or Not moisRH <= 12 Or Not anneeRH > 2000 Then
  240. chemin = Nz(DLookup("valeur", "tbl_ParamUtil", critere), "")
  241. Exit Function
  242. End If
  243. 'chemin = Nz(DLookup("valeur", "tbl_ParamUtil", critere), "") & "\" & Left(UCase(MonthName(moisRH)), 4) & anneeRH & "\"
  244. chemin = Nz(DLookup("valeur", "tbl_ParamUtil", critere), "")
  245. If Right(chemin, 1) <> "\" Then chemin = chemin & "\"
  246. str = CStr(anneeRH) & "-"
  247. If Len(CStr(moisRH)) = 1 Then str = str & "0"
  248. str = str & moisRH
  249. chemin = Nz(DLookup("valeur", "tbl_ParamUtil", critere), "") & str & "\"
  250. End Function
  251. Public Sub MAJParametre(ByVal param As String, ByVal Valeur As Variant, Optional ByVal valeur2 As String)
  252. 'met à jour une valeur de la table parametre
  253. Dim critere As String
  254. If Not Nz(valeur2, "") = "" Then
  255. critere = "[parametre]='" & param & "' AND [valeur2]='" & valeur2 & "'"
  256. Else
  257. critere = "[parametre]='" & param & "'"
  258. End If
  259. DoCmd.SetWarnings False
  260. DoCmd.RunSQL "UPDATE tbl_parametre SET tbl_parametre.valeur = '" & Valeur & "' WHERE " & critere & ";"
  261. DoCmd.SetWarnings True
  262. End Sub