XL 2010 Extraire et ordonner des valeurs

  • Initiateur de la discussion Initiateur de la discussion Studebaker
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Studebaker

XLDnaute Nouveau
Bonjour,

Tout nouveau sur le forum, je ne sais sans doute pas encore bien chercher les réponses à mes questions, aussi je viens vous exposer mon problème, espérant que je m'y prends comme il faut (et comptant sur toute votre indulgence !).
Je souhaiterais à partir d'une table de données comportant de très nombreuses cellules vides (valeurs nulles), extraire les cellules non vides en les classant par ordre croissant et en leur associant l'en-tête de colonne leur correspondant.
La formule PETITE.VALEUR() me semblait tout à fait appropriée pour cela, mais voilà : en cas de doublon, ça coince...
Les valeurs sont bien extraites (ex : 4 | 5 | 5 | 7 | 9...) comme je le souhaite, mais lorsque je leur applique un INDEX/EQUIV pour récupérer l'en-tête, je n'obtiens que celle de la première occurrence (ie : la même pour les deux 5).
C'est certainement un "cas d'école" mais je rame un peu à trouver la solution (nb : Excel 2010 + j'aimerais si possible éviter les TCD et les VBA).
Je vous joins un fichier qui vous parlera peut-être plus que mes mots (!).

Un très grand merci d'avance pour vos éclairages !
 

Pièces jointes

Solution
Bonsoir @studebak,

En N2, mettre la formule matricielle:
VB:
=SIERREUR(PETITE.VALEUR($B2:$K2;COLONNES($M:N)/2);"")

En M2, mettre la formule matricielle:
Code:
=SIERREUR(INDEX($1:$1;ARRONDI(1000*(PETITE.VALEUR(SI($B2:$K2<>"";$B2:$K2+(COLONNE($B2:$K2))/1000;"");COLONNES($M:N)/2)-N2);0));"")

Copier la plage M2:N2 sur le O2:V2 puis M2:V2 sur M3:V11.

Si vous désirez quelques éclaircissements, me le faire savoir.
Bonsoir @studebak,

En N2, mettre la formule matricielle:
VB:
=SIERREUR(PETITE.VALEUR($B2:$K2;COLONNES($M:N)/2);"")

En M2, mettre la formule matricielle:
Code:
=SIERREUR(INDEX($1:$1;ARRONDI(1000*(PETITE.VALEUR(SI($B2:$K2<>"";$B2:$K2+(COLONNE($B2:$K2))/1000;"");COLONNES($M:N)/2)-N2);0));"")

Copier la plage M2:N2 sur le O2:V2 puis M2:V2 sur M3:V11.

Si vous désirez quelques éclaircissements, me le faire savoir.
 

Pièces jointes

Dernière édition:
Un très grand merci pour la rapidité et l'efficacité de ta réponse !!!
Cela fonctionne parfaitement.
Peux-tu me dire néanmoins ce qu'il faudrait modifier dans les formules (j'ai un doute) si les cellules vides ont en réalité la valeur zéro (masquée via le menu Options par exemple) ?
D'autre part, et puisque tu le proposes gentiment, je veux bien en effet que tu m'expliques un peu le principe général (notamment celui de cet ARRONDI() que tu utilises).
Merci infiniment pour ton aide une nouvelle fois.
 
Bonjour @Studebaker,

Concernant le zéro:
  • la formule considère 0 comme tout autre nombre et non pas comme une cellule vide
  • Si les zéros ne sont affichés, on ne pourra pas distinguer visuellement un zéro d'une cellule vide
  • Pour le voir: mettre un zéro dans une ligne du tableau et voir le résultat (avec ou sans l'option de visualisation des zéros)
Pour l'explication, je le ferai un peu plus tard 😉.
 
Bonjour @Studebaker,

Concernant le zéro:
  • la formule considère 0 comme tout autre nombre et non pas comme une cellule vide
  • Si les zéros ne sont affichés, on ne pourra pas distinguer visuellement un zéro d'une cellule vide
  • Pour le voir: mettre un zéro dans une ligne du tableau et voir le résultat (avec ou sans l'option de visualisation des zéros)
Pour l'explication, je le ferai un peu plus tard 😉.
Ok, pas de problème, aucune urgence (et je ne t'en voudrai pas si tu t'abstiens ). Un très grand merci encore !!!
 
Bonsoir @Studebaker,

Chose promise, chose due :

Voir les explications sur la formule dans le fichier joint.
Waow, super !!!
J'avais vaguement capté l'idée de base (j'étais d'ailleurs passé un peu instinctivement en effet à un facteur 10000 au lieu de 1000 pour faire fonctionner la chose avec mon assez gros fichier), mais j'étais loin d'avoir tout compris dans le détail !
Vraiment merci infiniment pour la peine que tu t'es donné.
Au plaisir @mapomme , prends soin de toi...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
786
Retour