Mettre la saisie d'une même ligne après une fonction si

Résolu/Fermé
Cannelle50 Messages postés 11 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 29 août 2016 - 16 févr. 2015 à 11:17
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 17 févr. 2015 à 10:52
Bonjour,

Sur une feuille excel (ici appelée feuilleX) , j'ai des noms en colonne B et des valeurs en colonne C.

Sur une autre feuille (feuilleY), je veux rechercher par exemple la valeur 3 en feuille X, colonne C et faire apparaître le nom de la colonne B sur la ligne correspondante.

J'en suis la, sachant que feuilleX!B:B ne fonctionne pas à la place des ?????

=si(feuilleX!C:C=3;?????;0)

J'espère avoir été compréhensible, merci pour votre lecture.
A voir également:

11 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
16 févr. 2015 à 11:33
Bonjour
=INDEX(feuilX!B:B;EQUIV(3;FeuilX!C:C;0))
crdlmnt
1
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 16/02/2015 à 12:26
Re
si vous ne trouvez pas:
=SI(INDEX(feuilX!D:D;EQUIV(3;FeuilX!C:C;0))<>1;"";INDEX(feuilX!B:B;EQUIV(3;FeuilX!C:C;0)))

crdlmnt

Errare humanum est, perseverare diabolicum
1
Cannelle50 Messages postés 11 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 29 août 2016
16 févr. 2015 à 12:04
Ça fonctionne merci beaucoup.

Maintenant disons qu'en colonne D j'ai simplement deux valeurs (1 ou 2) et je ne veux afficher le nom que si j'ai 1 en colonne D.

Je vais quand même essayer de trouver la solution de mon coté, merci de m'avoir débloqué.
0
Cannelle50 Messages postés 11 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 29 août 2016
Modifié par Cannelle50 le 16/02/2015 à 13:26
Ça fonctionne encore et j'étais loin d'être sur la bonne piste.

Par contre je me suis aperçu que je n'avais rien compris à ce que je faisais en commençant la colonne B de ma feuille Y.

Sur celle ci je veux afficher le nom si la valeur en feuille X colonne D est 2.

J'ai remplacé de <>1 par <>2 et ça me donne une case blanche.

Encore merci pour votre aide.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
16 févr. 2015 à 14:23
re
et pourtant, la formule dit que la valeur de B ne ressort pas quand la valeur de D est différente de 2.
Comment l'avez vous écrite?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cannelle50 Messages postés 11 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 29 août 2016
16 févr. 2015 à 14:37
La formule adaptée à mon tableau dévie un peu de la formule de la formule évoquée dans ma question.

En colonne A, j'ai:
=if(index(Horodateur!C:C;MATCH(1;Horodateur!D:D;0))<>1;"";INDEX(Horodateur!B:B;MATCH(1;Horodateur!D:D;0)))
Cela fonctionne.

En colonne B, j'ai:
=if(index(Horodateur!C:C;MATCH(1;Horodateur!D:D;0))<>2;"";INDEX(Horodateur!B:B;MATCH(1;Horodateur!D:D;0)))
Cela ne fonctionne pas

Pour revenir à la formule déjà évoquée, cela reviendrai à ça en colonne B:
=SI(INDEX(feuilX!D:D;EQUIV(3;FeuilX!C:C;0))<>2;"";INDEX(feuilX!B:B;EQUIV(3;FeuilX!C:C;0)))
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
16 févr. 2015 à 14:54
çà mérite plus de précision,là
combien avez vous de ligne avec 1 ou 2 en D?
Parce que avec ce type de code, vous ne ressortirez jamais que la première du tableau
la formule était là pour détecter la valeur 3 dans la colonne B et 2 dans la colonne D
mais si vous n'avez que la colonne D a détectée, pas la peine de faire tout ça:

INDEX(Horodateur!B:B;MATCH(2;Horodateur!D:D;0))

