Excel - formule de remplacement à recherchev

Résolu/Fermé
dinin70 Messages postés 18 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 30 novembre 2015 - Modifié par dinin70 le 9/01/2012 à 13:55
dinin70 Messages postés 18 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 30 novembre 2015 - 9 janv. 2012 à 15:36
Bonjour,


J'aimerais bien vous demander de m'aider à construire une formule dans Excel. Je vous explique ce que je recherche.

Je cherche une sorte de vlookup / match / offset mais aucun ne fonctionne parce que la "lookup value" <>0 n'existe pas. En détail.

Supposons ces données

.............A...........................B.......................C
.......Quantité restante......Prix d'achat.........Date valeur
1..........10.........................100................01.01.2012
2..........20.........................110................03.01.2012
3..........15.........................105................10.01.2012


Ce que j'aimerais serait une formule qui me dise en somme: "montre moi le prix d'achat de la première ligne dont la valeur "quantité restante" ne soit pas égale à 0.

Dans ce cas ci il me montrerait un prix d'achat de 100 vu qu'il me reste en Quantité restante 10 contrats de la première ligne.

Si je vends 15 contrats je vais donc liquider les 10 pemières positions achetées à 100 et 5 autres positions achetées à 110 le 3 janvier, mon tableau sera alors:

.............A...........................B.......................C
.......Quantité restante......Prix d'achat.........Date valeur
1..........0...........................100................01.01.2012
2..........15.........................110................03.01.2012
3..........15.........................105................10.01.2012


La formule que je cherche me montrera un prix d'achat 110: elle regardera dans colonne "quantité restante", voit que pour la première ligne la valeur est à 0 donc ne me montrera pas un prix d'achat à 100. La formule descendra et vu que dans la deuxième ligne il y a bien une quantité restante différente de 0, elle me montrera "110".

Pour visualiser ce dont j'ai besoin, mon problème serait résolu directement si la formule suivante était reconnue dans Excel: vlookup/recherchev (<>0;A:B;2;FALSE)

Mais <>0 n'existe pas. J'ai donc besoin d'une formule de remplacement. J'ai tout essayé avec des match et des offset mais ça ne fonctionne pas...

Pourriez-vous m'aider s'il vous plait?

Merci d'avance.
A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 janv. 2012 à 14:21
Bonjour
ligne 1: étiquette reste, prix

=INDEX(B:B;MIN((SI(A2:A8<>0;LIGNE(A2:A8)))))
Formule matricielle à valider par « ctrl+maj+entrée » (et non directement par « entrée »), le curseur clignotant dans la barre de formule; Excel encadre alors automatiquement la formule par des {}
0
dinin70 Messages postés 18 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 30 novembre 2015
Modifié par dinin70 le 9/01/2012 à 14:44
Le "SI" fonctionne correctement... C'est INDEX qui rate, pourtant je ne vois pas pourquoi: dans "ligne" de la formule index il a bien la ligne correspondant à la première ligne sans une valeur de 0. Bref, le SI montre bien le numero de la ligne avec valeur <>0, mais insérée dans INDEX ça met REF...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 janv. 2012 à 14:47
Avant de te proposer une solution, dis toi bien que j'ai vérifié si ça marchait

0
dinin70 Messages postés 18 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 30 novembre 2015
9 janv. 2012 à 14:54
Je suppose en effet... Etant donné que chez moi le INDEX, pour une raison méconnue, ne fonctionne pas, j'ai essayé avec Offset, ce qui fonctionne très bien!

Merci beaucoup pour ta solution! Sans toi je n'aurais jamais connu cette formule avec le MIN((SI.

Si quelqu'un a le même problème que moi avec l'INDEX, voici la formule en Anglais;

=OFFSET(B1;MIN((SI(A2:A8<>0;LIGNE(A2:A8))))-ROW(B1);0)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 janv. 2012 à 15:05
t'es sûr des points-virgule, de SI et de LIGNE en anglais ?
et es tu sûr qu'il ne s'agisse pas d'une matricielle ?
0
dinin70 Messages postés 18 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 30 novembre 2015
9 janv. 2012 à 15:36
En effet c'est ROW et IF et non LIGNE et SI. J'avais copy/paste la formule MIN((SI de ton post!

=OFFSET(B1;MIN((IF(A2:A8<>0;ROW(A2:A8))))-ROW(B1);0)

Après pour le point virgule c'est mon Excel qui est comme ça, chez certains c'est une virgule qui sépare les fonctions dans une formule chez d'autres (dont moi) c'est un point-virgule. Peut-être ça provient du décimal et milliers, en Europe c'est 1.000,10, sur mon ordi anglophone c'est 1,000.10 qui pourrait avoir une incidence sur les formules. Bref! Ce qui compte c'est que ça fonctionne :))
0