Associer une ville à un code postal

Bonjour,
Je fais une base de données sur excel avec des coordonnées clients.
J'aimerais qu'en tapant un code postal, la ville s'affiche. J'ai utilisé une RECHERCHEV mais le problème est que certaines villes ont le même code postal. Comment pourrais-je intégrer une liste qui me permettrait de choisir entre les différentes villes que la recherchev a trouvé?
Merci d'avance !

5 réponses

  1. Contributeur
    Bonjour

    Il faut construire une liste des communes qui ont le même code postal
    (les codes postaux doivent être triés dans l'ordre croissant)
    Pour trouver le premier utiliser =EQUIV( C1;A10:A37000;0)

    La cellule C1 contient le code postal recherché,
    La cellule C1 peut-être une liste déroulante
    A10:A37000 la colonne des codes postaux
    Type 0 pour avoir la valeur correspondante exactement

    Vous devez compter le nombre de code C1 identique dans la colonne A
    Equiv vous donne le numéro de ligne du premier code correspondant par rapport à votre point de départ A10 si le résultat est 5 l'information est en ligne 15

    =ADRESSE(LIGNE()+EQUIV("oui";B7:B21;0);2;3;1;"BASE_CODES")

    Donc dans votre formule pour le 2ème code ligne() va incrémenter l'adresse
    de +1
    Après ligne() il faudra mettre un + ou - pour régler le point de départ de la formule
    suivant le numéro de ligne ou se trouve votre formule pour faire coïncider les numéro des lignes
    le numéro de la colonne contenant les communes est 2 dans ma formule
    cette formule sera tirées sur une quinzaine de lignes pour avoir la liste des codes postaux identiques cela vous donnera la base de la liste déroulante des communes

    0
    1. Contributeur
      Bonjour
      un petit joujou ici:
      https://www.cjoint.com/c/DDkmsQvxjbd

      crdlmnt
      0
      1. Contributeur
        Bonjour Vaucluse

        Très intéressant, mais si je tape 10140 il y a 22 communes et l'affichage est de 13 donc il y a une modification à faire.
        Je me suis moi même fait avoir en prévoyant 15 lignes et encore je n'ai pas tout contrôlé
        je viens de regarder il faut 46 lignes pour 51300
        0
      2. Contributeur
        Exact, merci de l'info, je ne croyais pas qu'il y en avait tant!!
        mais il suffit alors de supprimer la formule en H2 qui n'est pas que pour faire joli, ou de la remplacer par:
        =SI(F4="";"";NB.SI(DATA!B:B;F4)&SI(NB.SI(DATA!B:B;F4)>1;" villes trouvées";" ville trouvée"))

        et de tirer la formule en dessous jusqu'à la ligne 60 ça devrait suffire....!

        crdlmnrt
        0
      3. Contributeur
        Bonjour Vaucluse

        J'ai ajouté un contrôle pour que les cellules restent vides quand la liste est plus courte

        =SI(LIGNE()-3<=NB.SI(DATA!B:B;$F$4);SI(OU($F$4="";NB.SI(DATA!H:H;$F$4)<=LIGNE()-4);"";INDEX(DATA!G:G;EQUIV($F$4*1;DATA!H:H;0)+LIGNE()-4));"")

        Merci pour le fichier, j'aime bien la présentation, c'est top

        Bonne journée
        0
    2. Contributeur
      Bonjour

      Un exemple avec VBA
      https://www.cjoint.com/?3Dkm7Rru55y

      Un exemple par formule avec plusieurs méthodes (vert: débutant avec colonne intermédiaire; bleue avec matricielle avec formule de Jacques Boisgontier)
      https://www.cjoint.com/?3Dkndqq2CVz

      dans les 2 propositions, il n'est pas nécessaire de trier les codes dans l'ordre crossant -cas classique des carnets d'adresses
      0
      1. Je faisais face au même problème et après quelques essais je me retrouve avec cette façon possible, essayer et laissez-moi savoir si vous rencontrez un problème nouveau, et pour base de données des codes postaux, vous pouvez visiter http://www.lecodepostal.fr/ qu'ils ont données géantes de codes postaux. Santé

        =INDEX($I$2:$I$9000,MATCH(1,($H$2:$H$9=E11)*($J$2:$J$9<=SUBSTITUTE(B2,LEFT(B2,FIND("
        ",B2)),""))*($K$2:$K$9>=--LEFT(B2,FIND(" ",B2)-1)),0))

        entrée avec ctrl + shift et entrer

        s'assurer qu'il n'y a pas d'espaces cachés dans le tableau

        -
        Cordialement,

        Anthony Cole
        0