parce qu'avec ce que vous avez écrit, vous éliminez d'abord tout ce qui n'est pas 2 en D et ensuite vous allez y chercher 1.
Normal que ça ne fonctionne pas.

c rdlmnt
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 16/02/2015 à 15:18
.... maintenant, pour conclure par acquis de conscience, car j'ai un doute :
s'il s'agit de remplir un tableau avec des valeurs de B feuilX si la valeur de D de la même ligne est 2, il suffit d'écrire si feuilX commence en ligne 1

=SI(feuilX!D1=2;FeuilX!B1;"")

et de tirer l'ensemble vers le bas.

vous aurez alors la valeur de Feuil1 b affichée sur chacune des lignes ou D est égal à 2

crdlmnt

... et si ça ne va toujours pas;, mettez un exemple de votre fichier avec un exemple des résultats attendus sur ce site:
https://www.cjoint.com/
et revenez coller ici le lien donné par le site.



Errare humanum est, perseverare diabolicum
0
Cannelle50 Messages postés 11 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 29 août 2016
16 févr. 2015 à 15:16
J'ai remplacé le 3 par 1 pour la ligne 1.

En ligne 3 j'ai ceci:
=if(index(Horodateur!C:C;MATCH(3;Horodateur!D:D;0))<>1;"";INDEX(Horodateur!B:B;MATCH(3;Horodateur!D:D;0)))
Et ainsi de suite, cela fonctionne très bien pour toute la colonne.

Sur ce tableau réel, j'ai des nom en colonne B, 1 ou 2 en colonne C et une valeur entre 1 et 15 en colonne D.

Les colonnes C et D sont donc inversées par rapport à l'exemple initial.

Ça devient difficile à suivre mais dans ma première question Je n'avais pas parlé de la colonne C, c'est pour ça que j'ai fais comme si elle n'existait pas et que j'ai mit la D en C dans mon exemple.
0
Cannelle50 Messages postés 11 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 29 août 2016
16 févr. 2015 à 15:57
La ça ne tiens pas compte des valeurs en C.

Je donne le lien du tableau :

https://docs.google.com/spreadsheets/d/1cGlNJ87-4h7OzYza2s1AoKZFEvkQzQ97-gT4xPmi8o4/edit?usp=sharing
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
16 févr. 2015 à 17:40
Bon
je ne peux pas travailler sur votre fichier avec google, mais je peux vous expliquer ce qui ne va pas et vous donner une solution simple.
ce qui ne va pas:
vous recherchez 1 ou 2 en C avec le n° de base en D. Mais la formule de recherche quelle qu'elle soit vous renverra toujours la 1° valeur de C trouvée, et donc ne peut pas fonctionner quand vous avez deux fois le même N° de base.
On devrait pouvoir travailler sous Excel avec une formule matricielle, mais je ne suis pas sur qu'elle fonctionne sous googledrive.

Donc je vous propose, pour faire simple:(version excel à traduire)

feuille horodateur, colonne E, la formule à tirer sur la hauteur: utile:

=C1&"_"&D1

qui va vous composer le N° de C, underscore et N° de D

et sur la feuille Tableau des attaques

en B3
=INDEX(Horodateur!$B:$B;EQUIV(1&"_"&$A3;Horodateur!$E:$E;0))

(le A3 deviendra A4 ect et vous évitera de changer le N° de réf à chaque ligne, il suffira de tirer la formule vers le bas)

et pour éviter le #N/A deux options
celle qui doit fonctionner "tous types":

