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

Corriger mon code VBA pour une MsgBox vbYesNoCancel

5 réponses
Avatar
Nelly
Bonjour,

voici mon problème :
Table "Coordonnéesduclient" et formulaire du même nom avec onglets et
sous-formulaires
Champs "Nom", "Prénom" , "Adresse"

Je souhaite éviter les doublons involontaires dans la base mais permettre la
création d'homonymes volontaires. J'utilise donc une message box vb
YesNoCancel (grâce à de précieux conseils sur ce forum) AVANT mise à jour par
un code évènement sur le contrôle "Prénom" avec 3 actions en fonction du
choix de l'utilisateur :
vbYes : créer homonyme en conservant [Nom] et [Prénom] saisis et se placer
sur le contrôle suivant "Adresse"
vbNo : ouvrir le formulaire en cours sur l'enregistrement déjà existant pour
ces [Nom] et [Prénom]
vbCancel : annuler les [Nom]et [prénom] saisis et se replacer sur le
contrôle "Nom" dans le formulaire actif

La traduction erronée de tout cela donne le code ci-dessous. Quelqu'un
pourrait-il me proposer une version corrigée de ce code, les précédentes
contributions m'ayant fait avancer mais n'ayant pas résolu ma difficulté ?

Merci beaucoup,
Nelly

Private Sub Prénom_BeforeUpdate(Cancel As Integer)
'variable stockant la réponse donnée dans la boite de dialogue
Dim intReponse As Integer

