Re : identifier une plage où est la cellule de la plus grosse valeur avec VBA
Bonjour
Une manière de faire complètement différente en pièce jointe.
Dans les fichiers précédents, on cherche la xième plus grande valeur (avec (GRANDE.VALEUR......;x) de la colonne (X, Y ou Z du test 1, ou 2 ou 3) (Z par exemple) (que l'on trouve par exemple sur la ligne 32), et on compare les valeurs de la ligne précédente et de la ligne suivante, sur cette colonne Z, avec cette xième valeur.
Ce qui donne le test SI(ET(Z en ligne 31<Z en ligne 32;Z ligne 32 > Z en ligne 33)...
Si ce test donne VRAI on garde x (on a un sommet), sinon, on essaye avec x+1. Le test est répété jusqu'a avoir un test VRAI pour x =2, puis 3, puis 4, puis 5...
Problème : cela donne une formule à rallonge, puisqu'il faut faire le test avec 2, puis 3, puis... Dans un de mes précédents fichiers, j'avais été par précaution jusqu'à x = 8. Dans le dernier fichier, cela ne suffisait pas et il a fallu que je rallonge la formule jusqu'à x = 11 (La plus grande valeur correspondant au second pic étant la 10ème plus grande valeur de la liste des Z pour le test 1).
Dans la nouvelle mouture en pièce jointe, j'ai défini 3 noms :
colligne2 correspondant à la plage intéressante (dans test 1, test 2 ou test 3) de la ligne 2 à la ligne 100
colligne3 correspondant ............................................................................. de la ligne 3 à la ligne 101
colligne4 correspondant ............................................................................... de la ligne 4 à la ligne 102
On fait, en matriciel, le test SI((colligne2<colligne3)*(colligne3>colligne4);colligne3;0) ce qui permet de comparer toutes les valeurs de la colonne intéressante 3 par 3 ((Z de la ligne 2 < Z de la ligne 3)*(Z de la ligne 3 > Z de la ligne 4), puis (Z de la ligne 3 <Z de la ligne 4) *(Z de la ligne 4 > Z de la ligne 5), et ainsi de suite). Cela renvoie une liste de zéro et les valeurs de tous les sommets. Toutes les valeurs qui ne correspondent pas au sommet d'un pic sont remplacées par un zéro. Après, pour avoir le pic le plus grand, ne reste plus qu'à prendre GRANDE.VALEUR(liste,1), pour le second GRANDE.VALEUR(liste;2) et ainsi de suite.
Cela ne fonctionne pas si la première valeur de la colonne, ou la dernière, correspondent à un pic, mais bon, je pense que ta plage de fréquences est assez grande pour ne pas avoir ces situations.
Tu peux tirer ces formules vers la droite.
Avantages par rapport à l'ancienne méthode :
* la formule est beaucoup plus courte
* on ne risque pas de louper la valeur intéressante en ayant arrêté la formule trop tôt (x = 8 dans un de mes précédents fichiers, alors qu'il fallait aller au moins jusqu'à 10 dans le fichier du post précédent)
@ plus