Fonction index et decaler

  • Initiateur de la discussion renard
  • Date de début
R

renard

Guest
Bonjour,
je ne sais si quelqu'un pourra me répondre mais voilà mon problème,
j'ai créée une base de données dans laquelle j'ai introduit une fonction index et equiv pour trouver les données de client selon leur numéro, cependant dès que je rajoute un nouveau client, et donc une nouvelle ligne dans mon tableau, ma fonction index/equiv se cécale elle aussi d'une ligne... Aussi je me disais que je pourrais utiliser une fonction decaler mais il se trouve que je n'y arrive pas !!...
Voilà, j'espère que j'ai été claire !!
je vous remercie et si vous pouvez me répondre, n'hésitez pas !!

Julie


PS ma fonction index equiv est =Index($A$3:$L$12;Equiv($B$21;$A$3:$A$15;0);2)


Encore merci !!
 
M

Monique

Guest
Bonjour,

=INDEX(DECALER($B$3;0;0;NBVAL(A:A);1);EQUIV($B$21;DECALER($A$3;0;0;NBVAL(A:A);1);0))
Si tu as un titre de colonne en A2 :
=INDEX(DECALER($B$3;0;0;NBVAL(A:A)-1;1);EQUIV($B$21;DECALER($A$3;0;0;NBVAL(A:A)-1;1);0))
ou bien plus court :
=INDEX(DECALER($B$3;;;NBVAL(A:A)-1;);EQUIV($B$21;DECALER($A$3;;;NBVAL(A:A)-1;);0))
car tu n'as pas besoin de préciser
les 2 zéros (décalage de 0 ligne, décalage de 0 colonne)
ni le 1, qui est "largeur de 1 colonne"

A la rigueur, si tu veux garder dans ta formule les références du tableau,
tu peux écrire ceci, mais ça ne vaut pas le coup :
=INDEX(DECALER($A$3:$L$3;0;0;NBVAL(A:A);7);EQUIV($B$21;DECALER($A$3;0;0;NBVAL(A:A);1);0);2)
ou bien :
=INDEX(DECALER($A$3:$L$3;;;NBVAL(A:A);7);EQUIV($B$21;DECALER($A$3;;;NBVAL(A:A););0);2)
Dans ce cas, tu es obligée de rentrer dans ta formule
le 7, qui est la largeur du tableau en nb de colonnes
et le 2, car c'est dans la 2è colonne que tu cherches tes données.

Le plus simple serait de mettre ailleurs ton $B$21 et de faire ta recherche sur une plage plus longue.
Le $B$21 peut aller dans une autre feuille, en A1 par exemple
Tu donnes un nom à tes colonnes de données, "Numero" de A3 à A100 ou plus
"Client" de B3 à B100 ou plus si les noms sont en colonne B.
Ta formule, mise dans une autre feuille, devient :
=INDEX(Client;EQUIV(A1;Numero;0))
Et, en plus, la formule est plus facile à lire, donc à modifier.
 
R

renard

Guest
Waaaaaaaaaaaaoooooooooooooooooooooooouuuuuuuuuuuuuuuuuuuhhhhhhhhhhhhhhhhh !!!
merci de m'avoir répondu aussi rapidement c'est vraiment très sympa !
Malheureusement je crois que je n'ai pas compris la formule parce que ça ne marche pas je rajout une ligne et non ca se décale automatiquement !!
Je m'étais trompé d'ailleurs car ma case recherche était la E19 et nonpas la b21. Je me disais que le plus simple était de vous envoyer mon fichier.
C'est un cas pour un projet d'école donc il est en anglais et comme c'est une démo les noms ont été inventé (ils sont un peu bizarre).
La formule se trouve dans le fichier Client Database.
Voilà, si pouvez encore m'aider....

Julie
 

Pièces jointes

  • classeurjulie.zip
    0 bytes · Affichages: 156
M

Monique

Guest
Re,

Oui, mais... ton zip est vide, on ne peut plus poster de classeurs depuis hier.
Si tu rajoutes une ligne entre 2 lignes qui sont comprises dans la formule, la formule s'adapte, c'est peut-être ça que tu veux dire par "décalage" ?
La formule =SOMME(A1:A10) devient =SOMME(A1:A11) si tu insères une ligne entre les lignes 1 et 10.
Elle reste identique si tu ajoutes des données en A11, et A11 n'est pas pris en compte dans la formule.
 

Discussions similaires

Statistiques des forums

Discussions
314 190
Messages
2 106 995
Membres
109 734
dernier inscrit
JoFco