Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/01/2012, 18h27   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
Par défaut Recherche dans un tableau

Bonjour.
Je souhaiterai savoir s’il existe une solution à mon problème avec des formules sans devoir passer par une macro VBA que je ne maitrise pas du tout !!
J’ai un tableau. Dans la colonne A la référence des produits finis.
Dans les colonnes B C D E les composants qui rentrent dans la composition de ces produits.
Je souhaiterai retrouvé à l’aide d’une formule, tous les produits finis lorsque j’entre le nom d’un composant.
Exemple :
Composant 1 Composant 2 Composant 3 Composant 4
Produit A E F G J
Produit B G I F L
Produit C I E K F


Dans une cellule j’entre le composant E pour retrouver les produits A et C dans 2 autres cellules.
Si je cherche F je dois retrouver A B et C dans 3 autres cellules.
Merci de votre aide.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 20h29   #2
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 700
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 700
Points : 1 460
Points : 1 460
Bonjour,

Voici une solution simple qui te permet de visualiser les produits finis qui contiennent le composant recherché.
Ces produits finis sont signalés par une Mise en Forme Conditionnelle (remplissage de la cellule en rouge) en utilisant une formule pour déterminer pour quelles cellules le format sera appliqué.

Formule =SOMMEPROD((B2:E2=$G$2)*1)
S’applique à la plage $A$2:$A$4.

Cordialement.
Fichiers attachés
Type de fichier : xls Test.xls (38,0 Ko, 11 affichages)
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 25/01/2012, 20h38   #3
Membre expérimenté
 
Homme
Enseignant
Inscription : novembre 2009
Messages : 350
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : novembre 2009
Messages : 350
Points : 500
Points : 500
Bonjour à tous,

En supposant que tes données sont saisies dans la plage A1:E4, les noms des produits dans A1:A4 et les composants dans B1:E4... La valeur cherchée de l'un des composants dans la cellule G1, une formule matricielle (à valider par CTRL+MAJ+ENTREE) est peut être une solution:
Code :
=SIERREUR(INDEX($A$1:$A$4;PETITE.VALEUR(SI($B$1:$E$4=$G$1;LIGNE($A$1:$A$4));LIGNE($A1)));"")
puis la reproduire vers le bas...

Cordialement
hben1961 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2012, 21h19   #4
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
Bonsoir et tout d'abord merci de votre aide à tout les 2.
J'ai testé les 2 procédures.
La première avec les couleurs fonctionne parfaitement. J'ai simplement rajouté ceci :
Code :
=SI($Q$2="";"";SOMMEPROD((B2:L2=$Q$2)*1))

La deuxième fonctionne très bien dans l'onglet ou se trouve le tableau mais je n'arrive pas à la faire fonctionner dans une autre feuille que celle ou se trouve les données. Celle-ci m'intéresse mais comment procéder svp?
Par contre pour valider une formule matricielle il faut appuyer sur CTRL+SHIFT+ENTREE.
La touche MAJ verrouille les majuscules et ne fonctionne pas. C'est juste pour informer les visiteurs du forum.
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 22h17   #5
Membre expérimenté
 
Homme
Enseignant
Inscription : novembre 2009
Messages : 350
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : novembre 2009
Messages : 350
Points : 500
Points : 500
Bonjour à tous,

Pour que la formule fonctionne dans un autre onglet que celui qui contient les tableaux, on ajoutera le nom de l'onglet devant les deux plages $A$1:$A$4 ; $B$1:$E$4 de la formule qui deviendra (en supposant que l'onglet qui contient les tableaux se nomme Feuil1):
Code :
=SIERREUR(INDEX(Feuil1!$A$1:$A$4;PETITE.VALEUR(SI(Feuil1!$B$1:$E$4=$G$1;LIGNE($A$1:$A$4));LIGNE($A1)));"")
Une autre idée en nommant les deux plages, par exemple on nommera par "Plage1" la plage $A$1:$A$4 et par "Plage2" la plage $B$1:$E$4 (le nom de l'onglet des deux plages s'ajoutera automatiquement à ces deux références) et la formule redeviendra:
Code :
=SIERREUR(INDEX(Plage1;PETITE.VALEUR(SI(Plage2=$G$1;LIGNE($A$1:$A$4));LIGNE($A1)));"")
En ce qui concerne les touches MAJ (Français) et SHIFT (Anglais, on peut aussi avoir CAPS) ou même une Large Flèche dirigée vers le haut, elles désignent la même touche... Celle qui désigne le verrouillage du clavier en majuscules c'est la touche : Verr MAJ ou CAPS LOCK ou un Cadenas... Voir le lien suivant pour plus de précisions: http://fr.wikipedia.org/wiki/Disposi..._informatiques

Cordialement
hben1961 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 22h22   #6
Candidat au titre de Membre du Club
 
Inscription : juin 2011
Messages : 122
Détails du profil
Informations forums :
Inscription : juin 2011
Messages : 122
Points : 13
Points : 13
Pour la 2ème procédure qui m'intéressait davantage voici comment j'ai modifié la formule :
Code :
=SIERREUR(INDEX(BASE!$A$1:$A$1500;PETITE.VALEUR(SI(BASE!$B$1:$H$1500=$A$4;LIGNE(BASE!$A$1:$A$1500));LIGNE(BASE!$A1)));"")
Elle fonctionne mais elle est différente de celle que tu proposes pour la fin. Pourquoi STP?
Fred4345 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 23h04   #7
Membre expérimenté
 
Homme
Enseignant
Inscription : novembre 2009
Messages : 350
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : novembre 2009
Messages : 350
Points : 500
Points : 500
Bonjour,

La formule que tu proposes peut être simplifiée en :
Code :
=SIERREUR(INDEX(BASE!$A$1:$A$1500;PETITE.VALEUR(SI(BASE!$B$1:$H$1500=$A$4;LIGNE($A$1:$A$1500));LIGNE($A1)));"")
Et c'est une formule matricielle, la partie LIGNE($A$1:$A$1500) est une matrice de nombres de 1 à 1500 (numéros de lignes), et avec la condition BASE!$B$1:$H$1500=$A$4 va se créer une matrice de 7*1500 = 10500 éléments (le 7 est le nombre de colonnes de B à H et le 1500 est le nombre de lignes), les éléments de cette nouvelle matrice sont : FAUX (au cas où la condition n'est pas satisfaite) ou des numéros de lignes (les cas où la condition est satisfaite)... La fonction PETITE.VALEUR donnera la plus petite valeur de la matrice d'ordre 1 désignée par Ligne($A1) (Avec le chiffre 1 qui change en reproduisant la formule vers le bas)... Ce qui sera le numéro de ligne utilisé par la fonction INDEX pour donner la valeur de la cellule (correspondante à cette ligne désignée) de la plage BASE!$A$1:$A$1500...

La simplification faite sur la formule n'a aucun effet sur le bon fonctionnement de la formule...

En espérant que cette modeste explication soit satisfaisante...

Cordialement
hben1961 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h48.


 
 
 
 
Partenaires

Hébergement Web