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 :

Incohérence dans les valeurs d'un champ entre un formulaire et une table


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur INSA Lyon
    Inscrit en
    Janvier 2021
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur INSA Lyon
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2021
    Messages : 95
    Points : 60
    Points
    60
    Par défaut Incohérence dans les valeurs d'un champ entre un formulaire et une table
    Bonjour

    J'ai une base de données scindée en 2 fichiers.

    Dans le formulaire principal de ma base, j'ai voulu enrichir la liste de valeurs proposées en intervenant directement dans l'un des contrôles (dans Données / Contenu). J'ai ainsi ajouté 3 ou 4 valeurs qui n'étaient pas présentes.

    Or, désormais, quand je veux directement rajouter des données dans la table en mode "feuille de données", je ne retrouve plus aucune des valeurs de ma liste pour ce champ précis.

    J'ai dû m'y prendre comme un manche mais je ne sais pas trop pourquoi...

    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.

    j'ai voulu enrichir la liste de valeurs proposées en intervenant directement dans l'un des contrôles (dans Données / Contenu).
    Quel type de contrôle ? Liste déroulante ? Champ multi-valeur ? Liste ?

    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
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je suppose que tu parles d'une combobox (contrôle de liste déroulante). A part pour un choix de type "oui / non" (et encore, parce qu'en Belgique, bilinguisme oblige, je passe par une table), je conçois toujours les combobox sur base d'une table et jamais sur base d'une liste de valeurs "en dur"... Du coup, il n'y a jamais de problème lorsqu'il faut ajouter des données puisqu'il suffit de les ajouter dans une table sans devoir modifier la structure.

    Peux-tu préciser ton cas?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur INSA Lyon
    Inscrit en
    Janvier 2021
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur INSA Lyon
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2021
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    Oui, il s'agit bien d'une combo-box qui permet de choisir parmi une catégorie d'immeubles :

    Nom : image1.jpg
Affichages : 121
Taille : 19,1 Ko




    Ce contrôle pointe vers une table :

    Nom : image2.jpg
Affichages : 113
Taille : 82,3 Ko




    table dont les valeurs ont été stockées ici :

    Nom : image3.jpg
Affichages : 125
Taille : 161,2 Ko


    Quel est le meilleur moyen pour mettre à jour cette liste de catégories ? Je voudrais rajouter "patrimoine", "enseignement", etc.

    Merci pour votre aide.

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par ncharles Voir le message
    [...]
    Quel est le meilleur moyen pour mettre à jour cette liste de catégories ? Je voudrais rajouter "patrimoine", "enseignement", etc.[...]
    Les valeurs que tu montres devraient s'appuyer sur une table plutôt que sur une liste de valeurs. Ce serait 1000 fois plus simple à gérer et ne demanderait pas de modifier ta structure pour un simple ajout... De plus, tu pourrais jouer à fond sur les liaisons entre tables pour créer tes formulaires/sous-formulaires, états/sous-états, requêtes d'analyse, etc...

    Vois-tu comment procéder?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur INSA Lyon
    Inscrit en
    Janvier 2021
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur INSA Lyon
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2021
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    Non pas du tout... Si tu me l'expliquer en quelques lignes, je veux bien...

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Tu as 3 petits cochons solutions:
    1. La maison de paille: c'est ce que tu as fait jusqu'ici, à savoir mettre tes valeurs "en dur" dans la source du combobox;
    2. La maison de bois: tu crées une table monocolonne dans laquelle tu renseignes éléments de la liste et elle alimente le combobox;
    3. La maison de briques: tu crées la même table, mais tu ajoutes une clé primaire et tu "joins" les tables par une paire clé primaire/clé étrangère.



    La maison de paille

    Tu en as touché les limites. Il n'y a que des désavantages à pratiquer ainsi. La seule liste que je peux accepter ainsi serait la liste "OUI/NON" et encore. Comme déjà dit, en Belgique, on doit parfois développer en bilingue, voire en multilingue, et les textes en dur dans la structure de la base posent évidemment des problèmes dans ce cas. De plus, si la liste est utilisée à plusieurs endroits, il faudra modifier la liste partout où elle est utilisée. A abandonner à tout jamais!

    La maison de bois:

    Une table TypesBiens qui reprend simplement les valeurs saisies auparavant manuellement dans la liste. Dans la table des biens, on crée une liste déroulante qui s'appuie sur cette table en triant les données par ordre croissant.

    Avantage: Si tu ajoutes une donnée dans la table des types de biens, elle sera disponible dans toutes les combobox qui s'appuient dessus. C'est l'avantage de passer par une table car tu ne dois plus modifier la structure de ta base. Il suffit de compléter la liste au fur et à mesure que tu ajoutes des types de biens, et la requête illustrée ci-dessous te les présente par ordre croissant.

    Inconvénient: Si tu modifies un libellé dans la table des types de biens, cette modification n'impacte pas la table des biens (image du bas dans le triptyque ci-dessous. Ca va donc compliquer tes regroupements et donc tes analyses.

    Nom : 2021-06-04_172917.png
