Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ajouter des conditions dans la validation d'un enregistrement

1 réponse
Avatar
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

End Sub

1 réponse

Avatar
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= ""

MonTextBox1.Locked = False
MonTextBox2.Locked = True
MonTextBox3.Locked = True
MonBoutonAnnuler.Enabled=True
MonBoutonValider.Enabledúlse

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

.