Comment vérifier le contenu de plusieurs champs d'un formulaire
lepoitevin86
Messages postés
14
Statut
Membre
-
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en ACCESS 2007
Dans un formulaire Nommé F_Toiles j'ai 3 champs contrôles "Num_Objet1", "Num_Objet2" et "Num_Objet3". Je veux controler qu'il ne doit pas y avoir la même valeur dans les trois champs, mais les champs "Num_Objet2" et "Num_Objet3" peuvent ne pas être renseignés.
Sur quel evenement faut-il mettre le contrôle et quelle est la syntaxe
Merci de votre aide
Je suis en ACCESS 2007
Dans un formulaire Nommé F_Toiles j'ai 3 champs contrôles "Num_Objet1", "Num_Objet2" et "Num_Objet3". Je veux controler qu'il ne doit pas y avoir la même valeur dans les trois champs, mais les champs "Num_Objet2" et "Num_Objet3" peuvent ne pas être renseignés.
Sur quel evenement faut-il mettre le contrôle et quelle est la syntaxe
Merci de votre aide
3 réponses
-
Bonjour,
Un exemple de code.
A vous d'adapter l'action a faire en cas d'egalite de champ.
Private Sub Num_Objet1_AfterUpdate() If Me.Num_Objet1 = Me.Num_Objet2 Then MsgBox "Egalite champ 1 et 2" ElseIf Me.Num_Objet1 = Me.Num_Objet3 Then MsgBox "Egalite champ 1 et 3" Else End If End Sub Private Sub Num_Objet2_AfterUpdate() If Me.Num_Objet2 = Me.Num_Objet1 Then MsgBox "Egalite champ 2 et 1" ElseIf Me.Num_Objet2 = Me.Num_Objet3 Then MsgBox "Egalite champ 2 et 3" Else End If End Sub Private Sub Num_Objet3_AfterUpdate() If Me.Num_Objet3 = Me.Num_Objet1 Then MsgBox "Egalite champ 3 et 1" ElseIf Me.Num_Objet3 = Me.Num_Objet2 Then MsgBox "Egalite champ 3 et 2" Else End If End Sub-
Merci f894009,
Le code est bon, j'obtiens bien un message quand 2 champs sont identiques mais malgré tout après avoir répondu ok au message d'erreur, si je passe à l'enregistrement suivant ou si je fais ajout d'enregistrement access ne bloque pas l'utilisateur.
Sur quel événement faut t'il tester pour valider le formulaire ?
Merci de ta réponse et surtout très bon reveillon -
-
-
-
-
-
Bonjour,
Mais ma question reste sans réponse Non, vous avez la reponse: apres mise a jour tetxbox, vous devez mettre le code approprie apres ou a la place des lignes de msgbox ex: raz de la textbox en defaut et garder le focus sur cette textbox pour resaisir.
Bon courage -
Re,
Raz textbox:
Private Sub Num_Objet1_AfterUpdate() If Me.Num_Objet1 = Me.Num_Objet2 Then MsgBox "Egalite champ 1 et 2" Num_Objet1 = "" ElseIf Me.Num_Objet1 = Me.Num_Objet3 Then MsgBox "Egalite champ 1 et 3" Num_Objet1 = "" Else End If End Sub Private Sub Num_Objet2_AfterUpdate() If Me.Num_Objet2 = Me.Num_Objet1 Then MsgBox "Egalite champ 2 et 1" Num_Objet2 = "" ElseIf Me.Num_Objet2 = Me.Num_Objet3 Then MsgBox "Egalite champ 2 et 3" Num_Objet2 = "" Else End If End Sub Private Sub Num_Objet3_AfterUpdate() If Me.Num_Objet3 = Me.Num_Objet1 Then MsgBox "Egalite champ 3 et 1" Num_Objet3 = "" ElseIf Me.Num_Objet3 = Me.Num_Objet2 Then MsgBox "Egalite champ 3 et 2" Num_Objet3 = "" Else End If End Sub
Il faut au moins un controle supplementaire: textbox1 pas vide. Mais je ne sais pas comment est votre fichier, donc je ne sais pas comment vous aider!!-
Bonjour f894009
Merci pour le script,
Il ne me reste plus qu'à positionner le curseur sur le bon contrôle, car si j'ai un doublon sur le 2eme contrôle , j'ai bien le message d'erreur mais après avoir fait [OK] le curseur se positionne sur le 3eme contrôle. J'ai essayé la fonction GetFocus sans résultat.
Si tu as une idée et un exemple je suis preneur;
Merci -
Bonjour,
A voir, test fait sur la reception du focus:
Private Sub Num_Objet1_GotFocus() If Me.Num_Objet1 = Me.Num_Objet2 Then MsgBox "Egalite champ 1 et 2" Num_Objet1 = "" Num_Objet1.SetFocus ElseIf Me.Num_Objet1 = Me.Num_Objet3 Then MsgBox "Egalite champ 1 et 3" Num_Objet1 = "" Num_Objet1.SetFocus Else End If End Sub Private Sub Num_Objet2_GotFocus() If Me.Num_Objet2 = Me.Num_Objet1 Then MsgBox "Egalite champ 2 et 1" Num_Objet2 = "" Num_Objet2.SetFocus ElseIf Me.Num_Objet2 = Me.Num_Objet3 Then MsgBox "Egalite champ 2 et 3" Num_Objet2 = "" Forms!formulaire1!Num_Objet2.SetFocus Else End If End Sub Private Sub Num_Objet3_GotFocus() If Me.Num_Objet2 = Me.Num_Objet1 Then MsgBox "Egalite champ 2 et 1" Num_Objet2 = "" Num_Objet2.SetFocus ElseIf Me.Num_Objet2 = Me.Num_Objet3 Then MsgBox "Egalite champ 2 et 3" Num_Objet2 = "" Num_Objet2.SetFocus Else End If End Sub
-