Re Bonjour
Voila j avais eu a utilisé un code pour la fermeture aprés un temps inactivité d une base . A cette fermeture j ai voulu ajouté une condition
Code sans la condition
Code avec la condition
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub Form_Timer() ' IDLEMINUTES détermine le temps d'inactivité avant de déclencher la procédure d'alerte. Const IDLEMINUTES = 20 'correspond à 3 secondes (5/100 de 60 secondes) Static PrevControlName As String Static PrevFormName As String Dim ActiveFormName As String Dim ActiveControlName As String Dim ExpiredMinutes On Error Resume Next ' Capte le formulaire actif et le nom du contrôle ActiveFormName = Screen.ActiveForm.Name If Err Then ActiveFormName = "No Active Form" Err = 0 End If ActiveControlName = Screen.ActiveControl.Name If Err Then ActiveControlName = "No Active Control" Err = 0 End If ' Vérifie ce qui est actuellement actif et réinitialise temps expiration si : ' 1. Aucun enregistrement d'action encore (code roule pour ' la première fois); ' 2. Les noms précédents sont différents des noms courants ' (l'utilisateur a fait une action pendant l'intervalle de temps. If (PrevControlName = "") Or (PrevFormName = "") _ Or (ActiveFormName <> PrevFormName) _ Or (ActiveControlName <> PrevControlName) Then PrevControlName = ActiveControlName PrevFormName = ActiveFormName ExpiredTime = 0 Else ' ...si non, c'est que l'utilisateur a été inactif pendant ce laps de temps, ' dès lors, on incrémente ExpiredTime ExpiredTime = ExpiredTime + Me.TimerInterval End If ' Le temps d'inactivité a-t-il dépassé la limite définie (IDLEMINUTES)? ExpiredMinutes = (ExpiredTime / 1000) / 60 If ExpiredMinutes >= IDLEMINUTES Then ' ...si oui, on remet le temps d'expiration à 0... ExpiredTime = 0 ' ...et appelle la sous-routine idletimedetected. IdleTimeDetected ExpiredMinutes End If End Sub Sub IdleTimeDetected(ExpiredMinutes) Application.Quit acSaveYes End Sub
Groupe étant une Zone de texte du Formulaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub Form_Timer() ' IDLEMINUTES détermine le temps d'inactivité avant de déclencher la procédure d'alerte. Const IDLEMINUTES = 20 'correspond à 3 secondes (5/100 de 60 secondes) Static PrevControlName As String Static PrevFormName As String Dim ActiveFormName As String Dim ActiveControlName As String Dim ExpiredMinutes On Error Resume Next ' Capte le formulaire actif et le nom du contrôle ActiveFormName = Screen.ActiveForm.Name If Err Then ActiveFormName = "No Active Form" Err = 0 End If ActiveControlName = Screen.ActiveControl.Name If Err Then ActiveControlName = "No Active Control" Err = 0 End If ' Vérifie ce qui est actuellement actif et réinitialise temps expiration si : ' 1. Aucun enregistrement d'action encore (code roule pour ' la première fois); ' 2. Les noms précédents sont différents des noms courants ' (l'utilisateur a fait une action pendant l'intervalle de temps. If (PrevControlName = "") Or (PrevFormName = "") _ Or (ActiveFormName <> PrevFormName) _ Or (ActiveControlName <> PrevControlName) Then PrevControlName = ActiveControlName PrevFormName = ActiveFormName ExpiredTime = 0 Else ' ...si non, c'est que l'utilisateur a été inactif pendant ce laps de temps, ' dès lors, on incrémente ExpiredTime ExpiredTime = ExpiredTime + Me.TimerInterval End If ' Le temps d'inactivité a-t-il dépassé la limite définie (IDLEMINUTES)? ExpiredMinutes = (ExpiredTime / 1000) / 60 If ExpiredMinutes >= IDLEMINUTES Then ' ...si oui, on remet le temps d'expiration à 0... ExpiredTime = 0 ' ...et appelle la sous-routine idletimedetected. IdleTimeDetected ExpiredMinutes End If End Sub Sub IdleTimeDetected(ExpiredMinutes) If Groupe = "Gerants" Then Shell "D:\DIRECTION\La_Brioche_Doree\Log_Off.bat" End If If Groupe = "Direction" Then Application.Quit acSaveYes End If End Sub
merci
Partager