OVH Cloud OVH Cloud

MsgBox

20 réponses
Avatar
Ayrton [ASC]
Bonjour à tous,

Voilà, j'essaie depuis hier d'aider un ami son appli perso et je sèche
lamentablement sur un souci de MsgBox ;-(
Dans un form unique, sur un controle ,nommé " Genre ", j'ai mis ce petit
bout de code :
Private Sub Genre_LostFocus()
If IsNull(Me.Genre) Then
MsgBox (" Le champ n'est pas renseigné, voulez-vous continuer ?"),
vbOKCancel
If Not vbOK Then
Me.Genre.SetFocus
Cancel = True
End If
End If
End Sub

Mon souci est que quand je click sur " Annuler ", je passe quand même au
controle suivant ! Je n'arrive pas à demander à Access de laisser le
focus sur le champ " Genre " si l'on click sur Annuler.

Qui pourrais me dire où est mon erreur ?
Un grand merci d'avance et bonne fêtes de fin d'année à vous tous ;-)

Cordialement

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerbe rmail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr

10 réponses

1 2
Avatar
RGI
Bonjour

essaies ceci

Private Sub Genre_LostFocus()
Dim rep As String

rep = MsgBox (" Le champ n'est pas renseigné, voulez-vous continuer
?", vbOKCancel ,"")
If rep = vbOK Then
Me.Genre.SetFocus
Else
Cancel = True
End If

End Sub

salutations

RGI

Bonjour à tous,

Voilà, j'essaie depuis hier d'aider un ami son appli perso et je sèche
lamentablement sur un souci de MsgBox ;-(
Dans un form unique, sur un controle ,nommé " Genre ", j'ai mis ce
petit bout de code :
Private Sub Genre_LostFocus()
If IsNull(Me.Genre) Then
MsgBox (" Le champ n'est pas renseigné, voulez-vous continuer ?"),
vbOKCancel
If Not vbOK Then
Me.Genre.SetFocus
Cancel = True
End If
End If
End Sub

Mon souci est que quand je click sur " Annuler ", je passe quand même
au controle suivant ! Je n'arrive pas à demander à Access de laisser
le focus sur le champ " Genre " si l'on click sur Annuler.

Qui pourrais me dire où est mon erreur ?
Un grand merci d'avance et bonne fêtes de fin d'année à vous tous ;-)

Cordialement



Avatar
3stone
Salut,

"Ayrton [ASC]"
| Voilà, j'essaie depuis hier d'aider un ami son appli perso et je sèche
| lamentablement sur un souci de MsgBox ;-(
| Dans un form unique, sur un controle ,nommé " Genre ", j'ai mis ce petit
| bout de code :
| Private Sub Genre_LostFocus()
| If IsNull(Me.Genre) Then
| MsgBox (" Le champ n'est pas renseigné, voulez-vous continuer ?"),
| vbOKCancel
| If Not vbOK Then
| Me.Genre.SetFocus
| Cancel = True
| End If
| End If
| End Sub
|
| Mon souci est que quand je click sur " Annuler ", je passe quand même au
| controle suivant ! Je n'arrive pas à demander à Access de laisser le
| focus sur le champ " Genre " si l'on click sur Annuler.


Le "LostFocus" ne connait pas de 'cancel' ;-)

Essaies ton code sur le 'exit'

PS: Si tu compile ton code avant de "sortir" de l'éditeur (à faire absolument)
tu aurais recu le message d'erreur "Variable non définie..."

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
JMH
Salut
Tu veux redonner le Focus au même champ dans l'évenement LostFocus de ce
champ........
Tu donnes une valeur à la variable Cancel qui n'est pas définie dans le
Sub.........
Tu n'es pas sur le bon Evénement pour tester ça..-
Tu mets ce Sub dans l'évenement Sur Sortie
Et puis le test Msgbox n'est pas juste
voilà

Private Sub genre_Exit(Cancel As Integer)
If Not IsNull(Me.genre) Then Exit Sub

If MsgBox(" Le champ n'est pas renseigné, voulez-vous continuer ?",
vbYesNo) = vbYes Then
Me.b.SetFocus
Else
Cancel = True
End If
End Sub


Bonne journée.

"Ayrton [ASC]" a écrit dans le message de news:

Bonjour à tous,

Voilà, j'essaie depuis hier d'aider un ami son appli perso et je sèche
lamentablement sur un souci de MsgBox ;-(
Dans un form unique, sur un controle ,nommé " Genre ", j'ai mis ce petit
bout de code :
Private Sub Genre_LostFocus()
If IsNull(Me.Genre) Then
MsgBox (" Le champ n'est pas renseigné, voulez-vous continuer ?"),
vbOKCancel
If Not vbOK Then
Me.Genre.SetFocus
Cancel = True
End If
End If
End Sub

Mon souci est que quand je click sur " Annuler ", je passe quand même au
controle suivant ! Je n'arrive pas à demander à Access de laisser le focus
sur le champ " Genre " si l'on click sur Annuler.

Qui pourrais me dire où est mon erreur ?
Un grand merci d'avance et bonne fêtes de fin d'année à vous tous ;-)

Cordialement

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerbe rmail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr



Avatar
JièL
Bonjoir(c) Ayrton [ASC]

Le 29/12/2006 13:26 vous avez écrit ceci :
Bonjour à tous,

Qui pourrais me dire où est mon erreur ?


A mon avis il y en a 2
Une sur la sainte axe de ton test car tu testes la constante vbok, qui
vaut toujours 1, évidement

la seconde est de vouloir boucler sur ce champ pendant la saisie.

Ton code devrait être (AMHA) sur la propriété "Avant MAJ" du formulaire ce
qui interdirait la validation tant que ta donnée n'est pas bonne.
Avantage, tu peux regrouper tous les tests de validation ici sans obliger
un ordre précis de saisie

Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim reponse
If IsNull(Me.Genre) Then
reponse = MsgBox("Le champ Genre n'est pas renseigné, voulez-vous
continuer ?", vbOKCancel)
If reponse <> vbOK Then
DoCmd.CancelEvent
Me.Genre.SetFocus
End If
End If
End Sub

NB : étant TRES fainéant, je mettrais plutôt la propriétés du champ de la
table à "Null Interdit", mais c'est vrai que le message d'erreur est un
peu cracra ;-)
Autre astuce, mettre une zone de liste parce que sinon tu va avoir tout et
n'importe quoi dans ce champ la
M, M., Mr, Mr., Monsieur, monsieur. Msieur... etc etc ;-)

