IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Condition macro non respectée


Sujet :

Access

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut Condition macro non respectée
    Je dispose d'Access 97. J'ai une table avec une 15aine de champs. J'ai aussi un formulaire basé sur cette table. Pour la plupart de mes champs, j'ai raccroché une macro dans les propriétés de chaqun d'entre eux, dans la propriété OnExit. Il y a une macro pour chaque champs. A l'intérieur de chaque macro, j'ai :
    Condition|Action
    "" |MsgBox

    Message --> Vous devez entrer le nom d'un demandeur
    Beep --> Yes
    Type --> Warning!
    Title --> Erreur d'oubli

    La seule chose qui différencie chque macro est la contenu du message d'erreur.
    Mais là où le problème ce pose, c'est qu'avec cette condition (""), je pensais alors que le message d'erreur ne s'afficherait seulement si on sort du champ sans avoir rien écrit. Eh bien non! ça s'affiche meme si j'écris quelque chose!
    C'est pour cela que j'envoie ce message, quelle condition écrire pour que le message d'erreur ne s'affiche uniquement si l'on part d'un champs qui est vide.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    Ta condition doit tester le fait que le champ soit vide. Or ce n'est pas écrit...
    Là ta condition est vide : y en a pas... (ou alors c'est pas compris..)

    Exemple de test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If isNull(Me.NomChamp) then
        MsgBox "Vous devez saisir un nom"
    End if

  3. #3
    Membre actif
    Avatar de GAGNON
    Inscrit en
    Septembre 2003
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 201
    Points : 201
    Points
    201
    Par défaut
    Salut

    Beaucoup de gens te conseilleront d'éviter les macros ...

    Tu peux alors pour chaque champs, utiliser par exemple l'évènement surChangement
    ce qui résoudra ton prb
    La pensée n'est qu'un éclair au milieu de la nuit. Mais c'est cet éclair qui est tout.
    Henri Poincaré

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    Merci kikof et GAGNON de m'avoir répondu.

    Je le teste tout desuite et je reviens pour vous dire ce qu'il en est.

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    Re.

    Mais où faut-il que j'écrive ton code kikof? peux tu préciser stp?

    Merci

  6. #6
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Tu as écrit
    dans la propriété OnExit
    Peut être dans la procédure évènementielle Sur Sortie du champ.

    Par contre ne serait-il pas plus simple de mettre la propriété "Null interdit" du champ de la table à oui ??? Access gérerait tout seul les champs obligatoires.. et tu auras un message qui te dira que e champ doit être renseigné...

  7. #7
    Membre actif
    Avatar de GAGNON
    Inscrit en
    Septembre 2003
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 201
    Points : 201
    Points
    201
    Par défaut
    kikof
    un message qui te dira que e champ doit être renseigné...
    en effet, mais ce msg sera préformaté et sans doute "inconfortable" pour l'utilisateur

    moi j'utiliserai un msgbox dans l'évènement surChangement qui tient compte justement du test égalité de la valeur sur la sortie du ctrl
    La pensée n'est qu'un éclair au milieu de la nuit. Mais c'est cet éclair qui est tout.
    Henri Poincaré

  8. #8
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Sur changement, ça ne marche pas vraiment...

  9. #9
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    bonjour à tous!!!

    Désolé de ne pas avoir répondu plus tot car je ne le pouvais pas. J'ai pu tester ce que vous m'avais dis, c'est-à-dire qu'il faut écrire le code suivant :

    If isNull(Me.NomChamp) then
    MsgBox "Vous devez saisir un nom"
    End if

    Code qui fonctionne (presque) parfaitement car même s'il m'affiche correctement le message voulu quand le champ est vide, cela n'empeche pas le formulaire de passer à un nouvel enregistrement. C'est pour cela que j'envoie ce message, est-ce possible de faire en sorte qu'il se produise la même chose mais que le formulaire garde l'enregistrement courant afin de ne pas oublier de rentrer une valeur dans le champs. Voilà. Si je me suis mal expliqué, ou que vous n'avez pas compris, n'hésitez pas à me demander des précisions.

    Merci d'avance.

  10. #10
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Il faut utiliser ce code sur l'évenement BeforeUpdate (avant mise à jour) du formulaire et le modifier de telle sorte que l'on ne mette pas à jour les données si le champ n'est pas renseigné

    If Nz(Me.NomChamp)="" then
    MsgBox "Vous devez saisir un nom"
    'Empeche la mise à jour
    Cancel=False
    End if

  11. #11
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    re bonjour a vous tous !!!

    Vos codes respectifs fonctionnent parfaitement, je vous en remercie.

    Mais le problème que je retrouve dans chacun d'entre vous, c'est que malgré le message d'avertissment qui s'affiche au moment souhaité, le formulaire passe à l'enregistrement suivant, et c'est la que ma question arrive : est-il possible de faire afficher le message d'avertissement de la même façon mais que l'on reste sur l'enregistrement courant, pour éviter des éventuels oublis, et pourquoi pas, de ne pas pouvoir passer à l'enregistrement suivant tant que le champs n'est pas rempli ?

    Merci d'avance pour vos réponses.

  12. #12
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,
    Mets True au lieu de False

  13. #13
    Débutant
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 167
    Points : 39
    Points
    39
    Par défaut
    Merci beaucoup Kikof !!!!

    Grâce à toi et les autres, vous avez résolus mon problème !!!

    Encore merci à tous!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Condition non respecté dans listbox
    Par tompom3108 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/07/2012, 23h18
  2. Réponses: 11
    Dernier message: 07/12/2011, 07h11
  3. Condition de case non respectée
    Par Erakis dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/11/2009, 18h24
  4. [Tableaux] Conditions d'une boucle non respectée
    Par Lenezir dans le forum Langage
    Réponses: 2
    Dernier message: 05/03/2008, 09h17
  5. macro non respectée sous access et excel
    Par pascal913 dans le forum Access
    Réponses: 6
    Dernier message: 17/07/2006, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo