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 :

Remplissage auto d'un champ à partir d'un choix d'une liste déroulante et d'une autre table [AC-2013]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Points : 18
    Points
    18
    Par défaut Remplissage auto d'un champ à partir d'un choix d'une liste déroulante et d'une autre table
    Bonjour,
    J'ai déjà vu des gens trouver des solutions à leurs problèmes offices par ici donc je viens tenter ma chance =).

    Donc voila, je me lance sur un projet sur Access 2013 (que je ne connais pas du tout), et je suis bloqué sur quelque chose qui, à mon avis doit être assez simple, mais que je n'arrive pas à mettre en place.

    J'ai 7 tables différentes, reliées entre elles par des relations.
    Sur ma première table 'Données', j'ai (entre autre) les champs :
    -'donnees_nom' (qui est aussi la clé unique)
    -'donnees_prix'
    -'donnees_cle'

    J'ai ensuite une deuxième table pour répertorier les achats 'achats' avec de nouveau (entre autre) les champs :
    -'achats_nom'
    -'achats_prix'
    -'achats-cle'

    Entre les deux table j'ai un relation qui lie 'donnees_nom' à 'achats_nom' et qui me permet de choisir mon achat parmi une liste déroulante.

    Maintenant je voudrais que ce choix de 'achats_nom' permette de remplir automatiquement 'achats_prix' et 'achats_cle' avec les informations correspondantes à 'donnees_prix' et 'donnees_cle' pour chaque achat.

    Est ce que quelqu'un aurait une idée de comment procéder?

    (Je voudrais développer ça car j'achète souvent une même liste de produits, en différentes quantités et dont le prix évolue facilement. Ce logiciel Access me permettrait de simplifier ma gestion).

    PS : Si le prix change dans donnée, il ne faut pas que les articles déjà achetés dans le passé voient aussi leurs prix changer :/.

    J'espère que j'ai été assez clair et qu'une âme charitable, chevalier d'office pourra me venir en aide.

    Merci,
    Juriaan.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Il n'est pas évident d'expliquer le principe en quelques mots. A titre d'illustration sur ce que tu veux faire, je joins une base exemple qui traite de commandes de produits. Cela te permettra de comprendre le remplissage de table à partir d'une liste déroulante.
    A ce stade, effectivement le prix de chaque commande (ou achats) va changer dès qu'on change le prix du produit.
    Pour y remédier, il faut voir ce que tu veux exactement :
    1- Enregistrer le prix de l'achat au moment de l'opération et pas besoin de garder l'historique des prix de données.
    ou
    2- Avoir une historique des prix des données et pouvoir de ce fait consulter les achats selon les prix antérieurs. Ce cas est assez complexe.

    Donc à toi de voir quels sont tes besoins et on peut voir comment t'aider.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Merci pour la réponde très rapide.

    J'ai réussi à faire l'équivalent de cette base de donnée en utilisant une requête, mais effectivement mon problème est que lorsque le prix change dans la table 'Données' cela change tous les prix déjà rentrés dans la table 'Achats'.

    Par exemple je souhaite acheter un produit particulier (une chaise admettons).
    Je rempli une première fois la table 'Données' avec notamment le prix (15€) et la clé (un % de réduction, 30%).
    Ces données restent constantes pour quelques mois, je peux donc effectuer plusieurs achats et les répertorier dans la table 'Achats':
    Achat 1 : 2 chaises
    Achat 2 : 4 chaises => total = (1-0.3)*(2+4)*15 = 63€

    Puis après quelques mois le fournisseur change le prix des chaises (20€) ainsi que le % de réduction (35%), je veux pouvoir changer ces valeurs dans la table 'Données' sans que cela affecte "Achat 1' et 'Achat 2', et pouvoir continuer à compléter la table 'Achats' avec les nouvelles valeurs :
    Achat 3 : 3 chaises => total = (1-0.35)*(3)*20 = 39€

    Afin de pouvoir au final avoir un calcul réel des dépenses (pas besoin donc de garder un historique des prix des données ouf ^^).
    => total = 63+39 = 102€ (et non (1-0.35)*(2+4+3)*20 soit 117€ calculé avec les dernières valeurs)

    Ce que je pensais faire (et je pensais que c'était très simple :/) était de changer les valeurs par défaut de 'achats_prix' et 'achats_cle' pour qu'ils correspondent aux valeurs dans la table 'Données' en fonction du choix de la liste déroulante 'achats_nom'...

    C'est ici que je bloque.

    Voila globalement ce que j'ai à l'heure actuelle (j'ai supprimer la version précédente où un changement des données changeait aussi tout les achats déjà effectués) :

    Données-Achats.rar

    J'espère avoir bien présenté mon problème,
    encore merci pour votre aide.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Donc,

    A priori la structure utilisée actuelle est suffisante. Il faut pouvoir mettre à jour la valeur du prix d'achat à chaque modification du produit acheté.
    Donc :
    1- Il faut modifier la source de la liste déroulante "achats_nom" par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Données.donnees_nom, Données.donnees_cle, Round([donnees_prix]*(1-[donnees_cle]),2) AS PrixAchat
    FROM Données ORDER BY Données.donnees_nom;
    En fait calculer directement dans la source le prix du produit.
    2- Modifier le nombre de colonnes de la liste à 3.
    3- Ensuite mettre à jour le champ "achats_prix" sur l'évènement AprèsMisàjour du champ "achats_nom" avec le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub achats_nom_AfterUpdate()
    Me.achats_prix = Me.achats_nom.Column(2)
    End Sub
    Le même système avec l'utilisation du méthode Column (avec ) devrait te permettre de récupérer aussi la valeur de la remise si t'as besoin.
    La base modifiée est jointe.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Désolé de revenir aussi tard, j'ai été assez occupé avec d'autres projets plus pressant, dur de trouver du temps en ce moment ^^.

    J'ai pu tester ce code hier, c'est exactement ce que je voulais merci =).

    Je l'ai même adapté à ma sauce pour effectuer un remplissage auto d'autre cellule en fonction de certain termes en utilisant un If "" Then Me."" = Me.""

    Donc merci beaucoup pour votre aide, maintenant Access me semble un tout petit peu plus accessible xD.

  6. #6
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 91
    Points : 89
    Points
    89
    Par défaut
    Merci beaucoup madefemere, avant que j'ai trouver ta réponse, je travaillais avec un code vba et les recordsets etc pour ne pallier a ce probleme

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/11/2014, 08h18
  2. Remplir un champs TEXT caché avec une fonction on change sur une liste déroulante
    Par tang le breton dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/11/2009, 11h04
  3. [AJAX] Remplissage automatique d'un champ à partir d'un évênement
    Par joss91 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/01/2008, 18h10
  4. Réponses: 1
    Dernier message: 20/03/2007, 09h24
  5. Réponses: 13
    Dernier message: 23/06/2006, 12h12

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