Récupérer l'adresse de la dernière colonne non vide pour l'insérer dans une formule (sans VBA)

grosgui

XLDnaute Nouveau
Bonjour à tous.

J'essaie (je débute alors c'est certainement pas très propre comme contenu !) de faire un fichier (en pj) à destination de mes collègues enseignants et je coince sur une fonctionnalité.

L'idée est d'afficher, dans la feuille "Détails classe selon groupe" les prénoms/noms d'élèves qui vérifient une condition donnée.
Pour cela, j'ai récupéré dans la feuille "Calculs" le numéro de colonne des élèves qui répondent à cette condition, avec la formule =SI(INDIRECT(ADRESSE('Détail classe selon groupes'!$J$27;COLONNE());1)<='Synthèse élève'!$G$6;COLONNE();"") et, avec =SI(ESTERREUR(PETITE.VALEUR(Calculs!$D108:$CU108;COLONNE()-11));"";INDIRECT("Calculs!"&ADRESSE(2;PETITE.VALEUR(Calculs!$D108:$CU108;COLONNE()-11));1)), j'ai ce que je souhaite.
Calculs!$D108:$CU108 est la page dans laquelle figurent tous les numéros de colonne ; mais CU108 n'est pas nécessairement la limite de cette plage car le fichier est fait pour traiter les résultats de 400 élèves (donc potentiellement jusqu'à OM108) et cette limite varie en fonction du nombre d'élèves dont les résultats sont entrés dans la feuille "A remplir" (je ne sais pas si je suis très clair
toine.gif
)

Dans la formule =SI(ESTERREUR(PETITE.VALEUR(Calculs!$D108:$CU108;COLONNE()-11));"";INDIRECT("Calculs!"&ADRESSE(2;PETITE.VALEUR(Calculs!$D108:$CU108;COLONNE()-11));1)), il faudrait donc que le CU108 s'adapte automatiquement en fonction de la dernière colonne non vide de la feuille "A remplir". Je pensais naïvement (lol) mettre OM108 à la place mais cela a pour conséquence de ne plus faire apparaitre un seul prénom/nom...

Merci d'avance pour les pistes et l'aide apportée.

Guillaume
 

Pièces jointes

  • EvaluationsCE1Francais400Essai2.xlsx
    1.1 MB · Affichages: 21

Jocelyn

XLDnaute Barbatruc
Bonjour le Forum,
Bonjour grosgui,

sans passer par VBA je ne vois qu'une solution, par formule matricielle. Ce qui donnerait en L2 de la feuille "Détail classe selon groupes" cette formule

Code:
=SI(ESTERREUR(PETITE.VALEUR(INDIRECT("Calculs!$D108:"&ADRESSE(108;MAX(SI(Calculs!A106:OM106>0;COLONNE($A1:$OM1)));3));COLONNE()-11));"";INDIRECT("Calculs!"&ADRESSE(2;PETITE.VALEUR(INDIRECT("Calculs!$D108:"&ADRESSE(108;MAX(SI(Calculs!A106:OM106>0;COLONNE($A1:$OM1)));3));COLONNE()-11));1))

Pour valider une formule matricielle il faut appuyé simultanément sur les touche CTRL, Maj (au dessus de CTRL) et entrée si la formule est bien validée excel va mettre { devant le signe égal et } à la fin de la formule ces signes ne doivent pas être tapés.

quelques exemple dans le fichier

mais attention vu le nombre de colonnes et de ligne sur lesquelles on travaille le temps de calcul va etre très long après la seule autre solution serait du VBA et la je passe la main car je suis une bille à ce jeu la

Cordialement
 

Pièces jointes

  • EvaluationsCE1Francais400Essai2.xlsx
    1.1 MB · Affichages: 20

grosgui

XLDnaute Nouveau
Bonjour le Forum,
Bonjour grosgui,

sans passer par VBA je ne vois qu'une solution, par formule matricielle. Ce qui donnerait en L2 de la feuille "Détail classe selon groupes" cette formule

Code:
=SI(ESTERREUR(PETITE.VALEUR(INDIRECT("Calculs!$D108:"&ADRESSE(108;MAX(SI(Calculs!A106:OM106>0;COLONNE($A1:$OM1)));3));COLONNE()-11));"";INDIRECT("Calculs!"&ADRESSE(2;PETITE.VALEUR(INDIRECT("Calculs!$D108:"&ADRESSE(108;MAX(SI(Calculs!A106:OM106>0;COLONNE($A1:$OM1)));3));COLONNE()-11));1))

Pour valider une formule matricielle il faut appuyé simultanément sur les touche CTRL, Maj (au dessus de CTRL) et entrée si la formule est bien validée excel va mettre { devant le signe égal et } à la fin de la formule ces signes ne doivent pas être tapés.

quelques exemple dans le fichier

mais attention vu le nombre de colonnes et de ligne sur lesquelles on travaille le temps de calcul va etre très long après la seule autre solution serait du VBA et la je passe la main car je suis une bille à ce jeu la

Cordialement

Bonjour Jocelyn et merci pour la réponse rapide.
Je vais regarder ça de plus près et, surtout, essayer de comprendre le pourquoi du comment !
Merci en tous cas pour l'aide !

Cordialement,

Guillaume
 

Discussions similaires

Statistiques des forums

Discussions
312 110
Messages
2 085 388
Membres
102 882
dernier inscrit
Sultan94