Mébon, c'que j'en dis ;-)

Un grand merci d'avance et bonne fêtes de fin d'année à vous tous ;-)

Cordialement


--
JièL / Jean-Louis GOUBERT - Bonnes fêtes de fin d'année
Là bas mieux qu'en face ;-) http://forums.offices.free.fr/
La FAQ Outlook est là : http://faq.outlook.free.fr/
Les stats de CDO : http://faq.outlook.free.fr/cdo/

Avatar
3stone
Salut JièL,

"JièL"
| Private Sub Form_BeforeUpdate(Cancel As Integer)


Le problème (ici) du beforeUpdate, c'est qu'il n'a lieu que lors d'un... update ;-)
Si on passe dans les contrôles par une tabulation ou s'il n'y a pas
de modification de la valeur... pas de update !

Le "exit" est ici mieux approprié.

Et le code pour le msgbox peut devenir :

If IsNull(NomCtrl) Then
If MsgBox("continuer ?", vbYesNo) = vbNo Then
Cancel = True
End If
End If

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Ayrton [ASC]
Bonjour *3stone*,
Dans ton message de news:%,
Tu nous annonçais ce qui suit :-(*)
Salut,


Salut 3stone,
Ca fait un moment que j'étais pas venu poser ma p'tite question hein ?
;-)

Le "LostFocus" ne connait pas de 'cancel' ;-)


Ah.....c'est une chose que je nesavais pas....

Essaies ton code sur le 'exit'


Ca ne vas pas aller car je ne veux pas que l'utilisateur
sorte........juste qu'il reste "bloqué " sur le champ " Genre " au cas
où il cliquerait sur Annuler....

PS: Si tu compile ton code avant de "sortir" de l'éditeur (à faire
absolument) tu aurais recu le message d'erreur "Variable non
définie..."


Ben non j'ai rien eu ;-( Et je te promets que je compile......

Passe de bonne fêtes ;-)

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerbe rmail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr

Avatar
Ayrton [ASC]
Bonjour *JMH*,
Dans ton message de news:,
Tu nous annonçais ce qui suit :-(*)
Salut
Tu veux redonner le Focus au même champ dans l'évenement LostFocus de
ce champ........
Tu donnes une valeur à la variable Cancel qui n'est pas définie dans
le Sub.........
Tu n'es pas sur le bon Evénement pour tester ça..-
Tu mets ce Sub dans l'évenement Sur Sortie
Et puis le test Msgbox n'est pas juste
voilà

Private Sub genre_Exit(Cancel As Integer)
If Not IsNull(Me.genre) Then Exit Sub

If MsgBox(" Le champ n'est pas renseigné, voulez-vous continuer ?",
vbYesNo) = vbYes Then
Me.b.SetFocus
Else
Cancel = True
End If
End Sub


