Extraire les données de plusieurs cellules selon une condition

Bonjour.

Dans un tableur (je débute dans la bidouille, alors désolé si le travail que j'ai fait peut paraitre "grossier" à des initiés !), j'ai la question suivante pour faire apparaitre les noms/prénoms des élèves qui vérifient une condition précise.

Dans l'onglet Calculs, j'ai une série (de OO3 à ADZ10) qui m'indique le pourcentage de réussite à la compétence Comparer des suites de lettres. J'aimerais faire apparaitre dans un autre onglet (Détail classe selon groupes) les noms/prénoms des élèves pour lesquels le pourcentage de réussite est inférieur à une borne donnée (fixée en G6 de l'onglet Synthèse élève) puis ceux des élèves pour lesquels le pourcentage de réussite est compris entre ma première borne et une seconde (fixée en I6 de l'onglet Synthèse élève).

Mais je suis bien incapable de savoir comment faire

Alors merci par avance pour toutes les idées.

Guillaume

Bonjour grosgui,

Voyez si la solution proposée dans le fichier joint vous convient

Bonjour et merci pour la réponse.

Je regarde et j'essaie de comprendre.

Guillaume

Bonjour et bienvenue sur le forum

Bonjour à tous

Une autre approche, à tester;

Bye !

Bonjour grosgui,

C'est pas si compliqué :

Dans la feuille Calculs, je fais apparaître en lignes 108 et suivantes le numéro de colonne des élèves ayant un pourcentage inférieur ou égal à G6 de la feuille Synthèse élève. Cette valeur me sert de référence dans la fonction adresse en feuille Détail classe selon groupes, la valeur à renvoyer étant en ligne 2, mon adresse est complète. J'utilise la fonction indirect qui renvoie le contenu de la cellule à l'adresse calculée précédemment.

Dans la feuille Détail classe selon groupes, en colonne I de 27 à 33, s'affichent les numéros de lignes correspondantes au libellé de la colonne A dans la colonne B de la feuille Calculs. Ce numéro de ligne me sert de référence dans la fonction adresse de la feuille Calculs aux lignes 108 et suivantes pour aligner les résultats correspondants aux libellés de la colonne A de 27 à 33.

J'arrête là de peur de vous noyer d'explications inutiles

PS je me suis arrêté à la colonne AT de la feuille Calculs, les autres n'étant pas servies

Bonjour. Merci pour les explications, que j'essaie de suivre pas à pas et d'intégrer. Il y avait une toute petite incompréhension car les bornes ne sont pas tjs égales à la valeur de G6 de la feuille Synthèse mais j'ai modifié en conséquence.

En revanche, je ne comprends pas le -9 de la formule SI(ESTERREUR(PETITE.VALEUR(Calculs!$D108:$AT108;COLONNE()-9));"";INDIRECT("Calculs!"&ADRESSE(2;PETITE.VALEUR(Calculs!$D108:$AT108;COLONNE()-9));1))

Edit : Ah si, je crois que j'ai pigé ce -9, qui vient de la différence entre la colonne J et la colonne A ; c'est ça ?

Guillaume

Une autre approche, à tester;

Bye !

Bonjour et merci pour la réponse.

Aïe, une macro La solution ne va pas convenir, car mon fichier est à destination de collègues enseignants dont la plupart ne saura pas comment faire pour activer la macro. D'où l'idée de simplifier au maximum leur tâche, en leur confiant simplement le copier/coller de l'onglet initial.

Merci néanmoins pour avoir pris le temps de répondre à ma demande !

Guillaume

C'est pas si compliqué :

Dans la feuille Calculs, je fais apparaître en lignes 108 et suivantes le numéro de colonne des élèves ayant un pourcentage inférieur ou égal à G6 de la feuille Synthèse élève. Cette valeur me sert de référence dans la fonction adresse en feuille Détail classe selon groupes, la valeur à renvoyer étant en ligne 2, mon adresse est complète. J'utilise la fonction indirect qui renvoie le contenu de la cellule à l'adresse calculée précédemment.

Dans la feuille Détail classe selon groupes, en colonne I de 27 à 33, s'affichent les numéros de lignes correspondantes au libellé de la colonne A dans la colonne B de la feuille Calculs. Ce numéro de ligne me sert de référence dans la fonction adresse de la feuille Calculs aux lignes 108 et suivantes pour aligner les résultats correspondants aux libellés de la colonne A de 27 à 33.

Rebonjour. La solution me convient parfaitement, merci beaucoup !

J'ai une dernière question, qui concerne cette fois la condition du pourcentage supérieur à G6 et inférieur ou égal à I6 ; comment indiquer cette double condition ?

Edit : J'imagine que c'est SI(ET... ; je teste si c'est ok

Edit bis : =SI(ET(INDIRECT(ADRESSE('Détail classe selon groupes'!$J$27;COLONNE());1)>'Synthèse élève'!$G$6;INDIRECT(ADRESSE('Détail classe selon groupes'!$J$27;COLONNE());1)<='Synthèse élève'!$I$6);COLONNE();"") donne une solution satisfaisante a priori.

Merci d'avance pour la piste.

Guillaume

Bonjour grosgui,

Voilà, vous en avez pris possession,

Bonne continuation

Bonjour grosgui,

Voilà, vous en avez pris possession,

Bonne continuation

Bonjour.

Oui, j'aime bien gratouiller et les explications étaient suffisantes pour que je finisse par comprendre à peu près

J'ai juste un dernier souci (en rapport avec la demande précédente), c'est la gestion des absents. En effet, quand dans l'onglet Items figure ABS au lieu d'une donnée numérique, j'ai un #DIV/0! dans ma formule de la moyenne des cellules C3 et compagnie (je n'y avais pas pensé !), qui se reporte du coup dans les formules données de l'objet du post et aucune valeur ne s'affiche ensuite dans le résultat de =SI(ESTERREUR(PETITE.VALEUR(Calculs!$D108:$AT108;COLONNE()-9));"";INDIRECT("Calculs!"&ADRESSE(2;PETITE.VALEUR(Calculs!$D108:$AT108;COLONNE()-9));1))

Y a-t-il une solution pour gérer ce pb de ABS au lieu d'un nombre ? En tous cas une solution moins sauvage que celle qui consiste à ne pas copier/coller les résultats d'un élève qui a été absent

Merci d'avance.

Guillaume

Bonjour grosgui,

Il faudrait définir un code numérique pour définir "ABS", une note hors notation, 40 par exemple, quand moyenne = 40;"ABS",

donnerait : "ABS" au lieu de #DIV/0!

Bonjour grosgui,

Il faudrait définir un code numérique pour définir "ABS", une note hors notation, 40 par exemple, quand moyenne = 40;"ABS",

donnerait : "ABS" au lieu de #DIV/0!

Bonjour et merci de la réponse.

S'il faut que la manipulation soit faite par les collègues qui copient/collent les résultats dans l'onglet items, ça va poser un problème. Je pense que, plutôt que d'utiliser la fonction Moyenne, il vaudrait mieux que je la fasse "à l'ancienne", c'est à dire en utilisant Somme(mes cellules)/NBVAL(mes cellules). J'aurais un résultat nul qui ne causera pas d'erreur dans les formules suivantes. Alors, bien évidemment, l'élève absente apparaitra dans la liste des élèves du groupe des plus en difficulté, mais sa présence sera facilement écartable oralement lors du débriefing et n'empêchera pas l'affichage du nom des élèves du même groupe. Ça va fausser la moyenne de la classe, mais d'un tout petit peu comme le nombre d'absents est vraiment à la marge.

Penses-tu que cette solution soit "viable" ?

Guillaume

En tentant de mettre en oeuvre ce que je vous proposais, on se rend bien compte que ça prend des proportions monstrueuses

sur la seule feuille "Calculs" pour un seul élève avec des formules du style :

En AF78:

=SI(NB.SI($'A remplir'.AE78:AE81;"<40")=0;"ABS";SOMME.SI($'A remplir'.AE78:AE81;"<40";$'A remplir'.AE78:AE81)/NB.SI($'A remplir'.AE78:AE81;"<40"))

En AF82:

=SI(NB.SI($'A remplir'.AE82:AE85;"<40")=0;"ABS";SOMME.SI($'A remplir'.AE82:AE85;"<40";$'A remplir'.AE82:AE85)/NB.SI($'A remplir'.AE82:AE85;"<40"))

En AF98:

=SI(SOMME(NB.SI($'A remplir'.AE18:AE21;"<40");NB.SI($'A remplir'.AE78:AE81;"<40"))=0;"ABS";SOMME(SOMME.SI($'A remplir'.AE18:AE21;"<40";$'A remplir'.AE18:AE21);SOMME.SI($'A remplir'.AE78:AE81;"<40";$'A remplir'.AE78:AE81))/SOMME(NB.SI($'A remplir'.AE18:AE21;"<40");NB.SI($'A remplir'.AE78:AE81;"<40")))

En AF102:

=SI(SOMME(NB.SI($'A remplir'.AE22:AE26;"<40");NB.SI($'A remplir'.AE82:AE85;"<40"))=0;"ABS";SOMME(SOMME.SI($'A remplir'.AE22:AE26;"<40";$'A remplir'.AE22:AE26);SOMME.SI($'A remplir'.AE82:AE85;"<40";$'A remplir'.AE82:AE85))/SOMME(NB.SI($'A remplir'.AE22:AE26;"<40");NB.SI($'A remplir'.AE82:AE85;"<40")))

Du coup la viabilité de votre point de vue est aussi bonne et plus simple à mettre en pratique, s'imposer une refonte totale du fichier serait sûrement salvateur, peut-être même un "simple" TDC

Bonjour grosgui,

C'est pas si compliqué :

Dans la feuille Calculs, je fais apparaître en lignes 108 et suivantes le numéro de colonne des élèves ayant un pourcentage inférieur ou égal à G6 de la feuille Synthèse élève. Cette valeur me sert de référence dans la fonction adresse en feuille Détail classe selon groupes, la valeur à renvoyer étant en ligne 2, mon adresse est complète. J'utilise la fonction indirect qui renvoie le contenu de la cellule à l'adresse calculée précédemment.

Dans la feuille Détail classe selon groupes, en colonne I de 27 à 33, s'affichent les numéros de lignes correspondantes au libellé de la colonne A dans la colonne B de la feuille Calculs. Ce numéro de ligne me sert de référence dans la fonction adresse de la feuille Calculs aux lignes 108 et suivantes pour aligner les résultats correspondants aux libellés de la colonne A de 27 à 33.

J'arrête là de peur de vous noyer d'explications inutiles

PS je me suis arrêté à la colonne AT de la feuille Calculs, les autres n'étant pas servies

Bonjour.

Finalement, ce doit être plus compliqué que ce que je croyais et je n'ai pas tout intégré !

Les différentes formules fonctionnent parfaitement (merci encore une fois !) à condition que soit précisée la dernière colonne non vide de la feuille Calculs (AT dans les explications précédentes).

Or, a priori, on ne sait pas à l'avance combien de colonnes vont être remplies.

Par conséquent, dans les deux formules =SI(ESTERREUR(PETITE.VALEUR(Calculs!$D108:$AT108;COLONNE()-11));"";INDIRECT("Calculs!"&ADRESSE(2;PETITE.VALEUR(Calculs!$D108:$AT108;COLONNE()-11));1)) et =SI(ESTERREUR(PETITE.VALEUR(Calculs!$D117:$AT117;COLONNE()-11));"";INDIRECT("Calculs!"&ADRESSE(2;PETITE.VALEUR(Calculs!$D117:$AT117;COLONNE()-11));1)), il faudrait que le AT corresponde effectivement à la dernière colonne remplie, ce qui n'est pas nécessairement le cas et en cas de nombre plus élevés d'élèves, et donc de plus de colonnes remplies, les élèves des colonnes après AT n'apparaissent pas. En même temps, remplacer AT par OM (dernière colonne remplie au maximum dans le cas de 400 élèves) entraine l'effacement de tous les noms/prénoms qui s'étaient affichés.

Y a-t-il un moyen d'indiquer automatiquement, dans les deux formules précédentes, le nom de la dernière colonne remplie dans la feuille Calculs ?

Je coince !!!

Merci encore une fois de l'aide !

Guillaume

Bonjour grosgui,

Il faudra procéder par étapes

Pour enlever les #DIV/0! dans la feuille Calculs, utilisez en OM3 une formule du type

=SIERREUR(MOYENNE($'A remplir'.OL3:OL17);"")

La formule ci-dessous vous donnera le nombre de colonnes contigües remplies sur cette partie de ligne, le résultat est faussé dès qu'on laisse une cellule vide...

=COLONNE(INDIRECT(ADRESSE(LIGNE();NB.SI(D3:OM3;">0")+3;4;1);1))

Bonjour grosgui,

Il faudra procéder par étapes

Pour enlever les #DIV/0! dans la feuille Calculs, utilisez en OM3 une formule du type

=SIERREUR(MOYENNE($'A remplir'.OL3:OL17);"")

La formule ci-dessous vous donnera le nombre de colonnes contigües remplies sur cette partie de ligne, le résultat est faussé dès qu'on laisse une cellule vide...

=COLONNE(INDIRECT(ADRESSE(LIGNE();NB.SI(D3:OM3;">0")+3;4;1);1))

Bonjour et merci une nouvelle fois pour la réponse et la piste.

J'avais eu cette idée de remplacer les #DIV/0! par du vide mais je ne savais pas comment faire ; j'ai donc suivi votre idée de SIERREUR (mais plus avec la formule MOYENNE comme dit précédemment puisque j'ai modifié par SOMME(plage)/NBVAL(plage).

La suppression des #DIV/0! lève le problème et il est désormais possible d'indiquer la plage maximale dans la formule =SI(ESTERREUR(PETITE.VALEUR(Calculs!$D108:$OM108;COLONNE()-11));"";INDIRECT("Calculs!"&ADRESSE(2;PETITE.VALEUR(Calculs!$D108:$OM108;COLONNE()-11));1))

Plus aucun problème désormais et tout semble rouler

Merci beaucoup pour l'aide, c'était très gentil de votre part. Je vais tester en ajoutant d'autres élèves et, s'il n'y a pas d'erreurs, je fermerai le sujet !

Cordialement,

Guillaume

Bonjour grosgui,

Il faudra procéder par étapes

Pour enlever les #DIV/0! dans la feuille Calculs, utilisez en OM3 une formule du type

=SIERREUR(MOYENNE($'A remplir'.OL3:OL17);"")

La formule ci-dessous vous donnera le nombre de colonnes contigües remplies sur cette partie de ligne, le résultat est faussé dès qu'on laisse une cellule vide...

=COLONNE(INDIRECT(ADRESSE(LIGNE();NB.SI(D3:OM3;">0")+3;4;1);1))

Bonjour et merci une nouvelle fois pour la réponse et la piste.

J'avais eu cette idée de remplacer les #DIV/0! par du vide mais je ne savais pas comment faire ; j'ai donc suivi votre idée de SIERREUR (mais plus avec la formule MOYENNE comme dit précédemment puisque j'ai modifié par SOMME(plage)/NBVAL(plage).

La suppression des #DIV/0! lève le problème et il est désormais possible d'indiquer la plage maximale dans la formule =SI(ESTERREUR(PETITE.VALEUR(Calculs!$D108:$OM108;COLONNE()-11));"";INDIRECT("Calculs!"&ADRESSE(2;PETITE.VALEUR(Calculs!$D108:$OM108;COLONNE()-11));1))

Plus aucun problème désormais et tout semble rouler

Merci beaucoup pour l'aide, c'était très gentil de votre part. Je vais tester en ajoutant d'autres élèves et, s'il n'y a pas d'erreur, je fermerai le sujet !

Cordialement,

Guillaume

Rechercher des sujets similaires à "extraire donnees condition"