IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Grande valeur après une recherche verticale [XL-2003]


Sujet :

Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 680
    Points : 148
    Points
    148
    Par défaut Grande valeur après une recherche verticale
    Bonjour à tous,
    J'ai en colonne A : Prénom
    J'ai en colonne B, C et D : Les notes des élèves
    Je souhaiterai retrouver la meilleure note de chaque élève après avoir fait une recherche verticale de son prénom sur la colonne A.
    J'ignore pourquoi en H8 la formule suivante ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GRANDE.VALEUR(RECHERCHEV(G8;A1:D3;2;FAUX):RECHERCHEV(A10;A1:D3;4;FAUX);1)
    Bien évidemment, la cellule G8, qui se trouve dans un second tableau, est une cellule où figure un des prénoms des élèves.
    D'avance merci beaucoup pour la correction de ma formule.
    bolide7

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 946
    Points : 28 946
    Points
    28 946
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici une réponse parmi d'autres et je suis convaincu qu'il doit y avoir mieux avec une fonction matricielle.
    Dans l'exemple ci-dessous, les Noms des élèves en A2:A6 et les notes B2:B6 et sur la feuille nommée Feuil2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GRANDE.VALEUR(INDIRECT("Feuil2!" &  ADRESSE( EQUIV(G2;Feuil2!$A$2:$A$6;0)+1;2) & ":" & ADRESSE( EQUIV(G2;Feuil2!$A$2:$A$6;0)+1;4));1)
    Si la liste commence ligne 1 au lieu de ligne 2, il y a lieu d'enlever les deux constantes +1 qui sont soulignés et en gras dans le code.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    Bonjour bolide
    Ta formule n'est pas la plus adaptée, je n'ai pas compris pourquoi il y a un A10 qui apparait, mais même en n'utilisant que G8, elle ne convient pas
    celle là fonctionne, il s'agit d'une formule matricielle que tu doit valider avec ctrl maj entrée
    =MAX(INDEX(A1: D4;EQUIV(G8;A1:A4;0);0))
    bon dimanche
    ps : enlever l'espace entre A1: et D4 sinon, j'ai un smyley qui apparait A14

  4. #4
    Membre expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Points : 3 554
    Points
    3 554
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous,
    bolide
    Comme alsimbad, je ne comprends pas ce que vient faire la cellule A10 dans la première formule donnée.
    =GRANDE.VALEUR(RECHERCHEV(G8;A1: D3;2;FAUX):RECHERCHEV(A10;A1: D3;4;FAUX);1)
    On pourrait penser à
    =GRANDE.VALEUR(RECHERCHEV(G8;A1: D3;2;FAUX):RECHERCHEV(G8;A1: D3;4;FAUX);1)
    Mais même cette formule ne peut pas fonctionner.
    La syntaxe de la fonction employée est de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GRANDE.VALEUR(réf1:réf2;1)
    réf1 et réf2 sont les références (relatives ou absolues) des cellules délimitant ici la plage de notes qui nous intéressent.
    Or la fonction RECHERCHEV renvoie non pas les références d’une cellule mais son contenu ; cela coince donc obligatoirement.
    A côté des solutions déjà proposées, une autre utilisant la fonction DECALER.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MAX(DECALER($A$1;EQUIV(G8;$A$1:$A$3;0)-1;0;1;COLONNES($A$1:$D$3)))
    ne nécessitant pas de formule matricielle mais bien moins élégante et concise que la formule d’ alsimbad .
    Merci à lui de m’avoir fait découvrir que les formules matricielles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {= INDEX(plage;n;0)}
    {= INDEX(plage;0;n)}
    permettaient d’obtenir respectivement la ligne n et la colonne n complètes d’une plage donnée.
    Cordialement
    Claude

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 680
    Points : 148
    Points
    148
    Par défaut
    Bonjour à vous trois et à tous les autres,
    Merci beaucoup pour vos nombreuses réponses.
    Le A10 est une erreur de ma part rectifiée par alsimbad. C'était bien G8, mais cela ne change rien (ça ne fonctionne).
    Pardon à corona, j'ai seulement utilisé les 2 plus courtes, qui fonctionnent toutes les 2.
    Merci à papouclo pour ces explications entre référence et contenu.
    Une dernière précision : En réalité mon tableau de données contient bien plus de colonnes de notes que les 3 colonnes de l'exemple et je souhaiterai ignorer les données des deux premières colonnes colonnes B et C.
    Quelle modification est a apporter dans vos formules ?
    D'avance merci.
    Bon dimanche, malgré le 2 - 0.
    bolide7

  6. #6
    Membre expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Points : 3 554
    Points
    3 554
    Billets dans le blog
    1
    Par défaut
    Re
    En supposant que la colonne comportant les dernières notes de la classe soit la colonne M et qu’il y ait 35 élèves dans cette classe et en notant choixprénom la cellule G8 utilisée par tout le monde dans les premières propositions, il faudrait dans les formules utilisant INDEX (resp. DECALER) remplacer la cellule D4 (resp. D3) par M35 et la cellule A4 (resp. A3) par A35.
    Si les colonnes B, C ne comportent aucune donnée numérique (y compris date) , il n’ y a ,je pense, pas besoin d’autres modifications et les formules deviennent
    avec INDEX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {=MAX(INDEX(A1:M35.EQUIV(choixprénom ;A1 :A35 ;0) ;0))}
    avec DECALER
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MAX(DECALER($A$1;EQUIV(choixprénom ;$A$1:$A$35;0)-1 ;0;1; COLONNES($A$1:$M$35)))
    Si les colonnes B, C contiennent des renseignements numériques (dates, nombres quelconques…), il vaut mieux limiter la plage de recherche en remplaçant A1:M35 par D1:M35 dans la formule utilisant la fonction INDEX et dans la formule utilisant la fonction DECALER en remplaçant :
    … ;EQUIV (………)-1 ;0 ;1 ; COLONNES($A$1:$M$35) par … ;EQUIV (………)-1 ;3 ;1 ; COLONNES($D$1:$M$35)
    Cordialement
    Claude

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 680
    Points : 148
    Points
    148
    Par défaut
    Merci beaucoup papouclo,
    Tes explications sont vraiment enrichissantes et surtout très pédagogiques.
    Avec un tel professeur, mes connaissances en formules EXCEL viennent de faire un réel bond en avant.
    J'ai fait avec DECALER, qui n'est pas une formule matricielle et qui permet d'éviter la saisie Ctrl + Maj + Entrée.
    Le problème est donc résolu.
    Encore merci beaucoup.
    Très bonne soirée.
    bolide7

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Recherche de la plus grande valeur correpondant à une clé
    Par blepy dans le forum Excel
    Réponses: 3
    Dernier message: 26/09/2012, 08h25
  2. WSS - Valeur calculée d'après une recherche
    Par Socki dans le forum SharePoint
    Réponses: 7
    Dernier message: 06/05/2009, 14h02
  3. Création d'un etat apres une recherche
    Par jojo57 dans le forum Access
    Réponses: 10
    Dernier message: 15/05/2006, 10h27
  4. Récupérer les données après une recherche
    Par cdumas dans le forum Access
    Réponses: 7
    Dernier message: 04/05/2006, 12h09
  5. raffraichir un formulaire après une recherche
    Par ormoy28 dans le forum IHM
    Réponses: 10
    Dernier message: 10/02/2006, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo