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
Tisane
Bonjour Christophe,

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 ? ? ;-)


Exit = événement "Sur sortie", je crois ;-)

--
Tisane


Ayrton [ASC] wrote:
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






Avatar
Eric
Hello,


Exit = événement "Sur sortie", je crois ;-)

Ite missa est, ok je sors ;-)

--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

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

Bonjour Christophe,


Bonjour Tisane,

Exit = événement "Sur sortie", je crois ;-)


Ah d'accord ! J'en étais resté avec l'évènement " Sur Perte deFocus ".
Merci Tisane

--
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
Eric
Bonjour,

Il faut que la requête source de ta 2eme liste est un critere sur le
champ commun entre les 2 listes du genre :
Formulaires!NomFormulaire!PremiereListe

Sur l'évènement Après Mis à Jour de la premiere liste, tu mets un
Me!SecondeListe.Requery

Tu ne masqueras pas les éléments de la 2nde liste mais tu ne chargeras
que ceux qui sont en relation avec la 1ere liste.



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 !



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

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


Bonjour Eric,

Il faut que la requête source de ta 2eme liste est un critere sur le
champ commun entre les 2 listes du genre :
Formulaires!NomFormulaire!PremiereListe

Sur l'évènement Après Mis à Jour de la premiere liste, tu mets un
Me!SecondeListe.Requery

Tu ne masqueras pas les éléments de la 2nde liste mais tu ne chargeras
que ceux qui sont en relation avec la 1ere liste.


Merci beaucoup pour cette info

--
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



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 !




Avatar
3stone
Salut Ayrton,

"Ayrton [ASC]"
| > Le "LostFocus" ne connait pas de 'cancel' ;-)
|
| Ah.....c'est une chose que je nesavais pas....


cette variable est indiquée comme argument de la sub ;-)
comme indiqué plus bas - on ne peut l'inventer...


| > 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....


bien lire ce que l'on indique ;-)

Private Sub NomDuCtrl_Exit(Cancel As Integer)

=>> la sub est donc "Exit" du contrôle en question ;-)
même si le nom de l'événement est traduit dans la
liste des propriétés.


| > 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......


et obligation de déclarer les variables !!!

Voir les options de l'éditeur VBA http://cjoint.com/?mDqUKHLsfq
Sinon, lorsque le code n'est pas exécuté, on embale une appli
avec des big-beugs...



| Passe de bonne fêtes ;-)
|

Itou ;-)


--
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 Ayrton,


Re Pierre,

bien lire ce que l'on indique ;-)

Private Sub NomDuCtrl_Exit(Cancel As Integer)

=>> la sub est donc "Exit" du contrôle en question ;-)
même si le nom de l'événement est traduit dans la
liste des propriétés.


Effectivement sur " Sortie ", ça marche impeccable ;-)
Par contre, je suis désolé mais je ne comprends pas ta première
ligne---------->La sub est donc "Exit " du controle ;-(
Dans laréalité ça fonctionne mais sincèrement je ne comprends pas
pourquoi......


et obligation de déclarer les variables !!!

Voir les options de l'éditeur VBA http://cjoint.com/?mDqUKHLsfq
Sinon, lorsque le code n'est pas exécuté, on embale une appli
avec des big-beugs...


Eh oui et je viens dev érifier, cette case n'était pas cochée ! !
Je viens de le faire à l'instant ; merci aussi pour ça ;-)

--
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
Forum Office :
http://forums.offices.free.fr/

Avatar
JièL
Bonjoir(c) 3stone

Le 29/12/2006 15:31 vous avez écrit ceci :
| 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 !


Ok, mais alors pas de création de nouvelle fiche, non ?

Le "exit" est ici mieux approprié.


Effectivement, j'avais une approche plus globale permettant de valider un
ensemble de saisie à la fin plutôt que de bloquer l'utilisateur sur un champ

Et le code pour le msgbox peut devenir :

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


merci pour le correctif

--
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,

"Ayrton [ASC]"
[...]
| Par contre, je suis désolé mais je ne comprends pas ta première
| ligne---------->La sub est donc "Exit " du controle ;-(


et en image ?

http://cjoint.com/?mDsTkipNnT



| Dans laréalité ça fonctionne mais sincèrement je ne comprends pas
| pourquoi......


Les événements qui peuvent être annulés possèdent la variable
"cancel" dans l'argument de leur Sub.

Par défaut, cette variable est à "False" et le fait de la basculer
à "True" annulle l'évenement.
Cela permet d'annuller ainsi des événements comme la mise à jour,
la sortie, la fermeture du formulaire etc.

Dans ton cas, ce n'est pas "après la sortie" que ce fait l'annulation,
mais bien lorsqu'il "veut sortir". Donc il y reste ;-)

HTH

--
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,


Re,

et en image ?

http://cjoint.com/?mDsTkipNnT


L'image en elle même ne m'avance pas mais les explications que tu
rajoutes m'oubrent les yeux ! ! ;-) Je vais être honnête, je ne faisais
jamais la rapprochement avec la variable mise entre parenthèse ;-(
Maintenant, eefectivement, je comprends....

Les événements qui peuvent être annulés possèdent la variable
"cancel" dans l'argument de leur Sub.

Par défaut, cette variable est à "False" et le fait de la basculer
à "True" annulle l'évenement.
Cela permet d'annuller ainsi des événements comme la mise à jour,
la sortie, la fermeture du formulaire etc.

Dans ton cas, ce n'est pas "après la sortie" que ce fait l'annulation,
mais bien lorsqu'il "veut sortir". Donc il y reste ;-)


Eh bien je finirais bien l'année car t um'as encore appris quelque chose
!!
Merci pour toutes ces explications 3stone ; avec ça, je commence à
comprendre le pourquoi du comment ! ! ;-)
Et j'espère bien m'en souvenir pour être plus à l'aise la prochaine fois
!

Encore merci

--
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
Forum Office :
http://forums.offices.free.fr/

1 2