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

  1. #1
    Nouveau membre du Club
    Comment avoir différente marque et quantité à partir de la référence sélectionnée dans une liste déroulante ?
    Bonjour,

    Je débute sur Access depuis peu et j'essaie de concevoir une application dont une partie permettra de gérer les entrées en stock.

    Sauf que je galère depuis un moment , et j'ai vraiment besoin de votre aide.

    Dans un premier temps j'ai voulu afficher la marque du produit et sa quantité à partir de la référence sélectionnée dans une liste déroulante.

    (Je précise que la table entree est reliée aux tables produit et fournisseur formant des relations plusieurs à plusieurs.

    Donc les propriétés de la table entree sont: idprod , idfour , qte, date.)

    Et pour se faire, j'ai executé le code vba ci-dessous qui marche très bien mais le souci c'est qu'il ne me donne pas le résultat souhaité.

    Lorsqu'on sélectionne une référence dans la première ligne par exemple,

    la même marque de produit ainsi que sa quantité sont répétés dans les autres lignes.

    Alors le truc ici c'est comment faire pour obtenir différente marque et quantité à partir

    de la référence sélectionnée dans une liste déroulante pour chaque ligne du formulaire.

    Quelqu'un pourrait il m'aidez svp.

    Merci d'avance !

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     Private Sub list_ref_Change()
     
    Dim enrg As Recordset: Dim base As Database
    Set base = Application.CurrentDb
    Set enrg = base.OpenRecordset("SELECT marque, qteprod FROM produit WHERE idprod=" & list_ref & ";", dbOpenDynaset)
    qteapp.Value = 0: qteac.Value = 0
     
    enrg.MoveFirst
    marque.Value = enrg.Fields("marque").Value
    qteac.Value = enrg.Fields("qteprod").Value
     
    qteapp.SetFocus
     
    enrg.Clone
    base.Close
     
    Set enrg = Nothing
    Set base = Nothing
     
    End sub

  2. #2
    Modérateur

    Bonjour.

    La répétition vient du fait qu'en Access il ne semble n'y avoir qu'un seul "enregistrement" affiché pour les champs indépendants et qu'il est recopié sur toute la liste.
    Donc une modif sur une ligne, se répercute sur TOUTES les autres lignes. C'est assez frustrant.

    La solution est de déplacer l'affichage dans la source de données en utilisant une jointure (solution la plus efficace) ou la fonction Dfirst().
    Donc il faut que tu ajoutes les champs nécessaires à ce qui alimente ton formulaire.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau membre du Club
    Bonjour Marot,

    désolée mon retard, j'ai rencontré des soucis techniques avec mon ordinateur quelques jours après le poste, d'ou la cause de mon silence. Je te remercie pour la solution, elle est très pratique , j'ai donc réussi à créer mon formulaire.

    Mais j'aimerai savoir autre chose, tel que le formulaire est conçu, est ce possible de créer un bouton personnalisé qui affiche par exemple un message de validation au clic, donc dès enregistrement d'informations et reset celles-ci du sous-formulaire ? si, comment je pourrai procéder ?

    Merci d'avance !

  4. #4
    Modérateur

    Bonjour.

    Si ton bouton est sur le formulaire en continu, il fait parti des éléments "indépendants" recopiés sur tous les enregistrements donc si tu changes le texte (prorpiété Légende (Caption en Anglais)) il va se répéter.

    Si ton bouton est sur ton formulaire principal, oui c'est assez simple avec un peu de code VBA qui va changer Caption.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Modérateur

    Bonjour.

    J'ai créé la discussion https://www.developpez.net/forums/d1...nregistrement/ pour donner plus de visibilité à ta dernière question.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.