If Not IsNull(DLookup("Nom", "Coordonnéesduclient", "[Nom] ='" & Me!Nom & "'
AND [Prénom]='" & Me.Prénom & "'")) Then intResponse = MsgBox("Ce
bénéficiaire semble déjà enregistré. Voulez-vous saisir un HOMONYME ?",
vbYesNoCancel + vbCritical + vbDefaultButton3, "Attention !")
Select Case intReponse
Case vbYes
Forms!Coordonnéesduclient!Adresse.SetFocus
Case vbNo
DoCmd.OpenForm "Coordonnéesduclient", acNormal, , "[Nom] ='" & Me!Nom &
"' AND [Prénom]='" & Me.Prénom & "'"
Case vbCancel
Form.Undo
Forms!Coordonnéesduclient!Nom.SetFocus
End Select

End Sub

5 réponses

Avatar
michel
Bonjour
A la place de ton openform dans le cas VbNo essaie
Me.Recordset.FindFirst "[Nom] ='" & Me!Nom & "' AND [Prénom]='" &
Me.Prénom & "'"
Michel

"Nelly" a écrit dans le message de news:

Bonjour,

voici mon problème :
Table "Coordonnéesduclient" et formulaire du même nom avec onglets et
sous-formulaires
Champs "Nom", "Prénom" , "Adresse"

Je souhaite éviter les doublons involontaires dans la base mais permettre
la
création d'homonymes volontaires. J'utilise donc une message box vb
YesNoCancel (grâce à de précieux conseils sur ce forum) AVANT mise à jour
par
un code évènement sur le contrôle "Prénom" avec 3 actions en fonction du
choix de l'utilisateur :
vbYes : créer homonyme en conservant [Nom] et [Prénom] saisis et se placer
sur le contrôle suivant "Adresse"
vbNo : ouvrir le formulaire en cours sur l'enregistrement déjà existant
pour
ces [Nom] et [Prénom]
vbCancel : annuler les [Nom]et [prénom] saisis et se replacer sur le
contrôle "Nom" dans le formulaire actif

La traduction erronée de tout cela donne le code ci-dessous. Quelqu'un
pourrait-il me proposer une version corrigée de ce code, les précédentes
contributions m'ayant fait avancer mais n'ayant pas résolu ma difficulté ?

Merci beaucoup,
Nelly

Private Sub Prénom_BeforeUpdate(Cancel As Integer)
'variable stockant la réponse donnée dans la boite de dialogue
Dim intReponse As Integer

If Not IsNull(DLookup("Nom", "Coordonnéesduclient", "[Nom] ='" & Me!Nom &
"'
AND [Prénom]='" & Me.Prénom & "'")) Then intResponse = MsgBox("Ce
bénéficiaire semble déjà enregistré. Voulez-vous saisir un HOMONYME ?",
vbYesNoCancel + vbCritical + vbDefaultButton3, "Attention !")
Select Case intReponse
Case vbYes
Forms!Coordonnéesduclient!Adresse.SetFocus
Case vbNo
DoCmd.OpenForm "Coordonnéesduclient", acNormal, , "[Nom] ='" & Me!Nom &
"' AND [Prénom]='" & Me.Prénom & "'"
Case vbCancel
Form.Undo
Forms!Coordonnéesduclient!Nom.SetFocus
End Select

End Sub



Avatar
Nelly
Bonjour Michel,
j'ai essayé cela ne fonctionne pas, mais j'ai remarqué pour le formulaire en
question, alors qu'il y a 3 enregistrements, il m'indique dans la barre de
défilement des enregistrements 1 sur 1 en se plaçant sur un enregistrement
vide.
Peut-être y a t-il un problème là ? Que dois-je vérifier ?
Merci


Bonjour
A la place de ton openform dans le cas VbNo essaie
Me.Recordset.FindFirst "[Nom] ='" & Me!Nom & "' AND [Prénom]='" &
Me.Prénom & "'"
Michel



Avatar
michel
Attention le Mail coupe les lignes , tu a bien ecris ca sur une seule ligne!
Si tu a 1 enr dans ton form comment est il ouvert ? a tu mis un filtre sur
le form ?
Est il bien associe a ta table ? N'est il pas en mode ajout de donnees ?
Au fait quel version d'access ? la propriete Recordset n'existe que depuis
2000
Voila quelques pistes
Sinon si pas trop gros envoie ta base a mon adresse en retirant AEnlever
Michel
"Nelly" a écrit dans le message de news:

Bonjour Michel,
j'ai essayé cela ne fonctionne pas, mais j'ai remarqué pour le formulaire
en
question, alors qu'il y a 3 enregistrements, il m'indique dans la barre de
défilement des enregistrements 1 sur 1 en se plaçant sur un enregistrement
vide.
Peut-être y a t-il un problème là ? Que dois-je vérifier ?
Merci


Bonjour
A la place de ton openform dans le cas VbNo essaie
Me.Recordset.FindFirst "[Nom] ='" & Me!Nom & "' AND [Prénom]='" &
Me.Prénom & "'"
Michel






Avatar
Nelly
J'ai bien repris ton instruction sur une seule ligne.Le formulaire est bien
associé à la table.
je travaille sur ACCESS 2000.
Mais à force de bidouiller, je ne sais plus où voir si le formulaire est en
mode ajout de données ou pas. Pouurais-tu me le rappeler SVP?
Merci.
Nelly


Attention le Mail coupe les lignes , tu a bien ecris ca sur une seule ligne!
Si tu a 1 enr dans ton form comment est il ouvert ? a tu mis un filtre sur
le form ?
Est il bien associe a ta table ? N'est il pas en mode ajout de donnees ?
Au fait quel version d'access ? la propriete Recordset n'existe que depuis
2000
Voila quelques pistes
Sinon si pas trop gros envoie ta base a mon adresse en retirant AEnlever
Michel
"Nelly" a écrit dans le message de news:

Bonjour Michel,
j'ai essayé cela ne fonctionne pas, mais j'ai remarqué pour le formulaire
en
question, alors qu'il y a 3 enregistrements, il m'indique dans la barre de
défilement des enregistrements 1 sur 1 en se plaçant sur un enregistrement
vide.
Peut-être y a t-il un problème là ? Que dois-je vérifier ?
Merci


Bonjour
A la place de ton openform dans le cas VbNo essaie
Me.Recordset.FindFirst "[Nom] ='" & Me!Nom & "' AND [Prénom]='" &
Me.Prénom & "'"
Michel











Avatar
michel
Dans les proprietes de ton formulaire
Onglets donnees
regarde la propriete Entree Données (en 2003) ou peut etre Saisie Donnees en
2000 je ne me rappelle plus
En tous cas Juste en dessous de la propriete Ajout Autorise.
Voila
@Plus
Michel
"Nelly" a écrit dans le message de news:

J'ai bien repris ton instruction sur une seule ligne.Le formulaire est
bien
associé à la table.
je travaille sur ACCESS 2000.
Mais à force de bidouiller, je ne sais plus où voir si le formulaire est
en
mode ajout de données ou pas. Pouurais-tu me le rappeler SVP?
Merci.
Nelly


Attention le Mail coupe les lignes , tu a bien ecris ca sur une seule
ligne!
Si tu a 1 enr dans ton form comment est il ouvert ? a tu mis un filtre
sur
le form ?
Est il bien associe a ta table ? N'est il pas en mode ajout de donnees ?
Au fait quel version d'access ? la propriete Recordset n'existe que
depuis
2000
Voila quelques pistes
Sinon si pas trop gros envoie ta base a mon adresse en retirant AEnlever
Michel
"Nelly" a écrit dans le message de
news:

Bonjour Michel,
j'ai essayé cela ne fonctionne pas, mais j'ai remarqué pour le
formulaire
en
question, alors qu'il y a 3 enregistrements, il m'indique dans la barre
de
défilement des enregistrements 1 sur 1 en se plaçant sur un
enregistrement
vide.
Peut-être y a t-il un problème là ? Que dois-je vérifier ?
Merci


Bonjour
A la place de ton openform dans le cas VbNo essaie
Me.Recordset.FindFirst "[Nom] ='" & Me!Nom & "' AND [Prénom]='" &
Me.Prénom & "'"
Michel