Trouver valeur Max dans un Range variable selon condition

Bonjour à tous,

( et bonne année )

Comme le titre l'indique, je recherche une valeur Max dans une colonne dont le range de recherche peut varier selon une condition ( puis je recherche également la date/heure correspondant à cette valeur).

Au vu d'une requête précédente, il me semble avoir besoin de "MAX", "DECALER" ainsi qu'EQUIV pour trouver ces valeurs, mais je n'ai aucune idée quant à comment organiser la formule. Voici ce que je cherche à obtenir (également expliqué sur le fichier joint) :

- en F3 :

Si E2>29 et E3<=29 trouver MAX colonneB dans le Range B4 : 'prochaine cellule colonne B où cellule colonne E=100'

OU

Si E2<71 et E3>=71 trouver MAX colonneB dans le Range B4 : 'prochaine cellule colonne B où cellule colonne E=0'

Sinon F3=F2

- en G3 :

La date/heure correspondant à la valeur MAX trouvée en F3

Normalement, avec cela, je pourrai adapter les formules par la suite pour continuer avec les variantes.

Merci beaucoup pour votre aide ! : )

Marusanmarukyû ( ○三○九 )

Pour la cellule F10, si on est dans le cas où on cherche le prochain 100 :

=MAX(DECALER(B11;;;EQUIV(100;E11:E$9999;FAUX())))

Je te laisse ajouter les petites conditions pour exécuter un cas plutôt que l'autre ?

Pour la date, si tu veux la laisser en première position, il va falloir lui courir après avec un equiv. Mais si tu veux bien la remettre derrière, il suffit de la rechercher à partir de la valeur de B10, sur la même plage que le max : DECALER(B11;;;EQUIV(100;E11:E$9999;FAUX()))

Ca va aller ?

Merci beaucoup pour votre aide Peuwi.

Alors en ce qui concerne les valeurs de le colonne F, je pense m'en être sorti grâce à vos informations avec la formule suivante (pour F10) :

=SI(ET(E9>29;E10<=29);MAX(DECALER(B11;;;EQUIV(100;E11:E$9999;FAUX())));SI(ET(E9<71;E10>=71);MAX(DECALER(B11;;;EQUIV(0;E11:E$9999;FAUX())));F9))

En revanche, pour ce qui est de la date/heure, je ne suis pas sûr d'avoir bien compris ce que vous vouliez dire par "laisser en première position" ou "la remettre derrière" ?

Si vous parlez de la colonne, je peux la copier/coller sans problème après la colonne E par exemple.

Dans le cas où je garde la date/heure en colonne A et la duplique en colonne E, j'ai essayé une formule sans conviction et ça me donne un joli #N/A ( une tentative de formule qui pique peut-être les yeux des connaisseurs haha) :

(du coup F10 devient G10 et G10 devient H10)

=RECHERCHEV(SI(ET(E9>29;E10<=29);MAX(DECALER(B11;;;EQUIV(100;E11:E$9999;FAUX())));SI(ET(E9<71;E10>=71);MAX(DECALER(B11;;;EQUIV(0;E11:E$9999;FAUX())));G9));$A11:$F9999;6;0)

Marusanmarukyû ( ○三○九 )

Ouille, la rechercheV est un peu écrite au hasard

Pour faire la rechercheV :

=rechercheV(

G10; <- la valeur maximum qui a été trouvée (en supposant que tu as mis les dates dans la colonne F, et donc les max dans la G

DECALER(B11;;4;EQUIV(100;E11:E$9999;FAUX())) ; <- la plage dans laquelle tu as trouvé ta valeur maximum, agrandie un peu pour choper des colonnes à droite, l'une d'elle aura la date

4; <- en supposant que la date est dans la colonne F

faux <- parce que là, il y a toujours faux.

)

Ca va mieux ?

En réutilisant une formule "INDEX" d'un autre fichier, j'arrive à quelque chose, mais un problème survient...

=INDEX($A11:$A9999;EQUIV(F10;DECALER($B11:$B9999;;);0))

Sur l'image ci-dessous vous pouvez voir en rouge ou se situe l'erreur. En effet, le problème vient du fait que dans ma formule, la recherche commence à la ligne en-dessous : au lieu de 8/01 on devrait toujours avoir la valeur 7/01 etc. Pour cela il faudrait que je sois capable de faire commencer la recherche à "la précédente ligne où la valeur de la colonne F a changé à la suite d'un résultat d'une des deux formules SI(et()). Comment faire ?

Ou alors, y a-t-il une solution plus simple ?

( pour ce qui est des N/A j'utiliserai une formule Si(ESTNA(...)) etc... )

Merci encore : )

Edit : ha, je n'ai pas eu le temps de voir votre réponse Peuwi ; )

Marusanmarukyû ( ○三○九 )

Ah, ben, non, c'est bien cette fois. Étonnamment, equiv est bien écrite (alors qu'elle marche exactement comme rechercheV)

C'est une simple petite erreur de plage incorrecte.

Plutôt que de s'embêter à chercher une solution compliquée, pourquoi refaire une recherche pour la date sur chaque ligne ?

Si on dit que lorsque tructruc la valeur est idem qu'avant, ben faut faire le même test pour la date : si tructruc, c'est comme avant.

Peuwi a écrit :

Ah, ben, non, c'est bien cette fois. Étonnamment, equiv est bien écrite (alors qu'elle marche exactement comme rechercheV)

C'est une simple petite erreur de plage incorrecte.

Plutôt que de s'embêter à chercher une solution compliquée, pourquoi refaire une recherche pour la date sur chaque ligne ?

Si on dit que lorsque tructruc la valeur est idem qu'avant, ben faut faire le même test pour la date : si tructruc, c'est comme avant.

Ha ben oui, je n'y avais pas pensé haha. Désolé :D . En effet, avec la formule suivante ( et les dates en colonne F cette fois) :

=SI(G10<>G9;INDEX($A11:$A9999;EQUIV(G10;DECALER($B11:$B9999;;);0));H9)

il ne semble plus y avoir de souci.

Merci beaucoup de vous être penché sur ma question, je vous souhaite une excellente soirée. :)

Marusanmarukyû ( ○三○九 )

Rechercher des sujets similaires à "trouver valeur max range variable condition"