EXCEL : Sélection des lignes

Résolu/Fermé
alainjjb Messages postés 771 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 5 février 2024 - 10 nov. 2008 à 16:20
alainjjb Messages postés 771 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 5 février 2024 - 11 nov. 2008 à 19:58
Bonjour,
... Suite du post "suppression des lignes vierges".

Si je crée un tableau Excel comprenant dans une 1ère feuille la liste des produits en stock :
Exemple :

Référence Désignation Qté en Stock Qté Limite Statut
Pdt001 Produit 001 100 10 Dispo
Pdt002 Produit 002 5 10 Rupture
Pdt003 Produit 003 20 10 Dispo
Pdt004 Produit 004 100 10 Dispo
Pdt005 Produit 005 5 10 Rupture
Pdt006 Produit 006 20 10 Dispo
Etc.

Est-il possible de récupérer dans la seconde feuille de ce classeur la liste suivante :
Statut recherché : Rupture
Pdt002 Produit 002 5 10 Rupture
Pdt005 Produit 005 5 10 Rupture

OU
Statut recherché : Dispo
Pdt001 Produit 001 100 10 Dispo
Pdt003 Produit 003 20 10 Dispo
Pdt004 Produit 004 100 10 Dispo
Pdt006 Produit 006 20 10 Dispo

Merci d'avance
Alain
A voir également:

7 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 403
10 nov. 2008 à 17:10
Slt...
Ci joint deux solutions:

Une sur trois feuilles ('ENSEMBLE, DISPO, RUPTURE) avec la formule RECHERCHEV
Une sur deux feuilles (ENSEMBLE2 et TRI2) avec la formule INDEX /EQUIV qui permet de placer les colonnes de détection n'importe où dans le champ
Pour mieux comprendre, voir les noms de chaque liste ou champ et revenir si besoin poser les questions.

A bientôt

http://www.cijoint.fr/cjlink.php?file=cj200811/cij3F8m3fK.xls
0
alainjjb Messages postés 771 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 5 février 2024 110
10 nov. 2008 à 19:07
Bonsoir Vaucluse,
quand tu me dis "Pour mieux comprendre ..." puis ensuite "Si tu ne comprends pas ..." et enfin "A bientôt" tu anticipes le fait que je ne vais pas comprendre. Je vois que tu commences à me connaitre depuis le temps.
Je vais malgré tout essayer.

ET probablement ... "à bientôt".

Alain
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 403 > alainjjb Messages postés 771 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 5 février 2024
10 nov. 2008 à 19:58
Re
Il n'y a pas de raison pour que tu ne comprennes pas... ce que je voulais simplement dire c'est que je préfére te laisser comprendre tout seul.
Car, comme effectivement je commence à te connaitre, je pense que c'est ce que tu souhaites.
Crdlmnt
0
alainjjb Messages postés 771 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 5 février 2024 110
10 nov. 2008 à 20:03
Re,

et comme prévu je n'ai pas compris grand chose. La complexité pour résoudre ce besoin pourtant au 1er abord "simple" vient-elle du fait que les produits doivent être triés ? Pourquoi n'utilises-tu pas le "FAUX" dans la fonction RECHERCHEV qui (c'est ce que j'avais compris) évite ce tri ? Les 1ères colonnes ajoutées sont-elles nécessaires pour le tri des lignes ?
Merci

Alain
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 403
10 nov. 2008 à 20:47
Re
Le faux ou le 0 dans la formule recherche reviennent exactement au même
Les colonnes ajoutées sont, dans cette solution indispensables car:
D'une part elle détecte le code qui commande le tri et incrémente le N° que la formule RECHERCHEV va utiliser pour renvoyer les lignes.
D'autre part la colonne qui affiche les n° sur les feuilles de renvoi sert de référence à la formule RECHERCHE. Toutefois, la formule de cette colonne est uyne figure de style, car cela marche (presque)aussi bien avec une liste fixe qui couvre le nombre de N° maximum à trouver. Mais dans ce cas, il est plus complexe d'éviter le #/NA quand la référence n'existe pas.
Pour ce soir, je n'ai palus le temps, mais je t'envoie demain un fichier avec plus d'explication.
En dernier lieu et pour la forme:
le résulat est il bien ce que tu voulais?

Bonne soirée.

PS:Pour Wilifried: évidemment la solution du tri est plus simple, mais elle est volatile et ne permet pas de tenir à jpour des feuilles en continu.
0
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 243
10 nov. 2008 à 20:09
Bonjour à tous

C'est beaucoup plus simple avec un tri et pourquoi pas une plage nommée glissante
mais c'est faisable sans tri avec une formule matricielle assez complexe mais pour cela, il faut un exemple de ton fichier

@ te lire
0
alainjjb Messages postés 771 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 5 février 2024 110
10 nov. 2008 à 20:59
Re,

Oui! Oui! c'est ce que je cherche. A vrai dire je ne croyais pas que la solution était aussi complexe.
Wilfried, tu peux proposer ta solution. Sur ce site toutes les propositions sont les bienvenues.

Bonne soirée et à demain

Alain
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 243
10 nov. 2008 à 21:51
re:

je vais essayer de te repondre, mais une formule matricielle se mont comme un puzzle
ton statut en feuil2 colonne E (c'est un exemple), ton code en A1 en Feil1

si(Feuil2!E2:E100=Feuil1!E1;ligne(E2:E100);9^9)
cette formule permet de creer une matrie qui donne soit : le n° de la ligne si la condition est bonne, soit 9 puissance 9 (valeur ultime)

il suffit, une fois la matrice créée, de prende les valeur une à une : Petite.valeur fera l'affaire
Petite.valeur(matrice,1) donne la plus petite valeur, petite.valeur(matrice,2) donne la 2eme ...etc
si tu mets ta formule en ligne 3, ligne() te donnera 3 don ligne()-2 te donnera 1 --> le niveau de ta petite valeur
petite.valeur(matrice,ligne()-2) te donnera le 1er chois de la matrice si ta formule est en ligne 3
résultat : petite.valeur(si(Feuil2!E2:E100=Feuil1!E1;ligne(E2:E100);9^9);ligne()-2)
en tirant vers le bas, te donne les différentes lignes ou se trouve ton code
maintenant il te faut trouver le renseignement : simple avec index
index(Feuil2!A:A;ligne) : te renvoie la valeur de la colonne A de la feuille 2, selon l'index donné (l'index est un n° de ligne) donc:
index(Feuil2!A:A;petite.valeur(si(Feuil2!E2:E100=Feuil1!E1;ligne(E2:E100);9^9);ligne()-2))
en tirant vers le bas, il te donnera les différentes valeurs de la colonne A de la Feuil2 correspondant au code
mais si tu tires trop bas, il va finalement te mettre une erreur (plus de code) valeur 9^9 du test précedemment cité
on va donc tester l'erreur
=Si(esterreur(index(Feuil2!A:A;petite.valeur(si(Feuil2!E2:E100=Feuil1!E1;ligne(E2:E100);9^9);ligne()-2)));"";index(Feuil2!A:A;petite.valeur(si(Feuil2!E2:E100=Feuil1!E1;ligne(E2:E100);9^9);ligne()-2)))


Voila mais je demande un peu d'indulgence, monter une formule matricielle sans exemple est tres complexe

derniere precision : une formule matricielle se valide par l'appui de 3 touches : Ctrl + Maj + Entrée
si la validation est correctement effectuée, de {} encadrent automatiquement la formule
il suffir ensuite de la tirer vers le bas

--c
Cordialement
Wilfried
0
alainjjb Messages postés 771 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 5 février 2024 110
11 nov. 2008 à 11:25
Bonjour,

Merci Wilfried, du coup la solution proposée par Vaucluse m'est apparue très simple. Je crois que les formules matricielles seront reportées à + tard.

Vaucluse je te transmets le tableau que j'ai réalisé à partir de tes 2 solutions.
Les 2 1ères feuilles correspondent à l'utilisation de "INDEX" et les 2 autres à l'utilisation de "RECHERCHEV".
Les 2 solutions répondent parfaitement au besoin.

--> https://www.cjoint.com/?llljbGlN7r

Merci et (probablement) à bientôt

Bonne journée

Alain
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 403
11 nov. 2008 à 11:49
Salut

Je me doutais un peu ...! :-)

