LOOKUP mais sur une plage de données non fixe... ?
Bonjour à tous,
Est-il possible d'utiliser une valeur "NbLignes" (calculée, contenue dans une cellule et qui varie) comme paramètre pour le Range de recherche de la fonction LOOKUP ?
En fait, j'arrive très bien à utiliser cette fonction avec la formule suivante :
=LOOKUP(A1,B1:B10,C1:C10)
Donc, je recherche la valeur qui est dans A1 dans la colonne B et je retourne la valeur correspondante qui se trouve dans la colonne C.
Par contre, certaines fois dans le même fichier je dois analyser 10 lignes (comme c'est le cas là), et parfois je dois analyser plus ou moins de lignes...
Je connait le nombre de lignes à analyser (10 ici mais ça pourrait être 500 ou 4..)
Y a-t-il un moyen de "paramétriser" le fameux 10 de ma formule pour qu'il varie et s'adapte automatiquement en fonction de la loongueur du range à analyser ?
J'ai essayé de mettre un range plus grand mais bon si le range contient des cellules vides la formule retourne 0...
Votre aide serait la bienvenue, là je me tape la modif "en dur" à chaque fois que le range est modifié (en fait c'est des jours à analyser donc selon la période demandée (de 1 mois à 2 ans...) ça fait long long long...
Merci à tous !
Bonjour,
Essaie ceci : =VLOOKUP(A1,B1:C10,2,0)
Il y a moyen de paramétrer la longueur de la plage par une formule (nommée ou non), mais lorsqu'il y a des cellules vides ce n'est pas évident.
Il faudrait que tu précises si la valeur en A1 est numérique ou alphabétique.
Bonjour et merci pour cette réponse.
ERn fait j'ai un peu simplifié pour énnoncer le "problème"...
La valeur en A1 est le résultat d'une concaténation de 2 valeurs prises dans 2 cellules : un alphabétique et un texte. On a donc des valeurs du style "ABC390887" ou "CDE3900889" etc... comme valeur dans A1.
Par rapport à votre proposition je suis quand même bloqué, car même en passant par un VLOOKUP je ne sais pas comment lui dire de chercher une fois sur B1:C10 lorsque j'ai 10 lignes et sur B1:C500 lorsque j'en ai 500..
Je peux via un count avoir cette valeur (10 ou 500 ou x), je cherche "juste" à réussir à l'utiliser comme valeur "variable" dans ma formule LOOKUP.
Pour les cellules vides, en fait si j'arrive à ajuster justement le LOOKUP à ce range je ne rencontrerai pas de cellules vides (car le range sera pile poil à la taille du nombre de lignes remplies) et le tour serait joué..
Re,
Comme tu travailles avec une version US, il me semble préférable de te joindre un fichier avec les explications, les formules étant automatquement traduites.
OK j'ai recrée en simplifiant un peu le cas dans un fichier Excel...
https://www.excel-pratique.com/~files/doc/LOOKUP_vairable.xls
Mon fichier Excel est utilisé dans un programme externe (Xcelsius) et ne sert qu'à "remplir dynamiquement" selon le choix de l'utilisateur (le produit en B1) une plage de données (E2:F32), laquelle est affichée graphiquement (pour illustrer j'ai planté un graphique dans les feuilles).
On a donc un graphique qui affiche ce que l'on a dans la plage de données E2:F32, et qui varie selon le choix du produit en B1 (A, B ou C).
Tout ce qui se trouve "en bas" de ma page est issu des bases de données. Si mes queries ne portent plus sur 31 jours mais sur 10 (voir la feuille 2 rouge) alors la formule du lookup (F2:F32) ne fonctionne plus (car on recherche sur un range trop grand, qui avait été calculé en fonction des 31 jours de la query précédente...
La formule est la suivante :
=LOOKUP(D2,$I$37:$I$129,$F$37:$F$129)
Je recherche donc la valeur D2 dans le range D37:D129 (la valeur est D2 unique dans ce range) et je retourne la valeur de la colonne F correspondante. Donc si j'ai 31 jours * 3 produits le range sera de D37 à D129 (93 jours), et la formule est :
=LOOKUP(D2,$I$37:$I$129,$F$37:$F$129)
par contre dans le cas de 10 jours on a un range qui est de 3*10 = 30 jours donc de D37 à D66 et la formule devient :
=LOOKUP(D2,I37:I66,F37:F66)
Comme la fameuse valeur (93 ou 30) peut 'etre calculée facilement et déposée dans une cellule (B5) je cherche à adapter la fonction Lookup de cette manière :
= LOOKUP(D2,I37:I(37+B5),F37:F(37+B5))
et là bingo c'est le bonheur absolu je vous paie un café
Possible à votre avis ???
PS : bien entendu, comme j'utilise ce fichier dans Xcelsius, j'ai une série d'impératifs quant aux formules compatibles, etc... donc je cherche à modifier la formule LOOKUP plutôt que de toutreconstruire...
re,
J'ai jeté un coup d'oeil à ton fichier, pas simple à comprendre pour un non initié !
En E2 tu mets dans ton commentaire : ... réagir à la modification de la cellule A1
A1 est du texte, ne serait-ce pas B3 ?
Ce serait bien volontiers que je t'aiderais à écrire une formule, mais sur base d'un petit exemple simple, car là vraiment ...
Salut,
oups désolé je n'avais pas vu ta réponse.
en fait le graphique (donc ses données) réagit au changement du produit en B1 (et pas en A1). Tu verraas sur le fichier excel que si tu changes le produit, le graphique montre l'évolution de ce produit spécifique sur la durée)
J'ai mis le fichier "compliqué" (mais déjà bien plus simple que l'original
Pour résumer :
le résultat de mes queries me donne un range plus ou moins "long" en nombre de lignes.
Sur la base de cette longueur (nombre de lignes dispos en B5) je voudrais avoir une formule du style :
= LOOKUP(D2,I37:I(37+B5),F37:F(37+B5))
merci beaucoup dre de prendre du temps pour moi
Est-ce que je suis clair ou est-ce que je dois créer un exemple plus simple ???
Re,
Essaie en E2 :
=INDEX(F$37:INDIRECT("F"&37+B$5),MATCH(D2,I$37:INDIRECT("I"&37+B$5),0))
formule à copier vers le bas
Ciao Dre,
bon je t'attend au café comme promis !!!!
J'ai testé rapidos ça semble fonctionner "universellement" !!
Je vais analyser tout ça parce que je suis pas trop au clair avec le matche t index mais ça devrait le faire (au début j'avais modifié toutes mes formules avec le match et index car Xcelsius semblait incompatible avec LOOKUP)...
T'es un as, merci beaucoup de ton aide très précieuse !
sucre ? Lait ??
Je suis comme les hollandais, quand c'est gratuit je prends tout !
AAARRRGGGHHHH üüü
Après avoir modifié tout mon fichier Excel avec succès, j'ai lancé Xcelsius qui me dit que INDIRECT n'est pas supporté !!!
Dre tu saurais me faire la même formule mais sans la fonction INDIRECT ?
Pfff quelle déception !!!!!!!!!!!!!!!!!!!!!!
PS : je suis en train de chercher du côté de la fonction DECALER (offset) si jmais ...
Bonjour,
Je ne connais pas Xcelsius, donc diffcile !
Puisque tu essaies avec la fonction DECALER, c'est que ce programme supporte cette fonction.
Essaie ceci :
=INDEX(F$37:OFFSET(F37,B$5,),MATCH(D2,I$37:OFFSET(I37,B$5,0),0))
Salut grand chef,
bon alors ta formule fonctionne impec... sur Excel.
Une fois dans Xcelsius, malgré le fait que toutes les fonctions soient reconnues, il semble que la formule ne passe pas ! !! !
J'ai testé et c'est bien cette formule qui pose problème pour mon Xcelsius !
Alors bon tu as déjà trouvé 2 solutions (MERCI MERCI MERCI) mais bon je suis toujours bec dans l'eau...
Si une solution alternative te passe par la tête ben... je suis preneur
Je joint un fichier Excel qui liste les diverses fonctions supportées (enfin en principe....)
Merci encore
https://www.excel-pratique.com/~files/doc/supported_functions.xls