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

VBA Access Discussion :

comment mettre à jours un champs table depuis une liste déroulante?


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut comment mettre à jours un champs table depuis une liste déroulante?
    Bonjour,
    J'essais d'apprendre les manipulation sur Access.
    et j'ai des tables:
    Articles (NumArticle[clé P], NomArticle, RubriqueArticle)
    Entrees(NumEntree[clé P], NumArticle, NomArticle, DateEntree, QuantiteEntree)

    aussi:
    un formulaire, ou il y a une liste déroulante (ma_liste) alimentée par la table "Articles" et qui mets à jours le champs "Entrees.NomArticle".
    Je souhaite qu'elle mets aussi à jours "Entrees.NumArticle" par la valeur de la "colonne 0" (qui contient les numéros d'articles) de la liste déroulante si haut.

    J'ai essayer avec VBA:
    Dans l'évènement "Après Mise à Jours":
    Entrees.NumArticle = ma_liste.Column(0)

    mais je n'aboutis pas à la solution satisfaisante, malgré que j'ai essayé de suivre les solutions suite à une recherche sur Google.
    merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Il ne faut pas mettre le nom de l'article dans la table des entrées.

    Entrees(NumEntree[clé P], NumArticle, DateEntree, QuantiteEntree)

    Dans une base de données relationnelle, on s'efforce autant que ce peut, de ne pas dupliquer l'information.
    Là le nom il est dans la table des articles, pas la peine de le mettre aussi dans celle des entrées.

    Pour faire afficher le nom, car reconnaissons que c'est plus parlant :-), tu peux :
    1. Faire une jointure entre Entrees et Arcticles sur NumArticle et aller "pécher" le nom dans Articles.
    2. Utiliser une liste déroulante, basée sur Artciles qui en utilisant seulement NumArticle t'affichera le nom.
      Note que je recommande cette solution SEULEMENT pour les formulaires et les rapports, au niveau de la table il est prudent de laisser NumArticle visible car c'est la vraie données.
      La liste déroulante n'est qu'un artifice d'affichage.


    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
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    En plus de ce que marot_r t'a déjà dit et qui est fondamentale, je vais m'interressre à çà
    Je souhaite qu'elle mets aussi à jours "Entrees.NumArticle" par la valeur de la "colonne 0" (qui contient les numéros d'articles) de la liste déroulante si haut.

    J'ai essayer avec VBA:
    Dans l'évènement "Après Mise à Jours":
    Entrees.NumArticle = ma_liste.Column(0)
    Si tu souhaites faire la mise à jour avec le VBA, tu écris ta requête qui prend pour critère la valeur de la liste déroulante. En VBA çà sera donc un truc comme çà
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ma_liste_Change()
    Dim rq As String
    'une petite requête de mise à jour
    rq = "update Entrees set NumArticle= " & Me.ma_liste.Column(0) & " Where(NomArticle= " & Me.ma_liste.Column(1) & ")"
    'exécution de la requête
    CurrentDb.Execute rq
    End Sub
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  4. #4
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 420
    Points : 2 179
    Points
    2 179
    Par défaut
    Bonjour,

    il sufi ouvrir la table Entrees en mode création, et dans le champ NumArticle définir la requête dans l'onglet liste de choix!


    Nom : image_2021-04-12_190907.png
Affichages : 102
Taille : 39,4 Ko

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Citation Envoyé par Thumb down
    ll suffit ouvrir la table Entrees en mode création, et dans le champ NumArticle définir la requête dans l'onglet liste de choix!
    En fait ce qui paraît une bonne idée est en réalité une source de problème car si on la met en place maintenant quand on regarde la table directement, on ne voit plus la valeur réelle contenue (ex : 1234) dans le champ mais le texte associé (ex : Produit ABC) or quand on fait des requêtes on a besoin de cette vraie valeur et quand on fait du débogage aussi.

    Donc dans les tables utiliser des liste déroulantes n'est pas une si bonne idée que cela. Les listes déroulantes qui sont des éléments d'interface devraient, selon moi, être réservées aux formulaires et aux rapports.

    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.

Discussions similaires

  1. [AC-2013] Mettre à jour un sous formulaire via une liste déroulante
    Par ROUSSIGNE dans le forum IHM
    Réponses: 3
    Dernier message: 30/01/2017, 15h25
  2. Réponses: 7
    Dernier message: 11/05/2010, 16h37
  3. Réponses: 1
    Dernier message: 10/02/2010, 13h38
  4. Comment mettre à jour un champ BLOB avec une TIBQUERY ?
    Par colorid dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/02/2008, 19h00
  5. Comment mettre à jour 1 champ d'une table via une autre tabl
    Par cpasmoibiensur dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/02/2006, 13h33

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