Minimum sans les zéros

Résolu
luc_duf Messages postés 83 Statut Membre -  
luc_duf Messages postés 83 Statut Membre -
Bonjour, j'ai besoin dans un classeur de déterminer automatiquement le minimum d'une plage sans inclure les zéros de cette plage (qui ne resteront pas zéro indéfiniment). J'ai essayé plusieurs formules trouvées sur les forum mais aucune ne fonctionne. J'ai essayé :

=MIN(SI(MOYHUM>0;MOYHUM))

=PETITE.VALEUR(MOYHUM;NB.SI(MOYHUM;0)+1)

Ca me donne une erreur #VALEUR.

MOYHUM est le nom de ma plage D12;D30;D42;D51;D66;D90;D102;D112;D118;D129;D138;D150;D162;D170;D188;D203;D211

Je vous remercie d'avance pour l'aide que vous m'apporterez.

luc_duf
A voir également:

8 réponses

My_B Messages postés 31 Statut Membre 2
 
Salut,

tu peux essayer ça :
=MIN(SI(MOYHUM>0;SI(MOYHUM<>"";MOYHUM)))

à valider avec Ctrl+Maj+Entrée (formule matricielle)

Cordialement
0
luc_duf Messages postés 83 Statut Membre 18
 
Merci pour la rapidité de la réponse.

Mais j'ai toujours la même réponse #VALEUR!

J'ai 7 zéros pour le moment sur la plage.
0
My_B Messages postés 31 Statut Membre 2
 
Tu as bien validé avec Ctrl-Maj-Entrée ?

j'ai fais un test ça marche pour moi..
transmet moi ton fichier je verrai peut-être mieux
0
luc_duf Messages postés 83 Statut Membre 18
 
Oui oui, j'ai bien validé avec cmd-maj-entrée. (je suis sur mac, et ça met les accolades)

Je ne vois pas où est le soucis.

Je t'ai envoyé le fichier

Merci
0

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

Posez votre question
My_B Messages postés 31 Statut Membre 2
 
Désolée :/

d'après l'aide, on dirait que ça vient de là :

" L'entrée d'une référence de cellule, d'une formule ou d'une fonction en tant que constante matricielle


Vérifiez que la constante matricielle n'est pas une référence de cellule, une formule ou une fonction."

Mais je vois pas le problème... j'suis pas une pro non plus faut dire :/

En espérant que ça aura au moins lancé la conversation et que les experts vont arriver en sauveur !

Bon courage (si j'ai une illumination je reviendrai bien sûr)
0
luc_duf Messages postés 83 Statut Membre 18
 
Cela viendrait-il du fait que les cellules de ma plage contiennent une formule de moyenne ?
J'espérait trouver une réponse simple pour m'éviter le code VBA.

Merci de ton aide tout de même !
0
Patrice33740 Messages postés 8930 Statut Membre 1 781
 
Bonjour,

Il semblerait qu'avec une plage nommée ce ne soit pas possible, j'ai donc repris toutes les cellules de la plage.
Essaies cette formule matricielle (un peu longue ...) :
=MIN(SI(CHOISIR(LIGNE(1:17);$D$12;$D$30;$D$42;$D$51;$D$66;$D$90;$D$102;$D$112;$D$118;$D$129;$D$138;$D$150;$D$162;$D$170;$D$188;$D$203;$D$211)>0;CHOISIR(LIGNE(1:17);$D$12;$D$30;$D$42;$D$51;$D$66;$D$90;$D$102;$D$112;$D$118;$D$129;$D$138;$D$150;$D$162;$D$170;$D$188;$D$203;$D$211);MAX($D$12;$D$30;$D$42;$D$51;$D$66;$D$90;$D$102;$D$112;$D$118;$D$129;$D$138;$D$150;$D$162;$D$170;$D$188;$D$203;$D$211)))

A valider par Maj+Ctrl+Entrée
0
Patrice33740 Messages postés 8930 Statut Membre 1 781
 
Avec la même méthode, on peut aussi créer une fonction VBA personnalisée à mettre dans un module normal :
Function min2(plage As Range) As Double
Dim c As Range
  min2 = Application.WorksheetFunction.Max(plage)
  For Each c In plage.Cells
    If IsNumeric(c.Value) Then
      If c.Value < min2 And c.Value > 0 Then min2 = c.Value
    End If
  Next c
End Function


et dans la cellule Excel :
=min2(MOYHUM)

Patrice
0
luc_duf Messages postés 83 Statut Membre 18
 
Je viens de voir vos messages un peu trop tard. Je n'avais plus de connexion internet, et je me suis cassé la tête à taper une longue formule avec les petite.valeur. Et ça marche.

Je mets ma formule si jamais quelqu'un rencontre ce problème également.

Merci à tous pour votre aide.

Formule : =SI(PETITE.VALEUR(MOYHUM;1)>0;PETITE.VALEUR(MOYHUM;1);SI(PETITE.VALEUR(MOYHUM;2)>0;PETITE.VALEUR(MOYHUM;2);SI(PETITE.VALEUR(MOYHUM;3)>0;PETITE.VALEUR(MOYHUM;3);SI(PETITE.VALEUR(MOYHUM;4)>0;PETITE.VALEUR(MOYHUM;4);SI(PETITE.VALEUR(MOYHUM;5)>0;PETITE.VALEUR(MOYHUM;5);SI(PETITE.VALEUR(MOYHUM;6)>0;PETITE.VALEUR(MOYHUM;6);SI(PETITE.VALEUR(MOYHUM;7)>0;PETITE.VALEUR(MOYHUM;7);PETITE.VALEUR(MOYHUM;8))))))))

Je me suis arrêté à 7 car je n'aurai jamais plus de 7 valeurs nulles sur ma plage. Sinon il faut continuer. Et si c'est une plage beaucoup plus importante, avec énormément de 0, mieux vaut ne pas tenter cette formule ;)

luc_duf
0