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

lepoitevin86 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
f894009 Messages postés 17277 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
A voir également:

3 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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   Statut Membre Dernière intervention  
 
Merci f894009,

Mais ma question reste sans réponse

Bonne et heureuse année
0
un_neurone
 
explique =)
0
lepoitevin86 Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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   Statut Membre Dernière intervention  
 
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 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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