Affichage par liste deroulante

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

  • Cla_1214.xlsx
    12.4 KB · Affichages: 56

Dugenou

XLDnaute Barbatruc
Re : Affichage par liste deroulante

Bonjour,
Une proposition en pj avec une formule matricielle expliquée : risque de lenteur si ta base réelle d'articles fait plus de 50 000 lignes.

Cordialement
 

Pièces jointes

  • j_ose inventaire.xlsx
    17.8 KB · Affichages: 52

j_ose

XLDnaute Nouveau
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 :p

Bon week end

Cordialement
 

david84

XLDnaute Barbatruc
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+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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

  • j_ose inventaire-1.xlsm
    25.8 KB · Affichages: 49
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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

  • FiltreTableauTableur.xls
    67.5 KB · Affichages: 67
Dernière édition:

j_ose

XLDnaute Nouveau
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
 

j_ose

XLDnaute Nouveau
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
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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:

j_ose

XLDnaute Nouveau
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. :mad: .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
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 504
Messages
2 089 070
Membres
104 018
dernier inscrit
Mzghal