Bonjour,
Est-il possible de limiter la saisie d'une date dans un champ date d'un formulaire word à des dates postérieures à celle du jour?
Bonjour,
Est-il possible de limiter la saisie d'une date dans un champ date d'un formulaire word à des dates postérieures à celle du jour?
Salut,
A la saisie, non, mais à la sortie du champ, oui.
Il faut un peu de VBA et faire une comparaison avec la date du jour.
Je suis preneur, comment ça se traduira dans les faits?
Salut,
Une piste de départ là : http://heureuxoli.developpez.com/off...ormulaires/#L4
Et comme code, il faut récupérer le contenu de ton champ.
ActiveDocument.FormFileds("MonChamp").ResultFaire une comparaison
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 If ActiveDocument.FormFields("MonChamp").Result < Date() Then MsgBox "La date entrée n'est pas correcte !" End If
J'ai un peu modifié le code, intégré dans un module puis dans la propriété, à la sortie, rien ne se passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub Verifdatesaisie() If ActiveDocument.FormFields("DatedeCreation").Result < Date And ActiveDocument.FormFields("DatedeCreation").Result > Date Then MsgBox "La date entrée ne doit pas être différente de celle du jour de saisie" End If End Sub
l'idée paraît judicieuse.
Est-il possible de mettre la date du champ par défaut à celle du jour?
C'est OK avec Or, évidemment.
Peut on rendre la manœuvre blocante?
Bloquer l'utilisateur sur le champ jusqu'a avoir la bonne date entrée?
Et, ce qui conclurait le projet, existe-t-il un moyen de protéger le code VBA avec le document comme on restreint les modification du document avec un code?
Quelque chose qui pourrait m'aider: comment sélectionne-t-on un champ en VBA?
ainsi, je pourrais mettre ce code à la fin duet tant que la bonne date n'est pas entrée, le champ serait re sélectionné?
Code : Sélectionner tout - Visualiser dans une fenêtre à part If
J'ai tenté ça:
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 Sub Verifdatesaisie() ' Macro créée le 15/01/2014 par ' ' Code WordBasic On Error GoTo fError Select Case MsgBox("Veuillez renseigner le champ DATE avec une date conforme", vbOKOnly) Case vbOK End Select If ActiveDocument.FormFields("DatedeCreation").Result < Date Or ActiveDocument.FormFields("DatedeCreation").Result > Date Then MsgBox "La date entrée ne doit pas être différente de celle du jour de saisie" Dim DATECREATION As String DATEDECREATION = InputBox("Inscrivez la date" & vbCrLf & vbCrLf & "DATE") MsgBox DATEDECREATION ActiveDocument.FormFields("DatedeCreation").Result = DATEDECREATION Selection.GoTo wdGoToBookmark, Name:="MOIS" Else Selection.GoTo wdGoToBookmark, Name:="DatedeCreation" End If fError: MsgBox Err.Description Exit Sub End Sub
Sans succès
Avec, en entrée:
et, en sortie:
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 Sub Verifdatesaisie() If ActiveDocument.FormFields("DatedeCreation").Result < Date Or ActiveDocument.FormFields("DatedeCreation").Result > Date Then MsgBox "La date entrée ne doit pas être différente de celle du jour de saisie" Dim DATECREATION As String DATEDECREATION = InputBox("Inscrivez la date" & vbCrLf & vbCrLf & "DATE") 'MsgBox DATEDECREATION ActiveDocument.FormFields("DatedeCreation").Result = DATEDECREATION Selection.GoTo wdGoToBookmark, Name:="INSEE" Else Selection.GoTo wdGoToBookmark, Name:="MOIS" End If End Sub
J'arrive à retourner en arrière dans mes champs en cas de mauvaise saisie (ce qui ne bloque pas vraiment puisqu'il suffit de sélectionner un autre champ à la souris....), si quelqu'un voit autre chose???
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 Sub VerificationDate() ' Macro créée le 15/01/2014 par ' ' Code WordBasic 'On Error GoTo fError Dim DATECREATION As String DATEDECREATION = InputBox("Inscrivez la date" & vbCrLf & vbCrLf & "DATE") 'MsgBox DATEDECREATION ActiveDocument.FormFields("DatedeCreation").Result = DATEDECREATION 'Select Case MsgBox("Veuillez renseigner le champ DATE avec une date conforme", vbOKOnly) 'Case vbOK ' End Select If ActiveDocument.FormFields("DatedeCreation").Result < Date Or ActiveDocument.FormFields("DatedeCreation").Result > Date Or ActiveDocument.FormFields("DatedeCreation").Result = "" Then MsgBox "La date entrée ne doit pas être différente de celle du jour de saisie" Selection.GoTo wdGoToBookmark, Name:="INSEE" Else Selection.GoTo wdGoToBookmark, Name:="MOIS" End If 'fError: 'MsgBox Err.Description Exit Sub End Sub
Et enfin, comment protéger mon code VBA d'intrusion?
Partager