Excel - formule de remplacement à recherchev

Résolu
dinin70 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
dinin70 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention  
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention  
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention  
 
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