Voilà, j'ai un logiciel qui marche plutôt bien, seulement, la formule finale n'est pas totalement vraie. Je m'explique: la formule de calcul d'isolement requis compare les 2 plus petites valeurs et applique une correction selon la différences des 2 valeurs. Or, TOUTES les valeurs doivent être comparées ... Je joint un exemple pour expliciter mes propos et l'arrêté utilisé pour expliquer la méthode.
"la valeur minimale de l'isolement à retenir est calculée de la façon suivante à partir de la série de valeurs. les 2 valeurs les + faibles sont comparées. la correction issue du tableau ci-dessous est ajoutée à la valeur la + élevée des 2.
ecart correction
entre 0 et 1 +3
entre 2 et 3 +2
entre 4 et 9 +1
> 9 0
S'il n'y a que deux valeurs la valeur calculée a l'aide du tableau est l'isolement minimal. S'il y a plus de 2 valeurs, la valeur calculée a l'aide du tableau pour les 2 + faibles isolements est comparée de façon analogue à la plus faible des valeurs restantes. le processus est réitéré jusqu'à ce que toutes les valeurs de la série soient ainsi comparées."
Dans mon exemple il n'y a que 3 valeurs mais il se peut qu'il y en ai plus ...
Ok, j'ai lu ta demande et regardé ton exemple, en fait si on généralise, tu veux que la formule :
- compare toute les valeurs de la plage entres-elles, sauf la plus grande.
- et qu'elle compare le résultat obtenu à la plus grande valeur de la plage
C'est ça?
Une chose que je ne comprends pas, tu à mis : "il faudrait comparer 39 et 32 (et donc ça donnerai 39-32=7, écart de 7 donc on a 40)"... alors jusqu'à 39-32=7, je comprends... mais ensuite le "écart de 7 donc on à 40"...je suis dans les choux là, pourquoi 40?
En fait pour commencer on compare les deux plus petite, une fois fait on compare le résultat de la première comparaison avec la valeur la plus petite qu'il reste et ainsi de suite ...
La correction vient du tableau. 39-32=7 il y a donc un écart de 7 entre les 2 + petites valeurs, or d'après le tableau s'il y a un écart entre 4 et 9 il faut ajouter 1 à la valeur la plus grande des 2, donc à 39 dans l'exemple.
k = N2
For e = k To N2
Range("P" & d).FormulaR1C1 = "=MAX(30,IF(COUNT(RC[-1]:R[e]C[-1])<2,MAX(RC[-1]:R[e]C[-1]),SMALL(RC[-1]:R[e]C[-1],2)+VLOOKUP((SMALL(RC[-1]:R[e]C[-1],2)-SMALL(RC[-1]:R[e]C[-1],1)),R28C12:R31C13,2,1)))"
Next e
k = k + N2
Dans la macro de l'autre fois, ça ne marche pas ici car les colonnes ont changé, ta dernnière colonne n'est plus Q mais M. dis moi ce que ça donne, j'ai aucune certitude, j'ai fais ça au jugé...
J'ai l'impression que tu utilises une méthode simplifiée pour cacluler le niveau de bruit en présence de plusieurs sources sonores. Ne serait-ce pas plus simple d'utiliser la relation physique donnant directement le niveau acoustique dans ce cas ?
STP, fournis nous un exemple un peu plus long, disons une dizaine de lignes, avec le résultat attendu, et décris plus précisément ton objectif, que je vois dans quelle situaution tu te trouves.
Ton code ne fonctionne pas il me semble mais je joint la base (sans aucune macro) du logiciel. Repartir de presque zéro nous simplifiera peut-être la tâche. Je souhaiterai d'abord modifier la formule dans la cellule afin qu'elle respecte l'arrêté:
"la valeur minimale de l'isolement à retenir est calculée de la façon suivante à partir de la série de valeurs. les 2 valeurs les + faibles sont comparées. la correction issue du tableau ci-dessous est ajoutée à la valeur la + élevée des 2.
ecart correction
entre 0 et 1 +3
entre 2 et 3 +2
entre 4 et 9 +1
> 9 0
S'il n'y a que deux valeurs la valeur calculée a l'aide du tableau est l'isolement minimal. S'il y a plus de 2 valeurs, la valeur calculée a l'aide du tableau pour les 2 + faibles isolements est comparée de façon analogue à la plus faible des valeurs restantes. le processus est réitéré jusqu'à ce que toutes les valeurs de la série soient ainsi comparées."
Déjà si on arrive a fait ça .. ce sera une grande avancée. Je verrais ensuite pour inclure les macro de zone de sélection et nombre d'infrastructures.
ça me va, trouvons la formule alors.
A ce propos, peut-être que l'idée de CISCO peut aider parce que pour ma par pour le moment, je vois pas comment faire...
MorganSOCO, pour ta formule, tu compare à chaque fois les 2 plus petites valeurs de la série, ou tu compare les valeurs successives?
je veux dire si dans tu as: M11 = 35, M12 = 30 et M13 = 28, tu compares en premier M11 et M12, ou alors M12 et M13 ?
@ Venitien: Tu compare les 2 plus petites donc pour ton exemple M12 et M13 et la comparaison des 2 donne un nombre, tu compare ce nombre a M11 (si tu n'as que 3 valeurs, si tu en a + tu compare la comparaison à la plus petite valeur restante)
ok, pour ma part je partirais su une macro (encore une) pour limiter le nombre de cases. La macro comparerais chacune des valeur et poserait le résultat dans la case...
parce que à part décomposer le calcul en plusieurs étapes, je vois pas comment faire..