Lors d'un projet, j'ai essayé de trouver une formule permettant de chercher
le minimum d'une liste sous condition. Et je me suis pris la tete 4 heures.
J'ai trouvé mais je ne comprends rien !
Ex : Feuille 'Janvier'
A B
1 Toto 2
2 Toto
3 Toto 3
4 Tata 1
5 Tata 4
Je veux trouver le max si toto => 3
Je veux trouver le min si toto (non vide) => 2
Je veux trouver le max si tata => 4
Je veux trouver le min si tata(non vide) => 1
Alors, j'ai trouvé les formules suivantes :
Pour Max :
={(GRANDE.VALEUR((Janvier!$B$2:$B$5)*(Janvier!$A$2:$A$5="toto");1))} =>
La formule est OK
Pour Min :
={(PETITE.VALEUR((Janvier!$B$2:$B$5)*(Janvier!$A$2:$A$5="toto");1))} =>
La formule ne marche pas. J'ai alors tenté :
={(PETITE.VALEUR((Janvier!$B$2:$B$5)*(Janvier!$B$2:$B$5<>0)*(Janvier!$A$2:$A$5="toto");1))}
=> La formule ne marche toujours pas (vide). j'ai donc tenté :
={MIN(SI((Janvier!$B$2:$B$5<>0)*(Janvier!$A$2:$A$5="toto");Janvier!$B$2:$B$5))} => Et là ca marche sans que je comprenne !!!
Ma question : je voudrais quand meme savoir pourquoi Petite.Valeur ne marche
pas comme Grande.Valeur. Quelqu'un se serait-il posé la question ?
(pour info, j'ai aussi tenté une matricielle avec Min(***) sans la condition
SI; et ca donne exactement la meme chose que Petite.Valeur.
Merci d'avance. Ce n'est pas urgent, mais c'est juste dans le but de
progresser.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
AV
| ={(PETITE.VALEUR((Janvier!$B$2:$B$5)*(Janvier!$A$2:$A$5="toto");1))} => | La formule ne marche pas.
Normal car la matrice renvoyée par la partie (B1:B5)*(A1:15="toto") renvoie 0 chaque fois qu'une des 2 conditions n'est pas remplie Dans ton exemple : {2;0;3;0;0} Donc Petite.valeur(....;1) te renvoie 0 Il faut donc limiter l'examen à la plage des valeurs supérieures à 0 : =PETITE.VALEUR(SI((A1:A5="toto")*(B1:B5<>0);B1:B5);1)
PS : bien évidemment, par nature, GRANDE.VALEUR n'est pas sensible au "phénomène" d'où la différence (seulement apparente) de comportement
AV
| ={(PETITE.VALEUR((Janvier!$B$2:$B$5)*(Janvier!$A$2:$A$5="toto");1))} =>
| La formule ne marche pas.
Normal car la matrice renvoyée par la partie (B1:B5)*(A1:15="toto") renvoie 0
chaque fois qu'une des 2 conditions n'est pas remplie
Dans ton exemple : {2;0;3;0;0}
Donc Petite.valeur(....;1) te renvoie 0
Il faut donc limiter l'examen à la plage des valeurs supérieures à 0 :
=PETITE.VALEUR(SI((A1:A5="toto")*(B1:B5<>0);B1:B5);1)
PS : bien évidemment, par nature, GRANDE.VALEUR n'est pas sensible au
"phénomène" d'où la différence (seulement apparente) de comportement
| ={(PETITE.VALEUR((Janvier!$B$2:$B$5)*(Janvier!$A$2:$A$5="toto");1))} => | La formule ne marche pas.
Normal car la matrice renvoyée par la partie (B1:B5)*(A1:15="toto") renvoie 0 chaque fois qu'une des 2 conditions n'est pas remplie Dans ton exemple : {2;0;3;0;0} Donc Petite.valeur(....;1) te renvoie 0 Il faut donc limiter l'examen à la plage des valeurs supérieures à 0 : =PETITE.VALEUR(SI((A1:A5="toto")*(B1:B5<>0);B1:B5);1)
PS : bien évidemment, par nature, GRANDE.VALEUR n'est pas sensible au "phénomène" d'où la différence (seulement apparente) de comportement
AV
FILK
Merci beaucoup AV. D'un coup, je comprends mieux les formules matricielles. Mais bon, faut que je continue à reflechir.
(dis-moi, ca fait un petit mois que je traine sur le forum, t'as vraiment unsuper niveau !)
Philippe
| ={(PETITE.VALEUR((Janvier!$B$2:$B$5)*(Janvier!$A$2:$A$5="toto");1))} => | La formule ne marche pas.
Normal car la matrice renvoyée par la partie (B1:B5)*(A1:15="toto") renvoie 0 chaque fois qu'une des 2 conditions n'est pas remplie Dans ton exemple : {2;0;3;0;0} Donc Petite.valeur(....;1) te renvoie 0 Il faut donc limiter l'examen à la plage des valeurs supérieures à 0 : =PETITE.VALEUR(SI((A1:A5="toto")*(B1:B5<>0);B1:B5);1)
PS : bien évidemment, par nature, GRANDE.VALEUR n'est pas sensible au "phénomène" d'où la différence (seulement apparente) de comportement
AV
Merci beaucoup AV. D'un coup, je comprends mieux les formules matricielles.
Mais bon, faut que je continue à reflechir.
(dis-moi, ca fait un petit mois que je traine sur le forum, t'as vraiment
unsuper niveau !)
Philippe
| ={(PETITE.VALEUR((Janvier!$B$2:$B$5)*(Janvier!$A$2:$A$5="toto");1))} =>
| La formule ne marche pas.
Normal car la matrice renvoyée par la partie (B1:B5)*(A1:15="toto") renvoie 0
chaque fois qu'une des 2 conditions n'est pas remplie
Dans ton exemple : {2;0;3;0;0}
Donc Petite.valeur(....;1) te renvoie 0
Il faut donc limiter l'examen à la plage des valeurs supérieures à 0 :
=PETITE.VALEUR(SI((A1:A5="toto")*(B1:B5<>0);B1:B5);1)
PS : bien évidemment, par nature, GRANDE.VALEUR n'est pas sensible au
"phénomène" d'où la différence (seulement apparente) de comportement
Merci beaucoup AV. D'un coup, je comprends mieux les formules matricielles. Mais bon, faut que je continue à reflechir.
(dis-moi, ca fait un petit mois que je traine sur le forum, t'as vraiment unsuper niveau !)
Philippe
| ={(PETITE.VALEUR((Janvier!$B$2:$B$5)*(Janvier!$A$2:$A$5="toto");1))} => | La formule ne marche pas.
Normal car la matrice renvoyée par la partie (B1:B5)*(A1:15="toto") renvoie 0 chaque fois qu'une des 2 conditions n'est pas remplie Dans ton exemple : {2;0;3;0;0} Donc Petite.valeur(....;1) te renvoie 0 Il faut donc limiter l'examen à la plage des valeurs supérieures à 0 : =PETITE.VALEUR(SI((A1:A5="toto")*(B1:B5<>0);B1:B5);1)
PS : bien évidemment, par nature, GRANDE.VALEUR n'est pas sensible au "phénomène" d'où la différence (seulement apparente) de comportement