Comment vérifier le contenu de plusieurs champs d'un formulaire

Fermé
lepoitevin86 Messages postés 14 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 16 novembre 2013 - 29 déc. 2012 à 12:30
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 - 4 janv. 2013 à 18:38
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

3 réponses

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
31 déc. 2012 à 10:21
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
1
lepoitevin86 Messages postés 14 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 16 novembre 2013
31 déc. 2012 à 17:42
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
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
31 déc. 2012 à 19:35
Re,

Comme je l'ai ecrit, a vous d'ajouter le code en fonction de ce que vous voulez faire!!!!
0
lepoitevin86 Messages postés 14 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 16 novembre 2013
1 janv. 2013 à 16:38
Merci f894009,

Mais ma question reste sans réponse

Bonne et heureuse année
0
explique =)
0
lepoitevin86 Messages postés 14 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 16 novembre 2013
1 janv. 2013 à 20:03
Quand ACCESS me renvoie un message d'erreur et que j'ai appuyé sur OK pour corriger un des champs, si je fais l'action de passer à 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 ?
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
2 janv. 2013 à 08:25
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
0
lepoitevin86 Messages postés 14 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 16 novembre 2013
2 janv. 2013 à 09:53
Bonjour,
J'ai bien compris mais pouvez-vous me donner un exemple de code pour effacer la zone et pour garder le focus (je ne connais pas visual basic)

Merci pour votre aide
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
2 janv. 2013 à 10:26
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!!
0
lepoitevin86 Messages postés 14 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 16 novembre 2013
3 janv. 2013 à 18:21
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
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 711
4 janv. 2013 à 18:38
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
0