Affichages : 122
Taille : 102,4 Ko


    La maison de briques:

    Avec la maison de briques, tu fais de la vraie "base de données relationnelle" et c'est pour moi le seul modèle valable:
    • Dans la table des types de biens, tu places une clé primaire autoincrémentée (entier long);
    • Dans la table des biens, tu places une clé étrangère qui pointera vers la clé primaire de la table des types de biens;
    • Idéalement, tu places l'intégrité référentielle pour assurer que les paires clé primaire / clé étrangère sont toujours valides;
    • La requête qui alimente la liste dans la table des biens est modifiée pour récupérer la clé primaire (colonne liée = 1) et pour trier sur les libellés. Pour masquer la clé primaire à la saisie, on donne une largeur de 0 à la première colonne;
    • Pour l'utilisateur, la mécanique est transparente, mais tu stockes en fait "le numéro" du type du bien dans la table des biens;
    • De ce fait, si tu modifies un libellé, la clé numérique restant inchangée, le nouveau libellé apparait partout.



    Avantages:
    • Tu modifies les libellés facilement;
    • Les indexations et les filtres sont très rapides;
    • Ta base est plus légère car les clés prennent 4 octets là où la répétition de clés alphanumériques va faire grossir ta base;
    • Tu peux créer facilement des jeux de formulaires/sous-formulaires;
    • ...


    Inconvénients: Pour moi il n'y en a pas. Avec un peu de pratique, ça devient un réflexe de "penser relationnel" et de "mettre en place le relationnel". Il faut juste penser que dans le champ TypeBienFK, c'est la valeur de la clé numérique qui est stockée, et donc en cas d'export vers Excel par exemple, il faut prévoir une requête qui unit les deux tables pour récupérer le libellé. Dans Excel, cela peut se faire avec Power Query qui "travaille en relationnel".

    Nom : 2021-06-04_175025.png
