IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Dépendance de deux listes [XL-2013]


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Dépendance de deux listes
    Cher développeurs,

    Après avoir passé plusieurs heures à parcourir la FAQ et le forum sans trouver de réponse à mon problème, je suis contrains de vous demander de l'aide.
    Je tiens à préciser que j'ai bien vu http://excel.developpez.com/faq/?pag...anceListeValid ainsi que la demande sur le forum concernant le même sujet http://www.developpez.net/forums/d62...ndance-listes/
    Pourtant ça ne m'a pas aidé à résoudre mon problème.


    Revenons à nos moutons,
    Dans mon onglet Base de données, j'ai un tableau recensant différents modules solaires. Chaque module solaire comporte une MARQUE, un MODELE et un PRIX.

    Dans mon onglet principal j'ai:
    - Dans la première cellule (C9), j'ai mis comme source la liste Marques_modules dans l'onglet Validation de données, ceci afin d'afficher une liste déroulante avec les différentes MARQUES.
    - Dans la deuxième cellule, la source est =INDIRECT(C9) pour afficher les MODELES correspondants à la MARQUE choisie en C9. Sachant qu'existe pour chaque MARQUE une liste du même nom contenant les MODELES de cette MARQUE. Mais lorsque je veux valider cette liste, un message m'indique que la source est reconnu comme erroné.

    Je pense que mon problème vient de la définition des MODELES. Mais je ne comprends pas pourquoi.

    Voici un exemple, pour la MARQUE ALEO :
    Le nom ALEO fait référence à : =DECALER(Modèles_modules;EQUIV("ALEO";modules!$A:$A;0)-2;;NB.SI(modules!$B:$B;"ALEO"))
    Le nom Modèles_modules n'est pas très utile car en fait il correspond à une colonne entière. Mais c'est plus pratique pour comprendre, je pense.
    Les autres marques sont définies de la même manière.

    Je ne sais pas si tout ceci est très clair... Quelqu'un comprend il mon problème et saurait comment le résoudre ?

    Merci par avance !!!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Il y a une petite erreur. C'est =INDIRECT($D$1)

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse mais le fait de rajouter les $ ne solutionne pas le problème.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    A priori, les $ sont inutiles lorsqu'ils sont utilisés dans une liste de validation.
    Ma réponse concernait le 1. Il est écrit =INDIRECT($D$2) dans la FAQ, c'est =INDIRECT($D$1) (ou =INDIRECT(D1)).

    Maintenant, pour ton problème, je pense qu'un classeur avec des données bidon permettrai de mieux aider.

    Cela dit, as-tu compris le fonctionnement de INDIRECT ?

    INDIRECT permet de ne pas lire une donnée directement dans une cellule, mais indirectement dans une autre si la fonction INDIRECT pointe sur une cellule contenant une addresse valide.

    Un exemple:
    A B C D E
    1 =INDIRECT(B5) A1 =INDIRECT(D1)
    2
    3 Bonjour
    4 Au revoir
    5 C4

    Dans cette configuration, La cellule initiale E1 appel la cellule D1 avec INDIRECT, c'est à dire qu'au lieu de lire et d'interpréter la valeur de la cellule D1 en tant que chaine de texte, elle va l'interpréter en tant que référence et lire 'Référence A1' plutôt que 'Valeur "A1"' et va lire le contenu de la cellule A1, ainsi de suite.

    Dans cette exemple, amuse toi à remplacer le contenu de la cellule B5, et au lieu d'écrire C3, tu écrit C4. Puis modifie le contenu des cellules C3 ou C4.
    Les cellules A1/E1 lisent les données (de manière indirecte) des cellules C3 ou C4 selon que la valeur écrite dans B5 pointe sur C3 ou C4.

    Je ne sais pas si ça peut t'aider à comprendre ou pas.


    Aussi, les listes de données traite l'erreur au moment de cliquer sur le bouton OK dans la boite de dialogue et si INDIRECT ne pointe pas sur une référence valide, une erreur survient tandis que dans les cellules, INDIRECT peut pointer sur une référence invalide. Le mot #REF! apparait dans ce cas dans la cellule.

    Pour s'en rendre compte, en cellule F1, utilise la liste de validation de donnée et écrit =INDIRECT(D1), puis valide. Tout sera OK.
    Maintenant, change la valeur de la cellule D1, puis écrit A0 (cellule qui n'existe pas) au lieu du A1 initiale, puis ré-ouvre la boite de dialogue de validation des donnée (sans changer la formule), puis valide. Une erreur surviendra.
    Dernière modification par Invité ; 28/11/2014 à 23h06.

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Salut,
    bon déjà je te remercie pour tes explications ça m'a vraiment aidé à comprendre comment fonctionne la fonction INDIRECT. En fait c'est une sorte de pointeur comme en ...langage C si je me souviens bien, c'est ça ? Mes quelques heures d'études d'informatique sont très loin...
    C'est toujours plus facile de comprendre en utilisant un exemple, ça c'est sur.

    Sinon je n'ai pas réussi à appliquer la fonction INDIRECT à mon problème, mais j'ai réussi à le solutionner.

    J'ai mis dans la liste la fonction DECALER qui récupère le tableau contenant la marque choisie puis décale d'une colonne pour obtenir le tableau des modèles que contient la marque en question. Et j'obtiens bien des cellules, la première où je choisi ma marque et la deuxième dans laquelle je sélectionne le modèle

    Puis j'ai eu un autre soucis : quand je fermais mon fichier excel, la liste s'auto-supprimait. Du coup j'ai du enregistrer mon fichier excel en mode "Classeur Excel (prenant en charge les macros), afin de garder en vie la liste à chaque fermeture de fichier.

    Voili voilou.
    Merci encore à Nouveau2 !
    Je termine la conversation [RESOLU]

    Sans

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dépendance entre deux List
    Par Zarrows dans le forum C#
    Réponses: 7
    Dernier message: 21/09/2012, 10h37
  2. [XL-2007] Comment créer une dépendance entre deux listes avec des données issus d'un tableau?
    Par efesdark dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2011, 16h22
  3. Dépendance de deux listes
    Par rickgoz dans le forum Excel
    Réponses: 9
    Dernier message: 23/06/2009, 10h49
  4. Réponses: 3
    Dernier message: 30/12/2008, 17h11
  5. [VB.Net] Dépendance entre le contenu de deux listes déroulantes
    Par Perceuse-Killer dans le forum ASP.NET
    Réponses: 3
    Dernier message: 08/02/2007, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo