Meilleur auteur de réponses
[access] Valide si année en cours

Question
-
Bonjour,
je bute encore sur un petit problème.
J'ai un formulaire dans lequel j'ai une liste déroulante qui prend sa nourriture dans une table "Clients". Sous cette liste déroulante une zone de texte dans laquelle je dois entrer une date.
C'est dans cette zone de texte que je souhaiterai mettre une condition "Valide si". Ce que je n'arrive pas faire c'est renvoyer un message d'erreur si je tape une date dont l'année est différente de celle du système.
J'ai essayé:
Valide si: Année(date())
Mais ça ne fonctionne pas.
Par contre si je check la date complète du système:
Valide si: date()
La je suis obligé d'entrer la date système.
Avez-vous une idée?
Merci.
Réponses
-
C'est bon j'ai réussi à résoudre mon problème en passant par du VB.
J'ai oublié la fonction Valide si.
Dans l'évènement après mise à jour de ma zone de texte j'y ai mis le code:
Private Sub Test_AfterUpdate() If DatePart("yyyy", Test) > DatePart("yyyy", Date) Then MsgBox "Date invalide" Cancel = False ElseIf DatePart("yyyy", Test) < DatePart("yyyy", Date) Then MsgBox "Date invalide" Cancel = False End If End Sub
Et maintenant ça fonctionne, je ne peux plus mettre de date dont l'année est < ou > à l'année système. Il ne me reste plus qu'à trouver le moyen de retourner sur mon champ après l'erreur et ne plus passer à l'instruction suivante.
- Marqué comme réponse Aurel BeraModerator vendredi 10 mai 2013 06:54
-
J'ai un peu amélioré le code:
Private Sub Test_AfterUpdate() If DatePart("yyyy", Test) <> DatePart("yyyy", Date) Then MsgBox "Date invalide" End If End Sub
Par contre toujours impossible de rester sur le même champ pour modifier l'erreur, je passe automatiquement au champ suivant.
Avez-vous une idée pour rester sur le même champ afin de le modifier avant de passer au suivant?
Merci
- Marqué comme réponse Aurel BeraModerator vendredi 10 mai 2013 06:55
Toutes les réponses
-
C'est bon j'ai réussi à résoudre mon problème en passant par du VB.
J'ai oublié la fonction Valide si.
Dans l'évènement après mise à jour de ma zone de texte j'y ai mis le code:
Private Sub Test_AfterUpdate() If DatePart("yyyy", Test) > DatePart("yyyy", Date) Then MsgBox "Date invalide" Cancel = False ElseIf DatePart("yyyy", Test) < DatePart("yyyy", Date) Then MsgBox "Date invalide" Cancel = False End If End Sub
Et maintenant ça fonctionne, je ne peux plus mettre de date dont l'année est < ou > à l'année système. Il ne me reste plus qu'à trouver le moyen de retourner sur mon champ après l'erreur et ne plus passer à l'instruction suivante.
- Marqué comme réponse Aurel BeraModerator vendredi 10 mai 2013 06:54
-
J'ai un peu amélioré le code:
Private Sub Test_AfterUpdate() If DatePart("yyyy", Test) <> DatePart("yyyy", Date) Then MsgBox "Date invalide" End If End Sub
Par contre toujours impossible de rester sur le même champ pour modifier l'erreur, je passe automatiquement au champ suivant.
Avez-vous une idée pour rester sur le même champ afin de le modifier avant de passer au suivant?
Merci
- Marqué comme réponse Aurel BeraModerator vendredi 10 mai 2013 06:55
-
Bonjour
On a marque votre réponse afin que d'autres personnes avec le même problème puissent profiter de cette solution.
Cordialement
-
-
Bonjour
On Error ... s'applique aux erreurs apparues dans le code VBA.
Pour "focuser" un champ le code VBA c'est
Forms!Employees!EmployeeID.SetFocus:
http://msdn.microsoft.com/fr-fr/library/office/aa221598(v=office.11).aspx
Cordialement,
-
Bonsoir,
merci encore, j'ai maintenant bien saisi l'histoire du on error...
Par contre le Forms!Employees!EmployeeID.SetFocus ne me conviens pas vraiment s'il est tout seul. J'ai trouvé ce que je voulais faire avec une partie de ce code.
Private Sub Form_BeforeUpdate(Cancel As Integer) If IsNull(DteInterObj.Value) Or DteInterObj.Value = "" Or DteInterObj.Value = " " Then MsgBox " Date vide" Me.DteInterObj.SetFocus Cancel = True end sub
J'ai encore un petit souci maintenant.
J'ai une combobox dans laquelle j'ai mes clients. Je souhaiterai que lorsque je sélectionne un client dans la liste, il soit impossible de supprimer le texte car si je supprime le texte après avoir sélectionné mon client et que je valide, j'ai un message d'erreur. J'aimerai bien que lorsque je sélectionne un client et que j'efface manuellement ce dernier, je sois dirigé vers le contrôle suivant. Ou mieux, empêcher la suppression du texte.
J'ai déjà empêché la saisie dans la combobox.
Merci.
-