Access

Résolu
bonjour a tous
j ai crée une table access toute simple avec nom prenom cp ville
j ai cree une requete pour avoir tous les cp en liste de choix.. ok
je voudrais que mon champ ville marque automatiquement la ville en fonction de l'entree du code postal...
comment faire?
merci a tous
Configuration: Windows XP
Firefox 2.0.0.6

27 réponses

Résumé de la discussion

Afficher automatiquement la ville à partir du code postal dans une table Access requiert une relation ou une logique de lookup lorsque l'utilisateur choisit CP. Plusieurs réponses indiquent qu'Access ne peut pas déterminer automatiquement la ville après la saisie du CP et proposent l'ouverture d'un formulaire ou l'usage d'une macro pour sélectionner puis fermer la fenêtre. Des alternatives incluent une liste déroulante affichant CP et nom de ville, ou la création d'une liaison entre les tables Client et Ville via une clé étrangère IDVille, afin d'utiliser une requête de jointure. En pratique, la solution repose sur l'utilisation d'une table Ville avec CP et NomVille, puis sur une requête de jointure et un champ Lookup lié à IDVille, apportant une précision nouvelle.

Bobot (l’IA à votre service)
  1. j'ai renconteree le meme probleme , et il m'affiche le message :la définition du champ "Id" non valide dans la défition de l'index ou la relation, et merci d'avance j'ai essaye de suivre les étapes mais ce message m'empeche d'avancer
    0
    1. ouf!!!!!!!!!!!
      merci PereDeNuit...
      ca y est ca fonctionne...
      un grand merci pour la patience et les explications claires!!!!!
      merci... merci... merci... merci...

      au plaisir d'un prochain probleme....rire
      gil
      0
      1. ne prends pas en consideration l'étape (Par PèreDeNuit, le mercredi 3 octobre 2007 à 08h03:12) car je veux le rectifier.

        maintenet reprenant vraiment cet etape:
        (((((
        maintenant tu dois creer une requette entre tes tables (Client et Ville)
        Requete /Nouveau/Mode Creation/Ok
        Ajout des Tables, utilise les champs (CodeClient,Nom, Prenom,IDVille) ceux de tables Client ET le champ (NomVille) celui de table Ville

        peut etre tu te trompes ici,

        ***Assure toi que tu es en <Mode Creation> et pas en mode SQL. pour le faire: Affichage/Mode Creation

        -Selectionne le champ IDVille (où c'est marqué Field,Table Sort, show,Criteria .....) ( où c'est marqué Champs, Table, Tri, Affichers Ou...)
        -clique droite sur la souris/Properties/Lookup (Liste de choix)
        Display Contro: Combo Box (Zone de liste déroulante)
        Row Source Type: Table/Query
        Row Source (Contenu): SELECT Ville.CP, Ville.NomVille, Ville.IDVille FROM Ville ORDER BY Ville.CP;
        NB: Tu ne dois pas modifier les emplacements des champs dans ta requette
        Bound Column (Colonne liée): 3
        Column Count: 2
        Column Heads:
        Column Widths: 0.5";5"
        List Rows:
        List Width:
        Limit To List: Yes

        puis souvegarde ta requette sous le nom RqVille.
        )))))))

        Courage gile83 et excuse moi pour l'erreur de l'etape precedant
        0
        1. reprenant cet etape:
          (((((
          maintenant tu dois creer une requette entre tes tables (Client et Ville)
          Requete /Nouveau/Mode Creation/Ok
          Ajout des Tables, utilise les champs (CodeClient,Nom, Prenom,IDVille) ceux de tables Client ET le champ (NomVille) celui de table Ville

          peut etre tu te trompes ici,
          ***Tu ne dois pas modifier les emplacements des champs c.à.d. CodeClient est le 1er champ dans ta requette, Nom est le 2ème, IDVille est le 3ème, NomVille est le 4ème.

          ***Assure toi que tu es en <Mode Creation> et pas en mode SQL. pour le faire: Affichage/Mode Creation
          **** continue ca doit marchee......

          -Selectionne le champ IDVille (où c'est marqué Field,Table Sort, show,Criteria .....) ( où c'est marqué Champs, Table, Tri, Affichers Ou...)
          -clique droite sur la souris/Properties/Lookup (Liste de choix)
          Display Contro: Combo Box (Zone de liste déroulante)
          Row Source Type: Table/Query
          Row Source (Contenu): SELECT Ville.CP, Ville.NomVille, Ville.IDVille FROM Ville ORDER BY Ville.CP;
          Bound Column (Colonne liée): 3
          Column Count: 2
          Column Heads:
          Column Widths: 0.5";5"
          List Rows:
          List Width:
          Limit To List: Yes

          puis souvegarde ta requette sous le nom RqVille.
          )))))))

          Courage gile83
          0
          1. hello pere de nuit...

            genial pour la construction et les relations
            mais j ai encore un soucis avec la requete
            ma liste deroulante de id_ville n affiche rien malgre avoir repris ton sql a la lettre...????????????
            mais j ai deja fait un grand pas grace a toi

            a bientot
            0
            1. Bon, cette solution, je l'ai testé. et ca marche, Applique la telle q'elle est.

              1- table < Client(CodeClient, Nom, Prenom, IDVille) avec la clef primaire CodeClient>

              Type de donnée de CodeClient est Text
              DataType de Nom est Text
              DataType de Prenom est Text
              DataType de IDVille est Number-Long Integer c.à.d Numérique-Entier Long

              2- table < Ville(IDVille, CP, NomVille) avec la clef primaire IDVille

              Type de donnée de IDVille est AutoNumber
              Type de donnée de CP est Text
              DataType de NomVille est Text

              une fois tu a terminé, tu dois creer une relation entre ces deux tableaux:
              Outils/Relation
              Relation/Affiche la table
              faire ajouter les deux tables, et cree une relation entre les deux tables (clique sur le <IDVille du table Ville> reste appuyer et passe ta

              souris sur le <IDVille de client>, coche (Applique integrite referencielle) et coche (mettre a jour en cascade les champs correspondants),

              clique sur le bouton creer.

              maintenant tu dois creer une requette entre tes tables (Client et Ville)
              Requete /Nouveau/Mode Creation/Ok
              Ajout des Tables, utilise les champs (CodeClient,Nom, Prenom,IDVille) ceux de tables Client ET le champ (NomVille) celui de table Ville

              Attention Maintenant c'estl'astuce (pour selectionner le CP par une liste deroulente )faire:
              -Selectionne le champ IDVille (où c'est marqué Field,Table Sort, show,Criteria .....)
              -clique droite sur la souris/Properties/Lookup (Liste de choix)
              Display Contro: Combo Box (Zone de liste déroulante)
              Row Source Type: Table/Query
              Row Source (Contenu): SELECT Ville.CP, Ville.NomVille, Ville.IDVille FROM Ville ORDER BY Ville.CP;
              Bound Column (Colonne liée): 3
              Column Count: 2
              Column Heads:
              Column Widths: 0.5";5"
              List Rows:
              List Width:
              Limit To List: Yes

              puis souvegarde ta requette sous le nom RqVille.

              d'abord, tu dois remplir le table Ville (ex: 75000 paris, 57000 Metz, ....)
              IDVille CP NomVille
              1 57000 Metz
              2 75000 Paris
              3 75000 Paris 1
              4 75000 Paris2
              6 54000 Nancy

              puis pour remplir les different clients, tu devrais utiliser la requette déjà construit par toi <RqVille>
              ex:
              CodeClient Nom Prenom IDVille NomVille
              C3 Nom3 P 75000 Paris
              C1 Nom1 P1 75000 Paris 1
              CC NomC P 75000 Paris 1
              C2 Nom2 P2 75000 Paris2
              C4 Nom4 P4 54000 Nancy
              C5 Nom5 P5 54000 Nancy


              maintenant, si tu veux bien regader le contenu de la table Client, tu trouveras
              CodeClient Nom Prenom IDVille
              C1 Nom1 P1 3
              C2 Nom2 P2 4
              C3 Nom3 P 2
              C4 Nom4 P4 6
              C5 Nom5 P5 6
              CC NomC C 3

              Courage
              0
              1. Dans la mesure où Access ne sait pas quelle ville afficher après la saisie du code postal, ce que tu cherches à faire n'est pas facilement réalisable. A première vue, après la saisie du CP, il faudrait qu'un formulaire s'ouvre et affiche la liste des villes correspondant au CP, et que lorsque tu en sélectionnes un, le formulaire se referme et affiche la ville choisie. Je ne sais pas si c'est réalisable sans programmation, car il en faudra au moins macro pour la partie de sélection et fermeture du formulaire de choix.

                Tu aurais une solution de contournements, c'est d'afficher une liste déroulante comportant le code postal ET le nom de villes. Mais alors ça te fait une liste de choix ou déroulante de près de 36000 entrées, ce qui risque d'alourdir le fonctionnement de ton formulaire.

                A moins que qqun d'autre ait une idée plus simple ?
                0
                1. je recapitule

                  table1 code client numeroauto cprimaire
                  nom texte
                  cp numerique

                  table 2 id ville numeroauto cprimaire
                  cp numerique
                  ville texte

                  je voudrais lier les 2 et faire une requete afin de pouvoir remplir ma table et que quand je rentre le cp une liste de choix se presente dans les villes........

                  help!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! je deviens fou!!!
                  0
                  1. Bonjour,

                    Je souhaiterai savoir si vous avez pu résoudre votre problème avec les codes postaux.

                    Je suis en train de faire la même chose, à savoir :

                    J'ai une table CONTACTS qui contient:
                    - Nom
                    - Code postal
                    - Ville

                    Actuellement, lorsque je tape le nom, puis le code postal, le champ ville
                    n'est pas pre-rempli.

                    J'ai une seconde table "reference_codes_postaux" qui contient l'ensemble des
                    codes postaux et villes de France.
                    Cette table a 2 champs:
                    - code_postal
                    - ville
                    A noter: 2 villes peuvent avoir le même code postal (par ex, les petits
                    villages).

                    Pour m'aider dans la saisie de la ville, dans ma table CONTACTS, j'ai défini
                    une liste de choix, avec comme source la table reference_codes_postaux.
                    J'obtiens donc l'ensemble de toutes les villes, pour tous les codes postaux
                    dans la liste déroulante.

                    L'étape que je ne parviens pas à faire est la suivante: lorsque je tape le
                    code postal dans la table CONTACTS, je souhaite que le champ "ville" soit
                    automatiquement pré-rempli.
                    Comment faire?

                    Si vous avez besoin de plus d'informations pour répondre à cette question,
                    merci de m'aiguiller.

                    Cordialement,
                    0
                2. j y arrive tres bien si je prend des cp uniques .. la ok
                  mais pour ce que je veux faire j ne comprend pas quoi lier avec quoi et surtout
                  ca ne me donne pas les villes en tapant le cp... pfffffffffffffffffffffff
                  0
                  1. Bonjour,
                    vraiment j y arrive pas....
                    help!!!
                    0
                    1. j ai lie... ok ville en numerique table1 a id_ville table2

                      ok c est bon

                      mais la requete

                      la voila
                      SELECT client.nom, client.prenom, client.cp, cp.Villes
                      FROM cp INNER JOIN client ON cp.id_ville=client.ville;

                      et je ne peux rien entrer nulle part.. ca fait cling...
                      0
                      1. Contributeur
                        Heu...
                        table1 nom texte 
                        prenom texte 
                        cp numerique 
                        ville texte
                        j ai rajouté id_ville en numeroauto cle primaire

                        moi j'ai rien écrit de tel...

                        il faut un id_client... et que ville soitr numérique pour le lier à l'id_ville NumAuto de la table2
                        0
                        1. Bonjour a tous...
                          non j ai pas resolu mon probleme.. et je galere grave.
                          je vais essayer d etre plus clair sur mes tables
                          table1 nom texte
                          prenom texte
                          cp numerique
                          ville texte
                          j ai rajouté id_ville en numeroauto cle primaire

                          comme le disais grizzly

                          table2 id_ville en numeroauto cle primaire
                          cp en numerique
                          villes en texte

                          quand je veux relier id_ville a id_ville ca me dit definition non valide dans la definition de l index...

                          voila je seche toujours.... et je desespere d y arriver....

                          question idiote... les valeurs de id_ville doivent etre les memes?
                          je nage!!!
                          help
                          0
                          1. Tu as toujour raison GRYZZLY, c'est complique, j'ai cru qu'il y avait pour chauque ville un code unique.

                            En reponse au notre <gil83, le mardi 25 septembre 2007 à 18h42:42>
                            (((mais il est impossible de mettre la cle primaire sur cp car il existe plusieurs villes correspondant au meme cp
                            meme en rajoutant un champ ref en numerique auto dans la table ville j arrive pas a faire la liaison entre les 2 tables!!! )))

                            ==> utilise le shema proposé Par gryzzly daté du mardi 25 septembre 2007 à 19h28:02
                            ==> et essaie de prendre le type <numerique auto > qui sera relier à un champ de type <Entier long>
                            0
                            1. Contributeur
                              Non, encore une fois, c'est faux. Pour la même raison que précédemment annoncée.

                              Code postal 05000
                              →
                              05000 CHATEAUVIEUX Hautes-Alpes Provence-Alpes-Côte-d'Azur
                              05000 PELLEAUTIER Hautes-Alpes Provence-Alpes-Côte-d'Azur
                              05000 LA BATIE VIEILLE Hautes-Alpes Provence-Alpes-Côte-d'Azur
                              05000 RAMBAUD Hautes-Alpes Provence-Alpes-Côte-d'Azur
                              05000 LA ROCHETTE Hautes-Alpes Provence-Alpes-Côte-d'Azur
                              05000 GAP Hautes-Alpes Provence-Alpes-Côte-d'Azur
                              05000 LA FREISSINOUSE Hautes-Alpes Provence-Alpes-Côte-d'Azur
                              05000 ROMETTE Hautes-Alpes Provence-Alpes-Côte-d'Azur
                              05000 NEFFES Hautes-Alpes Provence-Alpes-Côte-d'Azur

                              =9 villes/communes correspondant au CP 05000. Donc, CP ne peut PAS être une clé primaire.

                              Enfin, depuis le temps, j'espère qu'il s'en est sorti, sinon c'est pas gagné :s
                              0
                              1. Bonjour,

                                NB: souligné c.a.d.que c'est une clef primaire

                                cree les deux tableaux:

                                Table <Client>
                                CodeClient
                                Nom
                                Prenom
                                CP

                                Table <Ville>
                                CP
                                NomVille

                                dans ta relation faire:
                                Table <Client>
                                CodeClient
                                Nom
                                Prenom Table <Ville>
                                CP -------------- ∞ -------------------------------------------------- 1 ------- CP
                                NomVille

                                quand tu fais ta saisie:
                                dans table ville
                                CP Ville
                                75000 paris
                                57000 Metz

                                dans table client
                                ColdeClient Nom Prenom CP
                                1 DUPONT Jean 75000
                                2 DADA Jacques 57000
                                3 TOTO Moris 75000
                                4 TUTU Joseph 75000

                                maintenant tu as 3 client habittant la ville de Paris et un seul client habittant la ville de Metz

                                courage
                                0
                                1. slut moi je suis guinéen de conakry et j'aimerais avoir es premières notions en ACCESS
                                  0
                                  1. Contributeur
                                    Table 1 :                Table 2 :
                                    id_ville *  ----         id_client *
                                    cp              \        nom
                                    ville            \       prenom
                                                       ----  id_ville


                                    0
                                    1. merci peredenuit

                                      mais il est impossible de mettre la cle primaire sur cp car il existe plusieurs villes correspondant au meme cp
                                      et meme en rajoutant un champ ref en numerique auto dans la table ville j arrive pas a faire la liaison entre les 2 tables!!!
                                      help!!!

                                      merci d avance
                                      0
                                      • 1
                                      • 2