j'ai regardé ton fichier et effectivement cela fonctionne;

Ceci dit, je pensais dans ma proposition que tu voulais deux tableaux, un avec Dispo et un avec Rupture, d'oiu la double colonne pour établir les recherches.. Mais ça n'a pas l'air d'être le cas.
Tu aurais donc pu faire plus simple:
Dans la feuille DATA2, une seule colonne suffisait, il suffisait de renvoyer en entête en A1 le nom que tu rentres en D2 dans la feuille sélection et le tableau se serait aligné sur ce nom avec une simple formule recherche, les codes de la colone A changeant suivant l'option retenue.
Ce n'est pas très grave, mais les formules seraient moins lourdes

En appartées:

1°) je pense que la formule INDEX /EQUIV te servira ultèrieurement souvent.Elle a le grand avantage sur rechercheV de permettre une recherche dans n'importe quelle colonne du champ
2°) je reviens à notre discussion initiale pour souligner que, contrairement à ce que tu disais, tu as très bien compris tout seul!
3°) il y a sans nul doute granb intêret à étudier la solution de Wilfried, mais là, j'avoue que je sèche un peu et que je m'en sors mieux avec le système D

Bien amicalement


0
alainjjb Messages postés 771 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 5 février 2024 110
11 nov. 2008 à 19:58
Bonsoir,
Vaucluse merci de ces précisions. Je viens de suivre ta proposition de simplification ... et ça fonctionne (moi qui était content de mes formules avec des SI imbriqués : y'a plus (... J'en ai quand même gardé une version).
Cordialement
Alain
0