Renvoi de valeur selon date

Bonjour,

Je m'en remets une nouvelle fois à vous... je coince sur une partie de fonction ... je souhaite transférer des données d'une feuille à l'autre en les reliant à ma nouvelle table par la date. J'ai donc choisi d'utiliser la fonction NB.SI qui me permet cette correspondance le problème que je rencontre réside dans la partie valeur si vrai... Je n'arrive pas à renvoyer la bonne cellule . le fichier en PJ se fera certainement mieux comprendre que moi ... vous y trouverai la fonction en A3 de la feuille BD NA.

en vous remerciant pas avance!!!

DR

99renvoi-cell.xlsx (190.87 Ko)

Bonjour,

Pas certain d'avoir compris ce que tu cherches

En B3, essaie peut-être

=SIERREUR(INDEX(BD!$B$2:$K$50;EQUIV($A3;BD!$A$2:$A$50;0);EQUIV(B$2;BD!$B$1:$L$1;0));"NA")

... A condition que chaque date de la colonne A ne figure qu'une fois au maximum dans la feuille BD

Bonjour,

Ou encore avec la fonction colonne() à mettre en B3 et tirer à droite et en bas :

=SIERREUR(INDEX(BD!$B:$K;EQUIV($A3;BD!$A:$A;0);COLONNE(D$1));"NA")

Mais quelle rapidité sur ce Forum c'est un truc de fou!!!

Vous avez bien compris mon problème c'est exactement ce que je cherche. Cependant vu que j'essaie de progresser pourriez-vous me décomposer vos formules svp que je m'imprègne du raisonnement.

En tout cas un grand MERCI à vous deux !!!!!

Re-bonjour,

Salut Theze

Ou encore avec la fonction colonne()

En effet! J'avais cru voir (à tort!) que l'ordre des colonnes variait d'une feuille à l'autre

La fonction SIERREUR() contrôle si la formule retourne une valeur d'erreur si c'est le cas, le second argument sera retourné par la fonction (ici, "NA") si pas d'erreur, le résultat de la formule sera retourné.

La fonction INDEX() retourne la valeur située à l'intersection de la ligne et de la colonne passées en argument. La fonction retourne une valeur d'erreur si la ligne ou colonne ou même les deux sont hors plage (par exemple, plage avec 10 lignes et dans l'argument 11 ou plus est demandé)

La fonction EQUIV() effectue la recherche dans la zone (ici, colonne A de la feuille BD) et si trouvé, retourne le numéro de ligne. C'est elle qui va retourner une valeur d'erreur (ce qui est ton cas pour certaines valeurs) si ce qu'elle cherche n'est pas trouvé !

La fonction COLONNE() retourne le numéro de colonne, si la fonction ne reçois par d'argument, c'est le numéro de la colonne où se trouve la fonction qui sera retourné par contre, si l'argument est passé (elle attend une cellule, colonne entrière ou plage) elle effectue un décalage par rapport à cet argument donc, en mettant D1, la fonction retourne le numéro de la colonne D et non celle où elle se trouve, exemple, tu mets la fonction Colonne() sans argument dans une cellule de la colonne A, la fonction retourne 1 si dans l'argument tu mets D1, elle retourne 4 ce qui effectue un décalage. Tu peux aussi entrer D:D mais tu peux aussi entrer une plage mais garde à l'esprit que ce sera toujours la colonne la plus à gauche de la plage qui servira de référence.

En espérant t'avoir aidé à mieux comprendre

U. Milité

OK donc si j'ai bien compris

=SIERREUR(INDEX(BD!$B:$K;EQUIV($A3;BD!$A:$A;0);COLONNE(D$1));"NA")

signifie :

si la formule qui suit est fausse, afficher "NA" sinon prendre la valeur de la cellule se trouvant dans la feuille BD dans la plage de colonnes de B à K. Dans cette plage la valeur se trouve à la ligne où la valeur de A3 est présente dans la colonne A de la feuille BD (0?)mais aussi à la colonne de la valeur D1.

C'est pareil, mais en presque français donc plus compliqué non?

malgré le bon exemple, j'ai encore un peu de mal avec la notion de décalage de la fonction colonne...

Mais dans l'ensemble j'ai compris je me coucherai moins bête ce soir

Je vous remercie pour les explications!! au top!!

En très court, si Equiv() trouve, elle retourne le numéro de ligne, à partir de ce numéro de ligne, Index() va chercher la valeur qui se trouve au numéro de colonne indiqué par rapport à la colonne de référence qui est la colonne la plus à gauche (ici colonne B).

En ce qui concerne Colonne() je vais simplifier (enfin, j'espère). Comme la plage dans Index() va de B à K, et que tu veux la valeur située en colonne E (la 5 ème), cette colonne se trouve donc en 4 ème dans la plage B à K d'où la référence à la colonne D qui est la quatrième colonne à partir de A maintenant, le plus simple, tu définis la plage de A à K et au lieu de mettre D1, tu mets E1 de cette façon, tu va mieux comprendre !

HAAAAA ok je comprends mieux !!!! Merci pour vos explications !!!!!

Rechercher des sujets similaires à "renvoi valeur date"