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
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
A voir également:
- Mettre la saisie d'une même ligne après une fonction si
- Fonction si et - Guide
- Aller à la ligne excel - Guide
- Se mettre hors ligne instagram - Guide
- Vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
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
16 févr. 2015 à 11:33
Bonjour
=INDEX(feuilX!B:B;EQUIV(3;FeuilX!C:C;0))
crdlmnt
=INDEX(feuilX!B:B;EQUIV(3;FeuilX!C:C;0))
crdlmnt
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
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
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
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
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é.
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é.
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
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.
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.
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
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?
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?
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
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)))
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)))
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
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
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
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
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
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
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
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.
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.
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
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
Je donne le lien du tableau :
https://docs.google.com/spreadsheets/d/1cGlNJ87-4h7OzYza2s1AoKZFEvkQzQ97-gT4xPmi8o4/edit?usp=sharing
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
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
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
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
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.
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.
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
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>.
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>.
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
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
https://www.cjoint.com/c/EBqtu06mIU2
crdlmnt
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
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.
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.
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
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
????
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
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
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.
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.
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
17 févr. 2015 à 10:52
Bien, alors je passe le sujet en résolu
bonne route
crdlmnt
bonne route
crdlmnt