Recherche de valeur dans une colonne | ||
---|---|---|
Inscription: 25/09/2011
Messages:
54
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 13-10-2012 17h12
Bonjour Didier, Le Forum, Je cherche la solution au problème suivant: rechercher une valeur de la colonne B dans la colonne A et s'il elle est trouvée, la placer en colonne C et dans le même ordre de classement qu'en B. (voir en PJ) Je galère grave depuis pas mal de temps, et à bout de force je fais appel à vous. Jean-Marie va sûrement trouver ! Cordialement. Turfman. |
|
|
Re: Recherche de valeur dans une colonne | ||
---|---|---|
Inscription: 09/05/2007
De Courcelles-les-Montbéliard
Messages:
286
Système d'exploitation: PC & Mac Version Excel utilisée: Mac 2004 - 2011, et PC 2003 - 2010 |
Posté le : 14-10-2012 10h32
Bonjour Turfman, Didier, le Forum
@+Jean-Marie Pour savoir si une valeur numérique existe dans une plage, il y a une fonction nommée NB.SI() =nb.si(C6:C25;E6) Si ceci vaut pour une seule valeur numérique, on peut le faire sur une suite de valeurs =NB.SI(C6:C25;E6:E25) Tu peux remarquer qu'il y a une correspondance entre les valeurs E6:E25 avec les valeurs retournées, elles sont ordonnées. Si l'on recherche dans cette plage retournée la position de la première valeur 1, on pourra l'associer avec la valeur de la plage E6:E25. Normalement, on devrait utiliser les valeurs de la fonction NB.SI dans une plage (ou tableau) intermédiaire et utiliser une autre cellule pour rechercher et retourner la valeur. Mais restons dans une formule unique qui retournera les valeurs voulues, même si cela va se compliquer.... Ensuite avec la fonction EQUIV on va rechercher la première égale à 1 et avec la fonction INDEX on retourne la valeur. Ce qui donne une formule avec 3 fonctions imbriquées. Validation par Ctrl+Shift+Entrer =INDEX(E$6:E$25;EQUIV(1;NB.SI(C$6:C$25;E$6:E$25);0);1);"") et écarter la première valeur déjà retournée. On pourrait le faire par une imbrication dans la fonction NB.SI =NB.SI(SI(NB.SI(G$6:G6;C6:C25)=0;C$6:C$25;"");E$6:E$25) Il faut donc utiliser une autre fonction pouvant retourner une suite de 0 ou de 1 et acceptant la partie conditionnelle. Cette fonction s'appelle FREQUENCE. Sans vouloir rentrer dans les détails du fonctionnement de cette fonction, il faut remplacer ce qui ne fonctionne pas par =FREQUENCE(SI(NB.SI(G$5:G5;C$6:C$25);"";C$6:C$25);(E:E;C:C)) En intégrant cette partie dans la fonction INDEX(...;EQUIV(1;...;0);1), voici la formule à mettre en G6, et à glisser vers le bas. =SIERREUR(INDEX(E$6:E$25;EQUIV(1;FREQUENCE(SI(NB.SI(G$5:G5;C$6:C$25);"";C$6:C$25);(E:E;C:C));0);1);"") trufman, j'espère que le développement de la construction de la formule te permettra de comprendre dans les essais infructueux que tu avais fait ce qui n'allait pas. Si tu as une incompréhension sur mes explications, n'hésite pas à me le dire, j'essayerai d'y apporter un éclaircissement. Si tu souhaites aussi voir la construction de la fonction INDEX(EQUIV()) avec la fonction des tableaux intermédiaires, pose moi la question. |
|
|
Re: Recherche de valeur dans une colonne | ||
---|---|---|
Inscription: 25/09/2011
Messages:
54
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 14-10-2012 12h21
Bonjour Jean-Marie, Didier, Le Forum, Tout d'abord Jean-Marie je te remercie infiniment pour le temps que tu as bien voulu consacrer pour traiter ma question. Comme d'habitude c'est nickel, tes explications sont toujours claires et précises et j'ai effectivement compris pourquoi je n'arrivais pas à finaliser ma formule. En effet la construction de la fonction INDEX(EQUIV()) avec la fonction des tableaux intermédiaires m'intéresse et comme tu me le proposes je vais te poser la question sur un autre fil de discussion. Je te renouvelle mes remerciements et crois moi, tu as ensoleillé ma journée. Bien cordialement. Turfman. |
|
|
Re: Recherche de valeur dans une colonne | ||
---|---|---|
Inscription: 09/05/2007
De Courcelles-les-Montbéliard
Messages:
286
Système d'exploitation: PC & Mac Version Excel utilisée: Mac 2004 - 2011, et PC 2003 - 2010 |
Posté le : 14-10-2012 18h08
Re...
Turfman, pour la compréhension de tout le monde, il est bon de rester sur le fil de départ. Pour ce qui d'une version en passant par des colonnes intermédiaires, voici deux possibilités. Dans un premier temps, ce que je n'avais pas remarquer avec ma première formule, c'est que tu as des doublons dans la plage E6:E25. cela va provoquer un problème, il faut donc neutraliser les valeurs ces doublons pour éviter de les avoir plusieurs fois dans la colonne G. On peut le faire de plusieurs manières. En voici une, formule à mettre en I6 et glisser vers le bas =SI(E6;SI(NB.SI(E$5:E5;E6);"";E6);"") =NB.SI(C$6:C$15;I6) Comme écrit dans mon premier poste, on utilise la fonction EQUIV ppur rechercher la position du premier 1 dans la plage. Formule en K6 =EQUIV(1;J6:J25;0) En formule à mettre en J7, et glisser vers le bas =EQUIV(1;DECALER(J$6:J$25;SOMME(K$6:K6););0) Avec la fonction INDEX on récupère la valeur, formule à mettre en L6 =SI(ESTNA(K6);"";INDEX(E$6:E$25;K6;1)) =SI(ESTNA(K7);"";INDEX(E$6:E$25;SOMME(K$6:K7);1)) Tu verras à la longue que le départ conditionne les fonctions que tu devras utiliser pour résoudre un problème. Rechercher la même valeur 1 pose des problèmes, et si l'on indexait la série de 0 et de 1 .... Voici une autre solution. Pour commencer à la fin de ton tableau B, met un " " (espace) en E26. Pour cette solution, on va repartir des valeurs de ton tableau B sans les doublons, donc ce qu'il y a dans la plage I6:I25. Formule en N5 et glisser vers le bas =SI(NB.SI(C$6:C$15;I6);LIGNE(A1);21) Ta plage de ton tableau B contient 20 lignes, et je t'ai fais mettre un espace la la 21 ligne de ce tableau, cette servira de gestion d'erreur. Pour ce qui est de la formule avec INDEX en Q6, et glisser vers le bas. =INDEX(E$6:E$26;PETITE.VALEUR(N$6:N$25;LIGNE(A1));1) La fonction LIGNE(A1) retourne le numéro de la ligne de la référence de la cellule. cela évite de changer l'incrément dans la fonction PETITE.VALEUR La fonction PETITE.VALEUR retourne la énième plus petite valeur de la plage en référence. Cela permet de faire un tri croissant... Turfman tu as donc deux solutions sans utilisation de formules matricielles. @+Jean-Marie |
|
|
Re: Recherche de valeur dans une colonne | ||
---|---|---|
Inscription: 04/09/2015
De France
Messages:
2
Système d'exploitation: PC Version Excel utilisée: 2010 |
Posté le : 04-09-2015 14h56
Bonjour, pour faire suite au problème posé , je voudrais le même mais pour une liste de noms propre et non des chiffres. Par contre j'ai déjà effectuer le problème de doublon.
Merci d'avance |
|
|
Re: Recherche de valeur dans une colonne | ||
---|---|---|
Inscription: 23/05/2008
De La Varenne Saint-Hilaire
Messages:
356
Système d'exploitation: PC Version Excel utilisée: 2010 |
Posté le : 05-09-2015 16h30
Bonjour ThierryB et bienvenue parmi nous,
Ta question n'est pas très explicite, sans doute devrais-tu ouvrir ton propre fil et déposer un petit fichier exemple de ce que tu cherches à faire, tu auras certainement plus de réponses.
A bientôt,
mth |
|
|
Re: Recherche de valeur dans une colonne | ||
---|---|---|
Inscription: 04/09/2015
De France
Messages:
2
Système d'exploitation: PC Version Excel utilisée: 2010 |
Posté le : 07-09-2015 10h40
Bonjour Mth
Ma question repose sur celle de ce fil ~~Recherche de valeur present dans les colonnes A et B résultat dans C.
Mais Ok, je vais préparer cela et créer un nouveau fil.
Merci |
|
|