=SI(ERREUR(INDEX(Horodateur!B:B;EQUIV(1&"_"&A3;Horodateur!E:E;0));"";INDEX(Horodateur!B:B;EQUIV(1&"_"&A3;Horodateur!E:E;0)))

et celle qui fonctionne sous excel à partir de 2007
=SIERREUR(INDEX(Horodateur!B:B;EQUIV(1&"_"&A3;Horodateur!E:E;0));"")

et bien sur en C3, la même formule avec 2"_"&$A3 pour éditer les 2

Par ailleurs, on peut faire ça sans la colonne E de horodateur, mais il faut que google accepte les formules matricielles et le fonctionnement sera un peu plus lourd
En Execl ce serait cette formule qui doit être entrée avec la touche Enter en maintenant touches ctrl et shift enfoncées (elle se retrouve entre accolades dans la barre de formule):

=INDEX(Horodateur!A:A;INDEX(1&"_"&A3;Horodateur!C:C&"_"&Horodateur!D;D";0))




c rdlmnt
0
Cannelle50 Messages postés 11 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 29 août 2016
16 févr. 2015 à 17:57
Ok merci, j'avais mit un ami sur le tableau aussi qui m'a répondu des choses du genre:

La fonction Index nécessite que la colonne soit triée, car la recherche y est "dichotomique", et pas séquentielle.

En clair, c'est compliqué de mettre deux fonctions index sur la même ligne, il y a des interférences entre les deux.

D'ailleurs si je vide la première colonne, la seconde fonctionne.

Je ne vais pas pouvoir m'en occuper ce soir mais j'ai la semaine et je suis motivé donc je m'y remet dès demain matin.

Je vous dirais si cela fonctionne.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 16/02/2015 à 18:34
en fait non, la colonne INDEX ne nécessite pas d'être triée; Par contre la fonction EQUIV(MATCH) l'exige si vous ne complétez pas le code par;0)

EQUIV(valeur; champ) ressort le rang e la valeur dans le tableau si celui ci est classé en ordre croissant et si la valeur n'y est pas, sélectionne celle qui est directement inférieure.
EQUIV(Valeur;champ;0) ressort le rang de la valeur quelque soit le classement mais renvoie #N/A si la valeur n'existe pas.

Je répète par contre l'origine de votre problème: quand vous cherchez 1 dans la colonne C, c'est toujours celui de la 1° ligne ou se trouve 1 qui ressort>.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
16 févr. 2015 à 19:12
.....................voila pour conclure une illustration de ma proposition, en Excel, si jamais vous pouvez la lire
https://www.cjoint.com/c/EBqtu06mIU2
crdlmnt
0
Cannelle50 Messages postés 11 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 29 août 2016
17 févr. 2015 à 10:23
Oui, j'ai pu la lire.

En théorie, cela fonctionne parfaitement, encore merci.

Le souci c'est qu'en pratique, si l'on rempli un formulaire, une nouvelle ligne s'insère sur la feuille horodateur et la fonction ET n'est pas copiée en colonne E.

A première vue ça n'avait pas l'air compliqué à corriger mais j'ai fais une recherche après avoir échoué et finalement si c'est compliqué. Ça parle de VBA, ce qui je crois n'est pas fais faisable sur un autre tableur qu'excel.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
17 févr. 2015 à 10:31
Bonjour
????
comprend pas le problème?Il suffit de "pré-équiper", la colonne E sur la hauteur utile minimum
en fait il suffit de sélectionner en E une cellule "équipée", de cliquer sur la croix en bas à droite et de tirer sur la hauteur utile? non?
mon modèle descend déjà jusqu'à la ligne jaune, reste plus qu'à l'emmener ou vous voulez.
maintenant il y aune autre solution sur Excel, mais je ne sais pas sur google:
sélectionnez le champ de horodateur déjà rempli de formule et insérer un tableau. Dans cette option, la formule va se créer chaque fois que vous entrez une nouvelle valeur entre A et D.
VBA n'a rien à faire la dedans.

crdlmnt
0
Cannelle50 Messages postés 11 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 29 août 2016
17 févr. 2015 à 10:50
J'ai fais autrement en mettant la colonne C"_"D sur autre feuille.

L'insertion de lignes liées au formulaires ne posent ainsi plus de problèmes.

Le tableau est maintenant fonctionnel :)

Je vous remercie pour le temps accordé et toutes ces solutions apportées.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
17 févr. 2015 à 10:52
Bien, alors je passe le sujet en résolu
bonne route
crdlmnt
0