[Aide] "Array Formula" - Tri d'une plage nommée de cellules

Stakov

XLDnaute Nouveau
Bonjour à tous,

Après m'être arraché les cheveux je me décide finalement à vous demander de l'aide. Supposons le tableau de la capture suivante stocké dans une plage nommée (baptisée "tableau" pour l'occasion)

excel1.PNG

Ce que je cherche à faire, c'est créer une plage nommée (baptisée "tri") qui me filtre ce tableau sur un critère de la colonne A. Par exemple, si mon critère vaut "A", je veux que ma plage nommée tri contienne 4 lignes et les 3 colonnes suivantes :

excel2.PNG

Même si je connais le concept des formules matricielles, je n'arrive pas à les appréhender correctement. J'ai avancé dans mon problème sans pouvoir franchir la dernière étape !

Dans mon raisonnement,
1 - je parcours la colonne contenant le critère (plage nommée "col_crit", ici la colonne A de tableau) et je récupère le numéro de la ligne où se trouve le critère (plage nommée "crit")
Formule : =PETITE.VALEUR(SI(col_crit=crit;LIGNE(col_crit);"");LIGNE(INDIRECT("1:"&NB(SI(col_crit=crit;LIGNE(col_crit);"")))))
Dans le cas où crit=A, cette formule renvoie donc {1;6;7;10}

2 - en utilisant index je créée une nouvelle matrice composée de n lignes (n = occurences de crit dans col_crit) et du nombre de colonnes de tableau, et dans chaque ligne de cette matrice je renvoie les valeurs des cellules situées aux numéros de lignes de tableau récupérés par ma formule précédente.
Concrètement, dans le cas où crit=A, voici ce que je veux reproduire en formule matricielle :
excel3.png
avec en formule : =INDEX(tableau;$E22;F$21) pour la première cellule. J'ai donc la matrice avec les numéros de ligne, et celle avec les numéros de colonne peut se générer via un =ligne(indirect(1:3))

Ce sur quoi je bloque c'est la formule finale !

Pour moi le plus logique ce serait : =index(tableau;{1;6;7;10};{1;2;3}) mais ça ne genère pas de matrice comme je l'espérais...

Est ce que quelqu'un pourrait m'aider ?

Après, peut être que je n'aboutis pas car je suis parti dans la mauvaise direction, donc toute aide sera la bienvenue :)

J'ai mis en pièce jointe le fichier sur lequel j'ai fait les captures ci-dessus.

Merci beaucoup pour votre aide !
Stakov
 

Pièces jointes

  • excel1.PNG
    excel1.PNG
    5 KB · Affichages: 107
  • excel1.PNG
    excel1.PNG
    5 KB · Affichages: 114
  • excel2.PNG
    excel2.PNG
    1.6 KB · Affichages: 81
  • excel2.PNG
    excel2.PNG
    1.6 KB · Affichages: 80
  • Classeur1.xlsx
    12.3 KB · Affichages: 71
  • Classeur1.xlsx
    12.3 KB · Affichages: 68
  • Classeur1.xlsx
    12.3 KB · Affichages: 72
  • excel3.png
    excel3.png
    2.7 KB · Affichages: 89
  • excel3.png
    excel3.png
    2.7 KB · Affichages: 87
Dernière édition:

Stakov

XLDnaute Nouveau
Re : [Aide] "Array Formula" - Tri d'une plage nommée de cellules

Bonjour Hasco,

Effectivement si j'entre dans les cellules cette formule matricielle ça fonctionne bien !

Sauf que ce que je souhaite c'est l'entrer en tant que plage nommée, et là malheureusement ça ne donne rien.

J'ai tenté de modifier votre formule :
=INDEX(INDIRECT("A1:C10");PETITE.VALEUR(SI((INDIRECT("A1:C10")=crit);LIGNE(INDIRECT("$1:10")));LIGNE(INDIRECT("$1:10")));{1.2.3})

En me disant que je pourrai réécrire ensuite l'adresse de la plage tableau, mais déjà comme ça la formule me renvoie une matrice d'une seule cellule. :(
 

Stakov

XLDnaute Nouveau
Re : [Aide] "Array Formula" - Tri d'une plage nommée de cellules

Oui effectivement, en inscrivant la formule dans les cellules ca fonctionne.

Mais ce que je voudrais c'est inscrire la formule dans une plage nommée et pas dans un range de cellules, c'est là que je bloque :-(
 
Dernière édition:

Stakov

XLDnaute Nouveau
Re : [Aide] "Array Formula" - Tri d'une plage nommée de cellules

Je me permets de relancer, car ça me bloque vraiment pour la réalisation d'un fichier au boulot :(

Merci pour votre aide !

Pour rappel, le problème est ici de rendre cette formule fonctionnelle au sein d'une plage nommées (via gestionnaire des noms) :
=INDEX(A1:C10;PETITE.VALEUR(SI((A1:A10=$E$1);LIGNE ($1:10));LIGNE($1:10));{1.2.3})
 

Stakov

XLDnaute Nouveau
Re : [Aide] "Array Formula" - Tri d'une plage nommée de cellules

C'est desespérant... j'ai beau chercher sur le net une formule matricielle permettant de trier des données, je ne trouve d'application que sur 2 colonnes (1 de tri, et 1 de données), et que dans le cas où les formules sont inscrites dans les cellules directement et non dans le gestionnaire des noms.

J'ai pour l'instant une formule (légèrement modifiée de la version précédente)
=INDEX(tableau;PETITE.VALEUR(SI(col_crit=crit;LIGNE(col_crit));LIGNE(col_crit));{1.2.3})
(cf plage test4 dans le fichier ci-joint)

Lorsque je l'applique à une plage nommée, elle me renvoie qu'une valeur : la première cellule du résultat (donc A si mon critère est A, B si mon critère est B, ...). Je ne parviens pas à renvoyer toute la matrice de résultats.

Je continue mes recherches mais si une bonne âme pouvait me sortir de ce pétrin ce serait vraiment magnifique car je suis vraiment dans l'impasse :(
 

Pièces jointes

  • Classeur1.xlsx
    13 KB · Affichages: 94
  • Classeur1.xlsx
    13 KB · Affichages: 88
  • Classeur1.xlsx
    13 KB · Affichages: 98
G

Guest

Guest
Re : [Aide] "Array Formula" - Tri d'une plage nommée de cellules

Bonjour,

@staple;): Je plussoie. Très désagréable se cross posting sans en être averti.

@Stackov dernière tentative et dernière intervention de ma part pour cette discussion.

A+
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Tri et Import
Réponses
4
Affichages
163
Réponses
20
Affichages
499