Impeccable, çafonctionne pil comme je voulais ;-)
Merci beaucoup..

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerber mail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.outlookexpress6?hl=fr

Avatar
Ayrton [ASC]
Bonjour *JièL*,
Dans ton message de news:eaz%,
Tu nous annonçais ce qui suit :-(*)
Bonjoir(c) Ayrton [ASC]


Salut Jièl,

A mon avis il y en a 2


Ben s'il n' y en a e,core que deux, ça va.....lol

Une sur la sainte axe de ton test car tu testes la constante vbok, qui
vaut toujours 1, évidement


Bien vu
la seconde est de vouloir boucler sur ce champ pendant la saisie.

Ton code devrait être (AMHA) sur la propriété "Avant MAJ" du
formulaire ce qui interdirait la validation tant que ta donnée n'est
pas bonne. Avantage, tu peux regrouper tous les tests de validation
ici sans obliger un ordre précis de saisie

Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim reponse
If IsNull(Me.Genre) Then
reponse = MsgBox("Le champ Genre n'est pas renseigné,
voulez-vous continuer ?", vbOKCancel)
If reponse <> vbOK Then
DoCmd.CancelEvent
Me.Genre.SetFocus
End If
End If
End Sub


Yes mais ça oblige d'attendre d"être à la fin de la saisie pour avoir le
message alors qu'en " Sortie ", on l' a tout de suite...

NB : étant TRES fainéant, je mettrais plutôt la propriétés du champ
de la table à "Null Interdit", mais c'est vrai que le message
d'erreur est un peu cracra ;-)


Je ne te le fait pas dire et là aussi, il faut attendre la fin de la
saisie pour avoir la MsgBox


Autre astuce, mettre une zone de liste parce que sinon tu va avoir
tout et n'importe quoi dans ce champ la
M, M., Mr, Mr., Monsieur, monsieur. Msieur... etc etc ;-)

Mébon, c'que j'en dis ;-)


T'inquiète, il s'agit déjà d'une zone de liste déroulante et elle est
déjà toute remplie puisqu'il s'agit de genre de films ; j'aide un ami à
se faire une petite appli sympa pour gérer des DVDs....
Voili voilou.....

Tiens, pendant que j'y suis, une petite question à vous tous :
Soit une zone de liste déroulante remplie ; à côté, une autre zone de
liste aussi remplie ; question :
Est il possible en selectionnant une valeur de la première zone de liste
deroulante, de masquer certaines valeurs de la seconde ?
Suis je clair ? ;-)

Un grand merci à vous...................encore une fois !

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerbe rmail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr

Avatar
Ayrton [ASC]
Bonjour *RGI*,
Dans ton message de news:%,
Tu nous annonçais ce qui suit :-(*)
Bonjour


Bonjour,

essaies ceci

Private Sub Genre_LostFocus()
Dim rep As String

rep = MsgBox (" Le champ n'est pas renseigné, voulez-vous continuer
?", vbOKCancel ,"")
If rep = vbOK Then
Me.Genre.SetFocus
Else
Cancel = True
End If

End Sub


Ca vas pas ! ;-( Si je click sur Annuler, jecontinue quand même, comme
si je cliquais sur OK....
Merci quand même

Salutations

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerbe rmail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr

Avatar
Ayrton [ASC]
Bonjour *3stone*,
Dans ton message de news:,
Tu nous annonçais ce qui suit :-(*)
Salut JièL,

"JièL"
Private Sub Form_BeforeUpdate(Cancel As Integer)



Le problème (ici) du beforeUpdate, c'est qu'il n'a lieu que lors
d'un... update ;-) Si on passe dans les contrôles par une tabulation
ou s'il n'y a pas
de modification de la valeur... pas de update !


Exact
Le "exit" est ici mieux approprié.

Et le code pour le msgbox peut devenir :

If IsNull(NomCtrl) Then
If MsgBox("continuer ?", vbYesNo) = vbNo Then
Cancel = True
End If
End If


Ok 3stone mais qur quel évènement ? Je viens de tester ton code sur "
Perte de Focus " et si je click sur No, je passe " tout droit " ;-( ;
autrement dit, que je click sur Yes ou No = même résultat .
pourquoi t'est ce ? ? ;-)

--
Christophe
--------------------------------------------------------------
--------------------------------------------------------------
http://cerbe rmail.com/?cUkbZNnG8H (Enlever l'espace)
ou
http://viadresse.com?25031980
Recherche dans les Archives :
http://groups.google.fr/group/microsoft.public.fr.windowsxp?hl=fr


1 2