Liste en cascade basée sur un tableau de référence

Bonjour à tous,

C'est mon premier message ici, j'ai fait pas mal de recherche et d'essais pour mon problème sans vraiment trouver de solution. J'ai l'impression que mon code est mal construit car il ralentit beaucoup excel.

Dans le fichier ci-joint j'ai un tableau d'entrée ou l'utilisateur entre les données et un tableau de référence ou des éléments individuels sont associés à des types ("type1", "type2").

Mon but est que dans la colonne B se définisse la liste déroulante des éléments correspondant au type inscrit dans la colonne A, réduisant ainsi le choix de l'utilisateur (liste en cascade)

J'ai bricolé une fonction qui appelle une procédure mais c'est très lent et impose l’existence de la colonne C "control function".

J'aimerais que par exemple que la définition de la liste dans la cellule B5 ne se rafraîchisse que quand l'utilisateur clique sur cette cellule. Ceci réduirait le nombre de calculs. J'aimerais aussi éviter de passer par une fonction imposant une colonne telle que la colonne C. J'ai l'impression que le code de la procédure créant la liste est correct mais c'est au niveau du déclenchement de la procédure que je manque d'expérience.

Je suis passé par une formule car j'ai pu étendre la formule jusqu'à la ligne 1000 (fin du tableau) en un clic.

Est-ce quelqu'un a une idée?

Je vous remercie en avance !

27exemple.xlsm (66.09 Ko)

bonjour

un essai de liste en cascade

64nodz.zip (32.59 Ko)

cordialement

Bonjour,

Merci beaucoup pour cette solution élégante et flexible sans Macros. J'avais pensé a une telle approche en tant que plan B. En effet j'aimerais passer par une macro pour éviter d'avoir à jouter les colonnes K, L, M, K+i pour le "type i+1" et garder une flexibilité maximale. Cette Macro pourrait être très utile dans bien des cas.

Si quelqu'un à une autre approche? ou ce n'est pas possible?

Je débute, il me manque une vue d'ensemble.

Merci encore,

Cordialement,

re

en plan C : des colonnes ;ça se masque ; ou alors une feuille dediée avec table de refrerence et tableS d'extraction :aussi

parce que un code qui fait ça en direct, ligne par ligne ;a la demande ;j'ai jamais vu

cordialement

Merci beaucoup pour ces précisions.

Pour info au cas ou cela serve à quelqu'un.

J'ai trouvé une solution "plan A". L'idée est de faire un test à chaque changement de sélection dans le feuillet concerné. Si la sélection est dans la colonne ou je dois construire ma liste, le programme continue et construit la liste.

Très simple, et ne consomme pas de puissance de calcul !

Seul problème avec cette méthode on ne peut pas avoir de virgules dans la colonne AE, car la virgule est le signe qui distingue les éléments de la future liste. Si quelqu'un a une autre méthode pour construire une liste je suis preneur. Par exemple construire un objet table et le renvoyer vers une liste? Je ne sais pas quel objets accepte Validation.Add Type:=xlValidateList, Formula1:=list.

Le code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Application.ActiveCell.Column = 26 Then

criteria = Application.ActiveCell.Offset(0, -1).Value 'critère catégorie

col = "AF" 'colonne ou se trouve le catégories

colbut = "AE" 'colonne ou se trouve des noms associés à une catégorie

Application.ActiveCell.Validation.Delete 'ok

For i = 3 To 1000 'construit la liste

'a = range(col & i).Value

If Range(col & i).Value = criteria Then

a = Range(colbut & i).Value

list = list & a & ", "

'MsgBox list

End If

Next

Application.ActiveCell.Validation.Add Type:=xlValidateList, Formula1:=list

End If

End Sub

Rechercher des sujets similaires à "liste cascade basee tableau reference"