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 :

Liste déroulante dynamique avec filtre


Sujet :

Excel

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 94
    Points : 45
    Points
    45
    Par défaut Liste déroulante dynamique avec filtre
    Bonjour à tous,

    J'ai une liste déroulante que je tire d'une colonne, avec mise à jour automatique, selon la formule suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(Data!$C$1;1;0;NBVAL(Data!$C:$C)-1)
    Mais certains éléments de cette liste changent de statut selon les moments, je ne souhaite donc pas qu'ils apparaissent.

    La liste source serait du genre (colonne A -> colonne B)

    Element 1 -> Actif
    Element 2 -> Actif
    Element 3 -> Inactif
    Element 4 -> Actif
    Etc.

    Est-ce réalisable ? Et comment faire ?

    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Les éléments étant en colonne A, mets en E1, par exemple (formule matricielle, à valider avec Ctrl+Maj+Entrée) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTERR(PETITE.VALEUR(SI($B$1:$B$4="actif";LIGNE($A$1:$A$4));LIGNE(A1)));"!";INDEX($A$1:$A$4;PETITE.VALEUR(SI($B$1:$B$4="actif";LIGNE($A$1:$A$4));LIGNE(A1));1))
    Reproduis vers le bas autant que la colonne A. Dans la validation, mets la formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER($E$1;;;EQUIV("!";$E$1:$E$10;0)-1)

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 94
    Points : 45
    Points
    45
    Par défaut
    Ca marche parfaitement bien, mais dès que je fais baisser tout d'une ligne, car j'ai des titres, il y a un petit couac.

    Quel est le point à modifier afin que cela s'adapte ?

    Merci d'avance

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Modifie la formule en E2 (matricielle) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTERR(PETITE.VALEUR(SI($B$2:$B$5="actif";LIGNE($A$2:$A$5));LIGNE(A1)));"!";INDEX($A$1:$A$5;PETITE.VALEUR(SI($B$2:$B$5="actif";LIGNE($A$2:$A$5));LIGNE(A1));1))
    et tire-la vers le bas.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 94
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par Daniel.C Voir le message
    Modifie la formule en E2 (matricielle) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTERR(PETITE.VALEUR(SI($B$2:$B$5="actif";LIGNE($A$2:$A$5));LIGNE(A1)));"!";INDEX($A$1:$A$5;PETITE.VALEUR(SI($B$2:$B$5="actif";LIGNE($A$2:$A$5));LIGNE(A1));1))
    et tire-la vers le bas.
    Ça marche pour le filtre !!!

    Maintenant j'ai un souci avec la "Validation des données".

    Elle fonctionne quand je suis sur la même feuille, mais dès que je change de feuille, pour mettre ma liste déroulante, ça ne fonctionne plus.

    Y a-t-il moyen de remédier ou contourner cela ?

    Merci

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Y a-t-il moyen de remédier ou contourner cela ?
    Oui. Définis une plage nommée (la façon de faire dépend de ta version d'Excel). Probablement :
    Menus Insertion, Nom, Définir; donne un nom à ta plage, par exemple "Plage" et dans "Fait référence à", mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER($E$1;;;EQUIV("!";$E$1:$E$10;0)-1)
    Valide. Dans la définition de la liste de validatiion, remplace la formule par le nom "=Plage" (sans les guillemets).

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 94
    Points : 45
    Points
    45
    Par défaut
    J'ai fait les modifications suivantes aux codes et tout fonctionne à merveille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTERR(PETITE.VALEUR(SI($R$2:$R$200="Active";LIGNE($Q$2:$Q$200));LIGNE(Q1)));"!";INDEX($Q$1:$Q$200;PETITE.VALEUR(SI($R$2:$R$200="Active";LIGNE($Q$2:$Q$200));LIGNE(Q1));1))
    J'ai mis les 200 lignes, même si je ne les utilise pas toutes. J'avais mis la colonne entière, mais cela générait trop de temps de calcul.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =DECALER(Options!$S$2;;;EQUIV("!";Options!$S:$S;0)-2)
    Et cela fonctionne parfaitement.

    Merci beaucoup pour ton aide.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    C'est sûr que les formules matricielles sont des grosses consommatrices de ressources. Tu as même intérêt à définir avec un nom la plage dynamique s'ajustant automatiquement à tes données.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 09/02/2011, 15h31
  2. Formulaire avec liste déroulant dynamique
    Par Medkeita dans le forum Langage
    Réponses: 10
    Dernier message: 01/10/2010, 10h14
  3. [AJAX] Est-ce réalisable ? 4 liste déroulante dynamique avec bd
    Par Tomdu85 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/05/2008, 11h34
  4. filtre sur liste déroulante dynamique
    Par Sami Xite dans le forum Access
    Réponses: 2
    Dernier message: 06/05/2008, 06h37
  5. Un souci avec les listes déroulantes dynamiques
    Par namstou3 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/02/2008, 17h08

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