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

IHM Discussion :

Ouvrir formulaire sous condition [AC-2013]


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 396
    Points : 127
    Points
    127
    Par défaut Ouvrir formulaire sous condition
    Bonsoir,
    J'ai créé une base "nombre" ou je rentre des numéros de colis.
    J'ai créé un formulaire ou je scanne des numéros de colis dans un champ [txtNuméroduColis] qui s'enregistre dans une autre base "reception".
    Je voudrais qu'un formulaire "alerte" s'ouvre automatiquement si le numéro que j'ai scanné dans le champ [txtNuméroduColis] table "reception" soit le même que le numéro de colis dans la base "nombre".
    Je pensais créer un code VBA avec un événement sur clic en utilisant la condition if.
    Malheureusement je sais pas aller plus loin.
    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Bonjour,

    Tu peux utiliser un l'évènement avant MAJ (before update) de la zone texte plutôt que l'évènement sur clic.

    ça permet de lancer ta vérification avant que la valeur soit écrite dans la table et de l'annuler ou non.

    Dans le code suivant on utilise le dlookup() pour rechercher un enregistrement qui contient déjà la valeur saisie dans la zone de texte "moncode". Si c'est le cas la fonction renvoi l'id (que toute table normalement constituée doit posséder) et pas Null.
    On affiche le message "existe" et on annule l'enregistrement (cancel = true).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Not IsNull(DLookup("[id]", "[table1]", "[moncode]=""" & Me.moncode.Text & """")) Then
       MsgBox "existe"
       Cancel = True
    End If
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 396
    Points : 127
    Points
    127
    Par défaut
    Bonjour,
    j'ai ce message d'erreur

    Nom : Capture.JPG
Affichages : 88
Taille : 33,4 Ko

    voilà mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub txtNuméroduColis_BeforeUpdate(Cancel As Integer)
    If Not IsNull(DLookup("[numerodecolis]", "[shipment]", "[Texte0]=""" & Me.Texte0.Text & """")) Then
       DoCmd.OpenForm "f_alerte"
       Cancel = True
    End If
    End Sub
    [numerodecolis] est l'id de ma table shipment
    [shipment] est la table ou il y a les n° de colis
    [Texte0] est le nom de me champ dans le formulaire ou j'enregistre les numéros de colis
    "f_alerte" est le formulaire qui m'affiche le message d'alerte.
    Pourquoi (cancel = true) on annule l'enregistrement ?
    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Bonjour,

    quand tu tapes :

    Une liste apparait, est-ce que Texte0 y est ?

    Cancel = true permet d'annuler l'enregistrement de la valeur, tu n'es pas obligé de l'utiliser. Si tu ne fais rien il enregistre. Tout dépend du fonctionnement que tu désires.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    [Texte0] est le nom de me champ dans le formulaire ou j'enregistre les numéros de colis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsNull(DLookup("[numerodecolis]", "[shipment]", "[Texte0]=""" & Me.Texte0.Text & """")) Then
    tu ne peux pas utiliser un contrôle du formulaire, il faut que cela soit un champ de la table shipment
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 396
    Points : 127
    Points
    127
    Par défaut
    Non Texte0 n'apparait pas

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 396
    Points : 127
    Points
    127
    Par défaut
    Voilà mon code avec toujours le même message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub txtNuméroduColis_BeforeUpdate(Cancel As Integer)
    If Not IsNull(DLookup("[idnum]", "[shipment]", "[numerodecolis]=""" & Me.numerodecolis.Text & """")) Then
       DoCmd.OpenForm "f_alerte"
       End If
    End Sub
    numerodecolis est mon champ dans la table shipment

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    oui mais là, il faut mettre le champ du formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsNull(DLookup("[idnum]", "[shipment]", "[numerodecolis]=""" & Me.numerodecolis.Text & """")) Then
    et selon moi, ce devrait être Me.txtNuméroduColis (et .Text n'est pas utile)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 396
    Points : 127
    Points
    127
    Par défaut
    Cà marche le code fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub txtNuméroduColis_BeforeUpdate(Cancel As Integer)
    If Not IsNull(DLookup("[idnum]", "shipment", "[numerodecolis]=""" & Me.txtNuméroduColis & """")) Then
       DoCmd.OpenForm "f_alerte"
       End If
    End Sub
    Merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/12/2008, 11h20
  2. Valider un formulaire sous condition
    Par dreeve dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2007, 00h15
  3. Submit d'un formulaire sous condition
    Par BnA dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/02/2007, 14h23
  4. source de formulaire sous conditions
    Par delg dans le forum Access
    Réponses: 2
    Dernier message: 22/09/2006, 11h46
  5. Pb Ouverture de formulaire sous condition.
    Par Phl98 dans le forum Access
    Réponses: 8
    Dernier message: 03/11/2005, 22h28

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