Affichages : 113
Taille : 154,8 Ko



    Remarque: D'autres te proposeront une solution entre le bois et la brique, à savoir créer les paires clé primaire / clé étrangère sur le libellé. Ca résout le problème de la modification du libellé modifié. Je suis farouchement contre cette pratique. D'abord parce qu'elle ne permet pas une approche systématique de la modélisation des données (le comble en informatique!) puisque tu devras tout le temps vérifier les types et longueurs de tes clés pour les apparier alors qu'en choisissant des entiers longs, tu ne poses pas de questions, tu as une approche systématique et rigoureuse de la création des tes applications. Ensuite parce que sur de gros volumes, les performances pourraient se dégrader car il est plus coûteux en calcul de travailler avec des index alphanumériques qu'avec des entiers longs. Enfin parce qu'elle impose la mise à jours des clés en cascade lors de la modification d'un libellé, ce qui a également un coût.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre du Club
    Homme Profil pro
    Ingénieur INSA Lyon
    Inscrit en
    Janvier 2021
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur INSA Lyon
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2021
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    Merci pour la réponse très détaillée.
    Je vais essayer de mettre tout çà en œuvre sans me faire attraper par le méchant loup, et je te tiens au courant !

    Par contre, j'ai une question de débutant : j'ai environ 4000 biens déjà recensés. Que va-t-il se passer lorsque je vais appliquer cette modification, mon champ "type de bien" comprenant déjà des valeurs alphanumériques (immeuble, maison de ville, villa, etc.) ?

  9. #9
    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.

    As-tu 4000 type de biens différents ?

    Si oui, tu vas avoir des soucis avec la liste déroulante car elle sature aux alentours de 1000 valeurs, après elle devient simplement inutilisable même si elle ne plante pas l'appli.

    Sinon si ton nombre de types est raisonnable, tu peux avoir des milliers d'enregistrements utilisant ce type il n'y aura pas d'impact puisque la liste ce base sur la liste des types qui reste globalement constant pas sur les enregistrements qui s'en servent.

    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.

  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur INSA Lyon
    Inscrit en
    Janvier 2021
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur INSA Lyon
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2021
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    La liste déroulante n'est utilisée que pour sélectionner le type de bien, pas pour choisir un bien en particulier, donc pas de souci de ce côté-là.

  11. #11
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par ncharles Voir le message
    [...]
    Par contre, j'ai une question de débutant : j'ai environ 4000 biens déjà recensés. Que va-t-il se passer lorsque je vais appliquer cette modification, mon champ "type de bien" comprenant déjà des valeurs alphanumériques (immeuble, maison de ville, villa, etc.) ?
    Si tu as déjà renseigné le type de bien comme alphanumérique dans la table des biens, tu vas devoir adapter pour une clé externe numérique via une requête de mise à jour, en faisant correspondre les enregistrements sur le libellé du type de bien. Il faut que les libellés soient les mêmes des deux côtés.

    Peux-tu redonner une image des deux tables telles que modifiées?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Membre du Club
    Homme Profil pro
    Ingénieur INSA Lyon
    Inscrit en
    Janvier 2021
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur INSA Lyon
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2021
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    Voici la table (évolutive) qui contient les types d'immeuble :

    Nom : Capture d’écran 2021-06-10 111841.jpg
Affichages : 84
Taille : 23,5 Ko


    et la table des immeubles avec le type toujours désigné sous une forme alphanumérique :


    Nom : Capture d’écran 2021-06-10 112007.jpg
Affichages : 85
Taille : 164,5 Ko



    Des suggestions pour la requête de mise à jour ? Merci encore pour ce coup de main.

  13. #13
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Voici la requête

    Nom : 2021-06-10_113441.png
Affichages : 79
Taille : 14,0 Ko

    La table t_immeubles avant et après. L'enregistrement encadré n'est pas mis à jour car la correspondance n'a pas été trouvée (problème d'espaces)

    Nom : 2021-06-10_113818.png
Affichages : 98
Taille : 10,6 Ko

    Nom : 2021-06-10_113838.png
Affichages : 104
Taille : 14,6 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Membre du Club
    Homme Profil pro
    Ingénieur INSA Lyon
    Inscrit en
    Janvier 2021
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur INSA Lyon
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2021
    Messages : 95
    Points : 60
    Points
    60
    Par défaut
    Bon, ça y est, je suis chaud. Trêve de procrastination ; je me décide enfin à réaliser cette modification de ma base !

    Souci, Access me dit que je suis dans une "table liée" et qu'il faut que je travaille dans la base de données source. Le problème vient-il du fait que ma base est fractionnée ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/12/2019, 08h49
  2. [AC-2016] Calculer la différence d'un même champ entre 2 lignes d'une table
    Par Tazzou dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/12/2017, 10h37
  3. Réponses: 7
    Dernier message: 31/05/2014, 18h35
  4. Réponses: 2
    Dernier message: 14/07/2009, 08h45
  5. Valeur d'un champ à partir de celui d'une table de référence
    Par rns2008 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 26/05/2008, 23h19

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