Doublons de codes postaux

0

Bonjour,

J'ai en Feuil1 une liste d'enseignes avec nom, adresse, CP, ville, tél..., et dans l'onglet "Données" la liste des CP et des communes correspondantes. Je souhaite saisir le CP et que le nom de la ville associée s'affiche automatiquement si le CP est unique, et qu'Excel me propose une liste déroulante dynamique si il existe des doublons de CP pour choisir la bonne commune, sans quoi Excel me met par défaut la première commune. Je ne parviens plus à joindre mon fichier par cjoint.com, j'espère avoir été assez clair. Merci d'avance à toutes les bonnes volontés pour leur aide !

    Ronan13 Posté le 19 mai, 10:27
    par Ronan13
    Répondre
    0

    Bonjour Ronan,

    je confirme que tu as été très clair : j'ai très bien compris ta demande.  :)

    le site cjoint.com est toujours en cours de maintenance pour élaborer la future
    nouvelle version ; actuellement, il n'affiche que des modes d'emploi et notices
    Samsung ➯ c'est impossible d'utiliser le site pour joindre des fichiers.

    va sur le site de partage de fichiers https://www.transfernow.net/fr  pour y
    déposer ton fichier ; choisis un lien de téléchargement pour 7 jours (c'est
    gratuit ; mais ça sera payant si tu choisis une durée plus longue)
    .

    rhodo

    rhodo Posté le 19 mai, 12:53
    par rhodo
    0

    Bonjour Rhodo, voici le lien, merci pour ta réponse !

    https://www.transfernow.net/dl/20250519dFGEoWUU

    Ronan13 Posté le 19 mai, 14:58
    par Ronan13
    0

    Bonsoir,

    Voir lien si j'ai bien compris?

    Clic ICI

    Cordialement

    tontonbox Posté le 19 mai, 22:46
    par tontonbox
    • Bonsoir tontonbox, oui, tu as bien compris ; mais y'a un très gros problème ! c'est que sur Feuil1, c'est censé y avoir plusieurs lignes, et non pas seulement l'unique ligne n° 2 d'Intermarché ! ➯ quand tu as saisi 1300 en C2, les villes de D3 à D23 vont écraser les villes qui avaient été choisies avant pour C3:C23 ! car imagine par exemple 30 lignes déjà saisies, et qu'on veut modifier la commune de la 15ème ligne ! évidemment, si tu as une solution pour ça, c'est différent ! la solution que je vais proposer à Ronan est valable dans le sens où ce gros problème ne se pose pas ; bien à toi. :) – rhodo 19 mai, 23:02
    0

    Bonjour Ronan,

    désolé pour le très gros retard de ma réponse : manque de disponibilité.

    lien fichier : https://www.transfernow.net/dl/20250519r5TSrpnp

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    à l'ouverture du fichier, tu es sur "Feuil1" ; la 2ème feuille s'appelait "Données",
    mais c'est trop vague ! c'est pourquoi j'ai préféré la renommer "Lieux".

    sur "Feuil1", la cellule active est C2 ; note que C2 et D2 sont vides.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    1) en C2, saisis 999 ➯ en C2 : 00999 ; en D2 : "?" ; c'est pour indiquer
    que le code 00999 n'a pas été trouvé dans la liste de la feuille "Lieux".

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    2) en C2, appuie sur la touche Suppression ➯ C2 et D2 sont vides,
    comme c'était au départ.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    3) en C2, saisis 1090 ➯ en C2 : 01090, et ça affiche une boîte de dialogue
    avec la liste des communes correspondant au code postal 01090.

    c'est une liste de 6 communes 01) à 06) ; lis les villes ; quand tu trouves celle
    qu'il te faut, saisis le nombre correspondant, sans la parenthèse, le 0 gauche
    est facultatif (il est présent juste pour un alignement correct, quand y'a plus
    de 9 villes).

    exemple : si tu veux LURCY, saisis simplement 4 et valide avec la touche
    Entrée ➯ en D2 : LURCY ; supposons que finalement tu voulais mettre
    une autre ville ; toujours en C2, appuie sur F2 puis Entrée ➯ ça simule
    une resaisie de 1090 ➯ ça réaffiche la liste de communes.

    saisis 1 puis valide avec Entrée ➯ en D2 : FRANCHELEINS.

    fais F2 puis Entrée ; appuie aussitôt sur la touche Echap ➯ ça referme
    la boîte de dialogue ; c'est pratique si tu t'étais trompé de code postal
    et que tu n'as pas besoin de choisir une commune de la liste.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    4) en C2, saisis 1300 ➯ en C2 : 01300, et ça affiche une boîte de dialogue
    avec la liste des communes correspondant au code postal 01300.

    c'est une liste de 22 communes 01) à 22) ; et tu peux voir que pour les
    9 premières communes, c'est où le 0 gauche est nécessaire pour
    un alignement correct des nombres 01 à 22.

    saisis par exemple 19 puis appuie sur Entrée ➯ en D2 : PEYRIEU.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    alors, c'est mieux qu'une liste déroulante dynamique, non ? il n'y a pas besoin
    de faire défiler verticalement les items de la liste ; il suffit de regarder la liste
    et de saisir le bon numéro.  :)

    cerise sur le gâteau : tu t'apercevras peut-être avec d'autres données que
    s'il n'y a qu'une seule commune pour un code postal donné, il n'y aura même
    pas d'affichage d'une liste : comme y'a qu'une seule possibilité, la commune
    unique s'affichera automatiquement en D2.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    fais Alt F11 pour voir le code VBA ; puis de nouveau Alt F11 pour retourner
    sur Excel ; si tu as besoin d'une adaptation, tu peux demander.  :)

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    est-ce que ma solution te convient ? mais si vraiment tu préfères quand même
    une liste déroulante dynamique (ce qui est ton droit) : je laisse à un autre
    contributeur le soin de le faire, car je préfère ma solution, et en faire une avec
    liste déroulante dynamique ne m'attire pas du tout.  ;)

    rhodo

    rhodo Posté le 20 mai, 00:02
    par rhodo
    0

    Bonjour Rhodo,

    Décidément, tu es toujours aussi incroyable... C'est juste parfait et exactement ce que je cherchais. Je veux bien une adaptation sur mon fichier dont je t'envoie le lien, j'avais pour essayer de simplifier envoyé un premier document avec peu de lignes. Tu verras que dans celui-ci, je remplis au fur et à mesure de mes besoins les colonnes de A à F, ce qui me les transcris par ordre alphabétique de J à O, ce qui me convient. J'ai essayé de copier ton code sur mon fichier, sans succès. Donc si tu veux bien, voici le lien : https://www.transfernow.net/dl/20250520NGUgiE0U

    Merci beaucoup pour cela, excellente journée !

    Posté le 20 mai, 09:31
    0

    @Ronan

    je suis ravi que ma 1ère solution te convienne !  :)

    ton fichier en retour : https://www.transfernow.net/dl/202505204d3RTgGd

    * feuille "ENSEIGNES" : j'ai mis le CodeName "F01".
    * feuille "Lieux" : j'ai mis le CodeName "F02".

    tu avais mis mon code VBA Worksheet_Change() dans ThisWorkbook alors qu'il
    doit être dans le module de la feuille "ENSEIGNES", donc dans le module de F01.

    y'a AUCUN changement  de ce code VBA : je n'ai rien eu besoin d'adapter, car les
    positions sont les mêmes : CODE POSTAL en colonne CVILLE en colonne D ;
    c'est pour la ligne 2 et en dessous, vu que la ligne 1 est la ligne d'en-têtes.

    ATTENTION : ce qui est fait pour les colonnes C et D ne doit PAS être fait pour
    les colonnes L et M ! car dans le 2ème tableau de droite, il y a des formules
    pour faire un TRI ➯ on ne fait PAS de SAISIE dans ce tableau de droite !

    bonus 1 : pour A2:E15, j'ai rempli  les cellules vides.  ;)

    bonus 2 : côté VBA, j'ai supprimé les modules vides, puis j'ai renommé
    et réorganisé les autres modules (les non vides).

    bonus 3 : dans le module M01_TriCP, regarde la sub Tri_CP() ; elle est bien plus
    courte
    ,
     hein ?  ;)  j'aurais pu faire pareil pour les autres subs de tri, mais je ne l'ai
    pas fait car ces autres tris sont pour des feuilles absentes de ce classeur !

    tu pourras faire pareil  pour toutes  les subs de tri  des modules M02 à M05.

    dans le module M06_Divers, il y a ces 4 subs : Actu_TCD ; ACTU_TCD2 ;
    Remonter_haut_de_pageBas_de_tableau.

    il y a en tout 6 modules ; ça allège, hein ?  ;)

    sur la feuille "Lieux", en C2, il y avait cette formule : =NBVAL(A:A) ➯ 35716
    c'est faux car ça compte le texte "Code postal" de A1 ! j'aurais pu mettre
    =NBVAL(A:A)-1 ; mais j'ai préféré mettre : =NB(A:A) ➯ 35 715 (c'est plus
    lisible avec un espace séparateur de milliers)
    .

    rhodo

    rhodo Posté le 20 mai, 16:52
    par rhodo
    0

    Je ne peux que m'incliner..., c'est propre, net, juste parfait. Je vais tenir compte de tes observations pour les autre sub de tri.

    Merci pour les bonus..., et merci pour tout !!!

    C'est toujours aussi agréable de te lire !

    @+

    Ronan13 Posté le 20 mai, 17:16
    par Ronan13

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :