PB "pas d'erreur" avec INDEX

Bonjour,

je sais que ce n'est pas du VBA, mais j'ai un soucis avec INDEX.

INDEX renvoie la valeur d'une cellule qui se trouve à l'intersection d'une ligne et d'une colonne, appartenant à une matrice.

Dans le fichier ci-joint :

j'ai écrit 4 cas possibles avec des valeurs de ligne et de colonnes à 0 et 1, soit

ligne 0 et colonne 0

ligne 0 et colonne 1

ligne 1 et colonne 0

ligne 1 et colonne 1

Normalement INDEX devrait me renvoyer une valeur d'erreur pour trois des 4 cas et "LRD" (au vu du fichier) pour le quatrième cas.

Qui pourrait me l'expliquer ?

Merci par avance.

@ bientôt

LouReeD

bonjour

=INDEX($A$1:$C$7;0;0) renvoie une erreur parce que les 2 derniers arguments de INDEX() ne peuvent pas être zéro.

dans les autres cas, si la cellule de destination est vide, revoie zéro

Bonjour,

j'ai l'impression que la formule a été validé alors que la sélection était multiple,

ce qui fait que la plage E1:E7 est une matrice.

si on copie la cellule E7 vers la cellule E1 la formule retourne LRD

par contre si on copie E7 vers E8 la formule retourne #VALEUR!

j'en conclue que E8 est en dehors de la matrice.

Bonjour jmd,

en fait je comprend que =INDEX($A$1:$C$7;0;0) renvoie une erreur car dans la matrice il n'y a pas de ligne = à 0 n'y de colonne

je comprend que =INDEX($A$1:$C$7;1;0) renvoie une erreur car il y la référence "colonne" qui n'est pas bonne car = à 0

je comprend que =INDEX($A$1:$C$7;1;1) renvoie "LRD" car à l'intersection de la première ligne (1) et de la première colonne(1) il y a bien une cellule avec "LRD" en valeur

ce que je ne comprend pas c'est que =INDEX($A$1:$C$7;0;1) ne renvoie pas d'erreur car la ligne 0 dans la matrice n'existe pas, alors une erreur #VALEUR! devrait être affichée, non ?

En fait moi dans ce cas je voudrais que ça affiche #VALEUR!

Comment la fonction peut "décider" de retourner "0" alors qu'il y a manifestement une erreur de valeur de numéro de ligne ?

@ bientôt

LouReeD


Bonjour sabV,

non, non, les formules ont été écrites une par une sans matrice, la matrice est la zone colorée à gauche, de là j'écris 4 formules, et pour moi INDEX devrait retourner une erreur dans 3 cas sur les 4 fournis car il y a au moins une erreur de valeur de numéro de ligne et/ou de colonne dans ces trois cas.

Le quatrième cas fonctionne bien, à l'intersection de la ligne 1 et de la colonne 1 on a bien une cellule dont la valeur est "LRD"...

Merci

@ bientôt

LouReeD

Bonjour,

tu pourrais écrire la formule de cette façon, cela ne change rien

=INDEX($A$1:$C$7;;1)

renvoyer la valeur d’une cellule ou d’une matrice de cellules spécifiée forme matricielle

Si l’argument matrice comporte plusieurs lignes et plusieurs colonnes et que seul l’argument no_lig ou no_col est utilisé, la fonction INDEX renvoie une matrice des valeurs de la ligne ou de la colonne entière de la matrice.

no_lig Obligatoire. Sélectionne la ligne de la matrice dont une valeur doit être renvoyée. Si l’argument no_lig n’est pas spécifié, l’argument no_col est obligatoire.

no_col Facultatif. Sélectionne la colonne de la matrice dont une valeur doit être renvoyée. Si l’argument no_col n’est pas spécifié, l’argument no_lig est obligatoire.

OK,

si valeur colonne "bonne" alors peu importe si le numéro de ligne est en dehors de la matrice ?...

Comment produire l'erreur alors ?

@ bientôt

LouReeD

re

en effet, il est étrange que INDEX ne traite pas le zéro de la même manière selon qu'il soit en argument ligne ou colonne

si tu sors de la plage avec un argument trop grand il y a erreur, en ligne comme en colonne.

Salut LouReed,

Faut se replonger dans l'Aide... !

Regarde sur ton fichier...

bonjour

explication de tulipe

pour le 4eme exemple : c'est incroyable mais le resultat depend de ou est placée ta formule (oui mossieur)

7lou-reed.xlsx (10.46 Ko)

cordialement

MFerrand bonjour,

En fait je ne veux pas trouver "LRD" à chaque fois...

J'aimerais qu'INDEX m'indique une erreur si l'argument ligne = 0 ou égal à rien...

Comme dit jmd, les sortie de matrice sont "gérées" par les erreurs #VALEUR! mais la ligne =0 ou rien est "transformée" en "0" si l'argument colonne est cohérant...

Là je ne voit pas, surtout que j'ai un fichier qui "fonctionne" bien...

J'ai beau copier coller la source de ce fichier, mais rien n'y fait, sur mon fichier j'ai un "0" au lieu d'une erreur...

Alors ? une idée ?

Je pourrais très bien désosser le fichier qui fonctionne pour ne garder que la partie des INDEX qui m'intéresse, mais le problème n'est pas là, comment ce fait-il qu'INDEX retourne "0" au lieu de #VALEUR! ?

A vos tablettes !

@ bientôt

LouReeD


Bonjour tulipe_4,

ok pour l'exemple, mais ce n'est pas ce que je cherche à obtenir... Mais c'est tout de même curieux qu'en demandant une ligne n°0 dans index on se retrouve avec la valeur de la cellule de la colonne 1 de la matrice à la ligne où se trouve la formule !!!!

Bref, je n'aime pas ne pas réussir à reproduire une formule...

@ bientôt

LouReeD

Re,

Une fonction retourne #VALEUR! quand le calcul ne peut aboutir... Si elle renvoie 0 c'est que le calcul peut se faire !

Tulipe te l'a illustré autrement !

Mets une valeur quelconque en A7, la formule en E7 renverra cette valeur !

Si tu la valides matriciellement par contre (ce que j'ai fait) elle renvoie la première de la matrice.

Et dans les cas où elle te renvoie l'erreur, l'erreur disparaît si tu valides matriciellement.

INDEX est une fonction quelque peu multiforme..

Bonjour,

il y a encore pire,

si l'argument matrice contient une seule colonne,

on peut ne pas inscrire l'argument ligne ou colonne.

faite le test:

=INDEX($A$1:$A$7;)

le résultat dépend de l'emplacement de la formule.

aussi, si les arguments, ligne ou colonne, sont en dehors de la matrice : l'erreur est #REF!

Ok ok ok, vous m'expliquez ce qui se passe sur mon fichier, ça j'ai compris, mais moi je veux une erreur !

En général c'est l'inverse mais là c'est une erreur que je cherche !

Il ne me reste plus qu'à désosser le fichier source pour garder la feuille où INDEX fonctionne comme souhaité...

Merci et @ bientôt

LouReeD

re

et si tu disais pourquoi tu veux une erreur ?

tester la valeur colonne et la valeur ligne avant de les injecter dans INDEX peut-il suffire ?

Bon en fait j'ai suivi un tuto, indiqué par waard.

J'ai beau retourner l'affaire dans tous les sens, sur le fichier du tuteur ça marche, sur le mien non :

6labyrinthe.xlsm (22.91 Ko)

@ bientôt

LouReeD

Bonjour,

la matrice est V6:AJ20

l'argument no lig peut être entre -1 et 6

l'argument no col peut être entre -1 et 17

les formules sont placées dans la plage F3:L9

des fois on est dans la matrice, d'autre fois on est en dehors.

c'est presque une gymnastique chinoise!

SquareMap, la matrice d'INDEX va de V6 à AJ20 sur la feuille Edit MAP du fichier du tuteur

Le numéro de lignes et de colonnes peuvent elles être négatives, = à 0 ou ou supérieur à 0 au niveau du tableau allant de F3 à L9 sur la feuille EX 2.

C'est là le problème avec ma version, sur la sienne le "0" en ligne engendre bien une erreur d'INDEX, sur la mienne c'est un 0 voir même un 1 qui est retourné ce qui me fait une ligne "en dehors" du Maze qui ne représente rien et qui devrait affiché "##"...

@ bientôt

LouReeD

Bonsoir

et merci à vous tous pour m'avoir éclairé !!!

En fait la solution vient de ... tilipe4 !

explication de tulipe

pour le 4eme exemple : c'est incroyable mais le resultat depend de ou est placée ta formule (oui mossieur)

en fait vu que la fonction INDEX revoie une valeur "quelconque" de la ligne où elle se trouve et qui correspond à la matrice, il suffit de créer un décalage de cette formule par rapport à la matrice afin qu'une erreur soit détecté et non pas "contournée"...

Voir fichier joint :

5labyrinthe.xlsm (30.42 Ko)

même matrice, mais les formules ne sont pas à la même hauteur, dans le cas "jaune" INDEX avec erreur correspond à une ligne de la matrice, dans le cas "vert" il n'y a pas de correspondance...

Donc maintenant ça marche, j'ai le résultat escompté !

@ bientôt

LouReeD

sabV a écrit :

c'est presque une gymnastique chinoise!

salut Mferrand

chinoise metropolitaine (oui mossieur)

cordialement

Rechercher des sujets similaires à "pas erreur index"