Utiliser la formule PETITE.VALEUR uniquement sur les cellules non vides

Résolu/Fermé
E_13 Messages postés 7 Date d'inscription mardi 22 janvier 2019 Statut Membre Dernière intervention 22 janvier 2019 - Modifié le 22 janv. 2019 à 19:29
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 - 22 janv. 2019 à 20:18
Bonjour,

Ce que j'aimerais réaliser : effectuer un tri sur une base de données (onglet Data) extrayant les dix plus petites valeurs de cette base dans un nouvel onglet (onglet Santé) selon un critère précis (Santé dans la colonne B de l'onglet Data) et sans prendre en compte les cellules vides de ma colonne subissant l'extraction (colonne E de l'onglet Data).

Mon problème : la formule PETITE.VALEUR prend en compte les cellules vides lorsque je sélectionne l'ensemble de la colonne et m'affiche "0". Et j'aimerais bien faire la distinction entre les cellules vides de ma colonne et celles qui contiennent effectivement un 0 et qui pourraient éventuellement faire partie des 10 plus petites valeurs.

Ma solution : =PETITE.VALEUR(SI(Data!$B:$B=$B$3;Data!$E:$E;0);1) est la formule que j'utilise dans mon onglet "Santé". Et je pense qu'il faut utiliser la fonction LIGNE mais je ne sais pas comment.

J'ai essayé de chercher sur différents forums mais je n'ai pas trouvé de solution ou du moins, peut-être que la solution est passée sous mes yeux et que je ne l'ai pas comprise. Du coup, je me suis inscrite ici dans l'espoir de trouver une solution. Je suis vraiment dans la démarche de comprendre donc si vous avez l'extrême gentillesse de me proposer une solution, pourriez-vous fournir les explications qui vont avec svp?

Merci pour votre aide.
A voir également:

6 réponses

E_13 Messages postés 7 Date d'inscription mardi 22 janvier 2019 Statut Membre Dernière intervention 22 janvier 2019
22 janv. 2019 à 19:16
Si quelqu'un pouvait aussi me dire comment poster mon fichier excel, ce serait cool ! Merci ! (Oui je débute, c'est mon tout premier poste sur un forum)
0
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 110
22 janv. 2019 à 19:18
Bonsoir,

pour joindre ton fichier anonymisé
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
5) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".
=>Voir la fiche https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers

dans le même style tu as https://mon-partage.fr/
0
E_13 Messages postés 7 Date d'inscription mardi 22 janvier 2019 Statut Membre Dernière intervention 22 janvier 2019
22 janv. 2019 à 19:21
Merci, je le fais de suite! :)
0
E_13 Messages postés 7 Date d'inscription mardi 22 janvier 2019 Statut Membre Dernière intervention 22 janvier 2019
22 janv. 2019 à 19:26
Voici le fichier ! :)

https://www.cjoint.com/c/IAwszL6iqGO
0
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 110
Modifié le 22 janv. 2019 à 19:34
Re,

essaye cette formule matricielle
=PETITE.VALEUR(SI(Data!$B$2:$B$20=$B$3;Data!$E$2:$E$20;"");1)

0
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 110
22 janv. 2019 à 19:42
Re,

petite précision, les formules matricielles utilisent beaucoup de ressources et ralentissent le bon fonctionnement du classeur.
Limite les plages en évitant l'application à des colonnes entières

tu pourrais également nommer tes plages exemple B2:B20 nommée Sect et E2:E20 nommée Prix
la formule toujours en matricielle devient
=PETITE.VALEUR(SI(Sect=$B$3;Prix;"");1)
0
E_13 Messages postés 7 Date d'inscription mardi 22 janvier 2019 Statut Membre Dernière intervention 22 janvier 2019
22 janv. 2019 à 19:44
Je te remercie, ça fonctionne au top! ^^
La solution était ultra simple et je me cassais la tête pour rien!
Si j'ai bien compris, tu as fait un SI multiple en spécifiant de ne prendre que les cellules non vides avec "" sans espace entre les guillemets?
0
E_13 Messages postés 7 Date d'inscription mardi 22 janvier 2019 Statut Membre Dernière intervention 22 janvier 2019
22 janv. 2019 à 19:48
Oui je sais. En fait, c'est une volonté de ma part de ne pas délimiter ma plage de cellules. C'est censé être "dynamique" car je ne sais jamais exactement le nombre de valeurs que je vais avoir. Cela peut être 500 comme 1000 d'où la sélection de la colonne entière.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 110
22 janv. 2019 à 19:49
Re,

en fait Excel considère les cellules vides = 0 donc dans ta formule il suffisait de remplacer ;0 par ;""
0
E_13 Messages postés 7 Date d'inscription mardi 22 janvier 2019 Statut Membre Dernière intervention 22 janvier 2019
22 janv. 2019 à 19:51
oui en effet! j'aurais dû y penser! Merci beaucoup pour ton aide et bonne soirée!
0
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 110
22 janv. 2019 à 20:18
Re,

je reviens sur ton choix d'appliquer les formules matricielles à la colonne il faut que tu comprennes que dans ton cas la formule va boucler sur 1048576 cellules sur les colonne B et E
même si tes plage risque progresser tu n'auras jamais 1048576 lignes ou il faut passer en VBA si tu as quelques notions, mais bon à toi de voir.
0