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

  • Votes
  • Date
  • Date décroissante
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
    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
      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
        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
          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
            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
              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 ?
                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!!!
                  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,
                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
                  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...
                    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
                      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
                        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>
                          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
                            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
                              1. slut moi je suis guinéen de conakry et j'aimerais avoir es premières notions en ACCESS
                                1. Contributeur
                                  Table 1 :                Table 2 :
                                  id_ville *  ----         id_client *
                                  cp              \        nom
                                  ville            \       prenom
                                                     ----  id_ville


                                  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
                                    • 1
                                    • 2