[Excel]Listes de choix conditionnelles

Tlyrni Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis confronté à un petit problème Excel...
Je cherche à faire saisir des choix à un groupe de personne et je vais m'appuyer sur l'outil excel, mais voilà je n'ai aucune idée sur les moyens pour résoudre le dernier problème qui se pose :

J'ai une liste de ville (disons Paris, New-York, Londres,..., VilleM), une liste de services (parachute, bateau, vélo, ..., ServiceN) et pour chaque couple correpond un numéro d'identification.

mes utilisateurs vont devoir :
- choisir une ville (liste déroulante de choix des villes possibles)
- choisir un service (liste déroulante des services disponibles dans cette ville)
après ces deux chois, le numéro d'identification s'affichera.

Voici un exemple des informations dans le tableau
Ville Service N° ID
Paris Bateau 1
Paris Billard 2
Paris Cinéma 3
Paris Restaurant 4
New-York Parachute 5
New-York Restaurant 6
New-York Musée 7
Londres Bateau 8
Londres Musée 9
Londres Restaurant 10
Londres Snooker 11
Londres Cinéma 12

Exemple d'utilisation :
- J'ai une premiere liste déroulante qui me propose "Paris, New-York, Londres" (pas de redondance)
- Je choisis "Paris"
- Une deuxième liste déroulante me propose "Bateau, Billard, Cinéma, Restaurant"
- Je choisis Billard
- La suite de la ligne excel affiche automatiquement le numéro d'identification "2"

Merci d'avance pour vos réponses, n'hésitez pas à poser vos questions si je n'ai pas été assez précis :)
Configuration: Windows XP
Internet Explorer 6.0

9 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    cette petite démo (sur un autre thème "culturel") pourra peut-^tre t'aider
    https://www.cjoint.com/?ltsJIrdVJa
    0
  2. Tlyrni Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci pour cet exemple malheureusement il ne convient pas exactement...
    Je m'explique, le fichier que je dois tenir sera à mettre à jour régulièrement et les listes de choix sont succeptibles de fortement fluctuer (ajout et suppression de service)
    Par conséquent il faudrait un système automatisé qui n'ai pas besoin des listes intermédiaires ou qui les génère automatiquement

    élément métriques :
    60 à 100 villes
    5 à 10 services par ville

    Je suis en train de chercher une solution dans VBA mais n'y connaissant rien... c'est pas gagné ;)
    Merci d'avance pour vos réponses !
    0
  3. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonsoir
    Ci joint un petit modéle, sachant que dans les données de référence, les villes sont en colonnes et les activités (couleurs) sont en ligne.
    Selon vos besoins, vous pouvez coder les activités au croisement des lignes et des colonnes et remplacer par une info, par exemple "inexistant" si l'activité n'est pas développée dans la ville.

    La colonne qui transforme les activités en chiffre peut évidemment être cachée, ou située hors champ.

    Crdlmnt

    http://www.cijoint.fr/cjlink.php?file=cj200811/cijRoBfNXB.xls
    0
  4. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Re
    en complément au message précédent et à adapter dans le fichier joint, cette formule permet d'éviter la colonne C de renvoi code couleur
    Par contre, bien garder la ligne 2

    =SI(OU(ESTVIDE(A32);ESTVIDE(B32));0;RECHERCHEV(A32;CHTT;RECHERCHEH(B32;CHCOUL;2;0);0))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir tout le monde,

    vaucluse,
    une petite amélioration dans ton tableau...
    En nommant les lignes et les colonnes la formule pour récupérer le code devient :
    =INDIRECT(A31&" "&B31)
    et plus besoin de ligne ou colonne intermédiaire
    Classeur1.xls
    EDIT : heuuu sauf que là ça ne ramène que la 2nde colonne, ce que je ne m'explique pas. On oublie pour l'instant... :-)

    Tlyrni,
    je ne vois pas comment tu veux remplir le tableau automatiquement sauf si le fait que le code d'une ville-activité change en cours de route ne te gène pas.
    A moins que tu n'aies une idée pour générer un code unique à partir des noms ?
    Qcq chose comme un n° fixe pour chaque ville et activité et faire (code-ville * 100 + code activité) ?

    eric
    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Bonjour Eriiic

      1° c'est sans doute vrai, mais je n'arrive pas a le faire marcher.
      Quand je nomme la colonne B "blanc "et la ligne 3 "Paris"; la formule me renvoi en C32 "2" alors que le code du tableau est 1?
      2° après avoir nommé Lyon et Bleu, le code Lyon / Bleu sort bien à 12, mais ne change pas si onchange la ville et la couleur en A33;B33
      Paris / Blanc donne 2
      Paris /Bleu Donne 2
      Lyon / Blleu donne 12
      Lyon / Blanc: 12 ne change pas

      2° je ne suis pas sur que ce soit plus simple, sinon au niveau de la formule, car à chaque évolution de ville ou d'activité, il faut se payer un nouveau nom?

      Dans ma proposition, les champs sont détermlnés une fois pour toute(s'ils ont la dimensions voulue ppour la capa cité à venir voulue, et ma seconde proposition de formule supprime la colonne de renvoi intermèdiaire, mais c'est vrai, la ligne de code est conservée et la formule plus complexe.

      Crdlmnt. Bonne journée


      0
      1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281 > Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour vaucluse,

        Pour nommer ça se fait très vite mais l'explication du comment faire est dans le fichier joint.
        Et tu n'as pas lu ça EDIT : heuuu sauf que là ça ne ramène que la 2nde colonne, ce que je ne m'explique pas. On oublie pour l'instant... :-) !!! ;-)
        Je l'ai déjà fait mais là ça ne marche pas et je ne vois pas pourquoi donc on oublie
        Bonne journée :-)
        eric
        0
  7. Tlyrni Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour à tous,

    Tout d'abord, merci pour vos réponses qui, faute de me donner exactement la réponse attendue, me fournissent beaucoup de piste de recherche très prometteuse !

    Je vais faire me remarques sur la base du fichier proposé par Vaucluse :
    1) Je n'ai pas ce format de tableau, j'ai un tableau à 3 colonnes (Villes, Couleurs, Code). Il faudrait donc réussir par un traitement lambda à faire passer le tableau de ma forme à la tienne

    2) dans ton tableau chaque croisement à un code, il suffit donc de proposer les listes déroulantes fixes. De mon coté j'ai des croisements villes couleurs inexistants et j'aimerais bien qu'ils ne puissent pas être saisis.

    J'espere avoir été assez clair.

    Cdt,

    Tlyrni
    0
  8. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour à tous,

    Je n'avais pas vu ton dernier message et j'ai travaillé avec les exemples précédents. Je te mets tout de même ma contribution : http://www.cijoint.fr/cjlink.php?file=cj200811/cijFuVTD8r.xls

    Je vais regarder avec les dernières indications.
    0
  9. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour tout le monde,

    Ci joint proposition (50 villes because flemme d'aller à 100)...
    https://www.cjoint.com/?lumc7Rdll0
    0
  10. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Petite amélioration cellule K2 (pour éviter le NA lors de changement de ville)
    =SI(NB.SI(F2:F20;J2)=0;"";INDEX(C2:C500;EQUIV(I2&J2;G2:G500;0)))
    0