Ajouter des conditions dans la validation d'un enregistrement
1 réponse
po2b
Bonjour,
Je mets un contrôle sur la validation des enregistrements d'un formulaire.
Si modif alors question pour confirmation ou annulation.
Dans le code suivant je voudrais ajouter le contrôle des 3 champs suivants :
TypeProjet
StatutProjet
NomReprésentant
Je voudrais contrôler que ces 3 champs sont renseignés (obligation de
remplir ces champs)
si l'un des ces 3 champs n'est pas renseigné, je voudrais que l'utilisateur
ne puisse pas valider la création ou la modification et revienne au
formulaire avec message (Vous devez indiquer le Type de Projet).
Pouvez-vous m'aider (je suis novice en VB) Merci d'avance PO
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Je fais confirmer les modifications
If MsgBox("Validez-vous les Modifications ?", vbYesNo + vbQuestion, "Silice
Dialogue") = vbNo Then
'Si réponse Oui je valide
Me.Undo
'Si réponse Non je ne valide pas
Cancel = True
End If
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Argyronet
Bonjour,
Il n'y a pas de miracle... Déjà, il faut empêcher la validation de l'enregistrement en lui même par les erreur de manip, par exemple, la molette de la souris.
Ensuite, pour forcer l'entrée de valeur vous pouvez procéder ainsi : Sur l'événement Load du formulaire Me!MonTextBox1= "" Me!MonTextBox2= "" Me!MonTextBox3= ""
Sur l'événement AfterUpdate du premier TextBox MonTextBox1.Locked = False MonTextBox2.Locked = (Len(MonTextBox1.Locked)>1) MonTextBox3.Locked = True MonBoutonAnnuler.Enabled=True MonBoutonValider.Enabledúlse
Sur l'événement AfterUpdate du second TextBox MonTextBox1.Locked = False MonTextBox2.Locked = (Len(MonTextBox1.Locked)>1) MonTextBox3.Locked = '(Len(MonTextBox1.Locked)>1) AND (Len(MonTextBox2.Locked)>1)) MonBoutonAnnuler.Enabled=True MonBoutonValider.Enabled=(MonTextBox1.Locked = False)
Le principe vérifie que chaque entrée de zone de texte contient au moins un caractère et le verrouille en écriture sinon... Le bouton Valider s'active dès que MonTextBox3 et déverrouillé ce que se traduit implicitement par le fait que MonTextBox1 et MonTextBox2 le sont aussi. Il vous appartient d'exploiter l'événement BeforeUpdate avec le Cancel = True sur chaque zone de texte à contrôler de manière à ce que chaque valeur soit conforme... Par exemple si MonTextBox3 doit contenir une date et rien d'autre Private Sub MonTextBox3_BeforeUpdate(Cancel As Integer) Cancel = Not IsDate(Me!MonTextBox3) If Cancel Then Beep MsgBox "Une date, s.v.p...", vbExclamation End If End Sub
-- Argy http://argyronet.developpez.com/ Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442) VBA pour Office 2007 (ISBN 2742983910)
"po2b" wrote:
Bonjour,
Je mets un contrôle sur la validation des enregistrements d'un formulaire. Si modif alors question pour confirmation ou annulation.
Dans le code suivant je voudrais ajouter le contrôle des 3 champs suivants : TypeProjet StatutProjet NomReprésentant
Je voudrais contrôler que ces 3 champs sont renseignés (obligation de remplir ces champs) si l'un des ces 3 champs n'est pas renseigné, je voudrais que l'utilisateur ne puisse pas valider la création ou la modification et revienne au formulaire avec message (Vous devez indiquer le Type de Projet).
Pouvez-vous m'aider (je suis novice en VB) Merci d'avance PO
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Je fais confirmer les modifications If MsgBox("Validez-vous les Modifications ?", vbYesNo + vbQuestion, "Silice Dialogue") = vbNo Then 'Si réponse Oui je valide Me.Undo 'Si réponse Non je ne valide pas Cancel = True End If
End Sub
.
Bonjour,
Il n'y a pas de miracle...
Déjà, il faut empêcher la validation de l'enregistrement en lui même par les
erreur de manip, par exemple, la molette de la souris.
Ensuite, pour forcer l'entrée de valeur vous pouvez procéder ainsi :
Sur l'événement Load du formulaire
Me!MonTextBox1= ""
Me!MonTextBox2= ""
Me!MonTextBox3= ""
Sur l'événement AfterUpdate du premier TextBox
MonTextBox1.Locked = False
MonTextBox2.Locked = (Len(MonTextBox1.Locked)>1)
MonTextBox3.Locked = True
MonBoutonAnnuler.Enabled=True
MonBoutonValider.Enabledúlse
Sur l'événement AfterUpdate du second TextBox
MonTextBox1.Locked = False
MonTextBox2.Locked = (Len(MonTextBox1.Locked)>1)
MonTextBox3.Locked = '(Len(MonTextBox1.Locked)>1) AND
(Len(MonTextBox2.Locked)>1))
MonBoutonAnnuler.Enabled=True
MonBoutonValider.Enabled=(MonTextBox1.Locked = False)
Le principe vérifie que chaque entrée de zone de texte contient au moins un
caractère et le verrouille en écriture sinon...
Le bouton Valider s'active dès que MonTextBox3 et déverrouillé ce que se
traduit implicitement par le fait que MonTextBox1 et MonTextBox2 le sont
aussi.
Il vous appartient d'exploiter l'événement BeforeUpdate avec le Cancel =
True sur chaque zone de texte à contrôler de manière à ce que chaque valeur
soit conforme... Par exemple si MonTextBox3 doit contenir une date et rien
d'autre
Private Sub MonTextBox3_BeforeUpdate(Cancel As Integer)
Cancel = Not IsDate(Me!MonTextBox3)
If Cancel Then
Beep
MsgBox "Une date, s.v.p...", vbExclamation
End If
End Sub
--
Argy
http://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)
"po2b" wrote:
Bonjour,
Je mets un contrôle sur la validation des enregistrements d'un formulaire.
Si modif alors question pour confirmation ou annulation.
Dans le code suivant je voudrais ajouter le contrôle des 3 champs suivants :
TypeProjet
StatutProjet
NomReprésentant
Je voudrais contrôler que ces 3 champs sont renseignés (obligation de
remplir ces champs)
si l'un des ces 3 champs n'est pas renseigné, je voudrais que l'utilisateur
ne puisse pas valider la création ou la modification et revienne au
formulaire avec message (Vous devez indiquer le Type de Projet).
Pouvez-vous m'aider (je suis novice en VB) Merci d'avance PO
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Je fais confirmer les modifications
If MsgBox("Validez-vous les Modifications ?", vbYesNo + vbQuestion, "Silice
Dialogue") = vbNo Then
'Si réponse Oui je valide
Me.Undo
'Si réponse Non je ne valide pas
Cancel = True
End If
Il n'y a pas de miracle... Déjà, il faut empêcher la validation de l'enregistrement en lui même par les erreur de manip, par exemple, la molette de la souris.
Ensuite, pour forcer l'entrée de valeur vous pouvez procéder ainsi : Sur l'événement Load du formulaire Me!MonTextBox1= "" Me!MonTextBox2= "" Me!MonTextBox3= ""
Sur l'événement AfterUpdate du premier TextBox MonTextBox1.Locked = False MonTextBox2.Locked = (Len(MonTextBox1.Locked)>1) MonTextBox3.Locked = True MonBoutonAnnuler.Enabled=True MonBoutonValider.Enabledúlse
Sur l'événement AfterUpdate du second TextBox MonTextBox1.Locked = False MonTextBox2.Locked = (Len(MonTextBox1.Locked)>1) MonTextBox3.Locked = '(Len(MonTextBox1.Locked)>1) AND (Len(MonTextBox2.Locked)>1)) MonBoutonAnnuler.Enabled=True MonBoutonValider.Enabled=(MonTextBox1.Locked = False)
Le principe vérifie que chaque entrée de zone de texte contient au moins un caractère et le verrouille en écriture sinon... Le bouton Valider s'active dès que MonTextBox3 et déverrouillé ce que se traduit implicitement par le fait que MonTextBox1 et MonTextBox2 le sont aussi. Il vous appartient d'exploiter l'événement BeforeUpdate avec le Cancel = True sur chaque zone de texte à contrôler de manière à ce que chaque valeur soit conforme... Par exemple si MonTextBox3 doit contenir une date et rien d'autre Private Sub MonTextBox3_BeforeUpdate(Cancel As Integer) Cancel = Not IsDate(Me!MonTextBox3) If Cancel Then Beep MsgBox "Une date, s.v.p...", vbExclamation End If End Sub
-- Argy http://argyronet.developpez.com/ Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442) VBA pour Office 2007 (ISBN 2742983910)
"po2b" wrote:
Bonjour,
Je mets un contrôle sur la validation des enregistrements d'un formulaire. Si modif alors question pour confirmation ou annulation.
Dans le code suivant je voudrais ajouter le contrôle des 3 champs suivants : TypeProjet StatutProjet NomReprésentant
Je voudrais contrôler que ces 3 champs sont renseignés (obligation de remplir ces champs) si l'un des ces 3 champs n'est pas renseigné, je voudrais que l'utilisateur ne puisse pas valider la création ou la modification et revienne au formulaire avec message (Vous devez indiquer le Type de Projet).
Pouvez-vous m'aider (je suis novice en VB) Merci d'avance PO
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Je fais confirmer les modifications If MsgBox("Validez-vous les Modifications ?", vbYesNo + vbQuestion, "Silice Dialogue") = vbNo Then 'Si réponse Oui je valide Me.Undo 'Si réponse Non je ne valide pas Cancel = True End If