Affichage par liste deroulante

  • Initiateur de la discussion Initiateur de la discussion j_ose
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

j_ose

XLDnaute Nouveau
Bonjour à tous,
Je suis en train de préparer l’inventaire de fin d’année, pour se faire j’ai un classeur avec dans la feuil1 les articles, leur réf et la disponibilité de l’article. (1 pour dispo, 0 pour non dispo). Dans la feuil2 je souhaiterais afficher les articles disponibles en choisissant la famille par liste déroulante. mais je en sais pas comment faire. Auriez-vous une petite idée de formules? ou m'indiquer la marche a suive.

Cordialement
 

Pièces jointes

Re : Affichage par liste deroulante

Bonsoir Dugenou,

Merci pour ta réponse et pour l'explication qui va avec, ça me va bien. La base article a environ 1500 ligne. J'ai une feuille intermédiaires qui consolide les quantité de divers magasins environ 60 000 ligne, la ça prend un peu plus de temps 😛

Bon week end

Cordialement
 
Re : Affichage par liste deroulante

Bonjour,
si l'on veut absolument passer en formule matricielle sur un grand nombre de ligne il vaut mieux sélectionner l'ensemble de la plage à valider et utiliser
Code:
=SIERREUR(INDEX(Articles[Ref];PETITE.VALEUR(SI(Articles[Famille]=Feuil2!$B$5;SI(Articles[Dispo]=1;LIGNE(Articles[Famille])-1));LIGNE(INDIRECT("1:"&LIGNES(Articles[Famille])))));"")
Le traitement est beaucoup plus rapide (cf. ici sur le site de JB).
A+
 
Re : Affichage par liste deroulante

Bonjour,

Avec fonction perso matricielle (rapide)

-Sélectionner A6:A16
=ListeCondCritère(Articles[Ref];Articles[Famille];B5;Articles[Dispo];1)
Valiser avec maj+ctrl+entrée


Code:
Function ListeCondCritère(ChampRef As Range, ChampFamille As Range, Famille, Champdispo As Range, dispo)
  temp = ChampRef
  temp2 = ChampFamille
  crit = critère
  temp3 = Champdispo
  disp = dispo
  k = 1
  Dim b()
  ReDim b(1 To Application.Caller.Rows.Count)
  For i = LBound(temp, 1) To UBound(temp, 1)
   If UCase(temp2(i, 1)) = UCase(Famille) And temp3(i, 1) = disp Then
     b(k) = temp(i, 1)
     k = k + 1
     If k > UBound(b) Then ListeCondCritère = "Sélectionner + lignes": Exit Function
   End If
  Next i
  ListeCondCritère = Application.Transpose(b)
End Function

JB
 

Pièces jointes

Dernière édition:
Re : Affichage par liste deroulante

Autre essai avec une fonction perso plus générale:

- avec 1 ou 2 critères de sélection.
- choix des colonnes résultat.

sélectionner A4:C24
=filtretableau(Articles;3;B2;{1;2;4};4;1)
Valider avec maj+ctrl+entrée

Code:
Function FiltreTableau(tableau As Range, colCrit1, critere1, ColResult, Optional colcrit2, Optional critere2)
  a = tableau
  k = 1
  Dim b(): ReDim b(1 To UBound(ColResult) - LBound(ColResult) + 1, LBound(a) To UBound(a))
  If IsMissing(colcrit2) Then colcrit2 = colCrit1: critere2 = critere1
  For i = LBound(a, 1) To UBound(a, 1)
     If a(i, colCrit1) = critere1 And a(i, colcrit2) = critere2 Then
     For c = LBound(ColResult) To UBound(ColResult)
       col = ColResult(c, 1)
       b(c, k) = a(i, col)
     Next c
     k = k + 1
   End If
  Next i
  ReDim Preserve b(1 To UBound(ColResult) - LBound(ColResult) + 1, LBound(a) To Application.Caller.Rows.Count)
  FiltreTableau = Application.Transpose(b)
End Function

http://boisgontierjacques.free.fr/fichiers/fonctionsperso/FiltreTableauTableur.xls
http://boisgontierjacques.free.fr/fichiers/fonctionsperso/FiltreTableauArray.xls

JB
 

Pièces jointes

Dernière édition:
Re : Affichage par liste deroulante

Bonjour à tous, JCGL, David 84, BOISGONTIER

Tout d’abord merci pour vos réponses toutes très intéressantes.
JCGL merci pour l’exemple du TCD, je ne suis pas très l’aise avec les TCD , en fait dans ma feuille qui consolide les données je sépare les familles et j’ai d’autre formules a côté pour divers calcul. j ai essayé pour avoir un résultat identique mais ça me fais faire plusieurs TCD les uns en dessous des autres.

Merci David84 pour la formule matricielle et également pour le lien pour le site de JB.

BOISGONTIER merci pour vos réponses et les explications qui vont avec, ça semble tellement facile mais je ne doute pas du travail et des connaissances d’Excel qui vont avec. Votre dernier exemple va dans le sens que je recherche, je vais l’adapter à mon tableau. Par contre il y a un lien avec un tableau ARRAY je ne connaissais pas et vous avez aiguisé ma curiosité.

Je vais tester tous ces exemples cet après-midi.😉
Bon dimanche a tous

Cordialement
 
Re : Affichage par liste deroulante

Bonsoir BOISGONTIER,

Je reviens vers vous , je rencontre un soucis d'affichage #VALEUR dans la liste familles après avoir saisie la formule {=SansDoublonsTrié(C2:C1300)}. j'ai refait mon tableau dans un nouveau classeur et je n'arrive pas a voir d ou viens l'erreur.
pouvez m’éclairer?

Bonne soirée

Cordialement
 
Re : Affichage par liste deroulante

Bonjour,


-il faut sélectionner un nombre suffisant de cellules verticalement (30 s'il y a 30 familles)
-Ecrire la formule =SansDoublonsTrié(C2:C1300)
-Valider avec maj+ctrl+entrée

Définir le nom de champ ListeFamille=DECALER(BD!$I$2;;;NB.SI(BD!$I$2:$I$31;"<>0"))

JB
 
Dernière édition:
Re : Affichage par liste deroulante

Bonsoir BOISGONTIER, bonsoir a tous,

Merci pour votre réponse, je suis reparti de votre tableau, j'ai tout recopié ça fonctionne bien c'est très rapide. En repartant d'un nouveau classeur je n'y arrivais pas. 😡 .Si je peux encore vous embêté, dans le tableau final la famille est en colonne E, à quel endroit de la formule je dois apporter la modification?

Bonne soirée

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

M
Réponses
4
Affichages
4 K
Mélanie64
M
Réponses
8
Affichages
1 K
M
Réponses
2
Affichages
977
MarionP85
M
F
Réponses
5
Affichages
1 K
M
Réponses
5
Affichages
3 K
mezzo40
M
Retour