Modification de formule

morganSOCO

XLDnaute Junior
Bonjour XLDnautes !

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 ...

Cordialement,
Morgan =)
 

Pièces jointes

  • 2.xls
    101 KB · Affichages: 41
  • 2.xls
    101 KB · Affichages: 45
  • 2.xls
    101 KB · Affichages: 47

morganSOCO

XLDnaute Junior
Re : Modification de formule

Si on part sur une macro autant tout faire directement non ? Tu veux que je te redonne l'arrêté correcte pour modifier la macro et l'adapter a cet arrêté ?? sachant qu'il faut modifier les formules finales (car le calcul n'est pas le meme), le bouton zone de sélection, et le nombre d'infrastructures ...
 

Pièces jointes

  • Arrêté actuel.xls
    110 KB · Affichages: 22
  • Arrêté actuel.xls
    110 KB · Affichages: 26
  • Arrêté actuel.xls
    110 KB · Affichages: 21

CISCO

XLDnaute Barbatruc
Re : Modification de formule

Bonjour

Cf. le début du travail, avec des formules, en pièce jointe, avec la méthode que tu as proposé. Il faudrait que tu nous précises si tu dois ensuite faire les nouvelles comparaisons façades par façades, ou pour l'ensemble du bâtiment.

@ plus
 

Pièces jointes

  • 2.xls
    128 KB · Affichages: 24
  • 2.xls
    128 KB · Affichages: 26
  • 2.xls
    128 KB · Affichages: 27
Dernière édition:

morganSOCO

XLDnaute Junior
Re : Modification de formule

Bonjour Bonjour ami du matin !

Alors voilà, mon chef a de nouveau changé le logiciel. Les modalités de calcul ne changent absolument pas c'est juste qu'il à rajouté 3 colonnes. je vous joins le logiciel de base maintenant.

En ce qui concerne la colonne "Isolement par infrastructure terrestre" rien ne change au niveau de la formule. c'est au niveau de la colonne isolement global. Cette colonne doit permettre de comparer la valeur d'isolement par infrastructure terrestre et celle de l'isolement si ifrastructure aérienne toujours de la même façon avec le même tableau de comparaison, sachant qu'il n'ya pas toujours d'infrastructure aérienne donc s'il n'y en a pas l'isolement global est l'isolement pour infrastructure terrestre.

Si il y a des questions je suis disponible pour tout renseignements =)

Bonne journée ensoleillée à tous =)
 

Pièces jointes

  • base.xls
    70 KB · Affichages: 32
  • base.xls
    70 KB · Affichages: 34
  • base.xls
    70 KB · Affichages: 26
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Modification de formule

Bonjour

Le début du travail en pièce jointe. Je ne pense pas que cela soit exactement ce que tu veux, car il y a un problème, il me semble, si il y a des doublons, au début, ou à la suite d'une des comparaisons.
Exemple :
40
41
40
36
Doit on modifier les deux 40, ou un seul des deux ?

@ plus
 

Pièces jointes

  • base.xls
    102.5 KB · Affichages: 28
  • base.xls
    102.5 KB · Affichages: 30
  • base.xls
    102.5 KB · Affichages: 29
Dernière édition:

morganSOCO

XLDnaute Junior
Re : Modification de formule

Bonjour CISCO,

je dois t'avouer que je ne comprends pas vraiment ton raisonnement ... pour la façade nord tu as 6 valeurs moi au final je trouve 48 dB. En ce qui concerne les doublons (ou triplet etc.), la valeurs est comptée à chaque fois (exemple s'il y a 2 fois 40 alors, il est compté 2x) Cf. exemple

Je pense que pour faire ce genre de calcul il faudrait une boucle while peut-être non ??

Merci de ton aide CISCO =)
 

Pièces jointes

  • exemple.xls
    20.5 KB · Affichages: 33
  • exemple.xls
    20.5 KB · Affichages: 33
  • exemple.xls
    20.5 KB · Affichages: 29

CISCO

XLDnaute Barbatruc
Re : Modification de formule

Bonsoir

Le début du travail en pièce jointe. Mais ce n'est pas idéal : trop de colonnes intermédiaires, pas très polyvalent... A améliorer donc.

Les formules peuvent être recopiées par paquet de 2 colonnes (R e S collées en T et U, et ainsi de suite vers la droite), et tirées vers le bas.

@ plus
 

Pièces jointes

  • base quatre bis.xls
    123 KB · Affichages: 32
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Modification de formule

Bonsoir

Une autre possibilité, avec un peu moins de colonnes intermédiaires, mais avec des formules matricielles. Celle en R11 peut être tirèe vers la droite et vers le bas autant que désiré.

@ plus
 

Pièces jointes

  • base cinq bis.xls
    122 KB · Affichages: 26
Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Modification de formule

Bonsoir

Je met en pièce jointe un fichier avec une relation d'acoustique, en colonne Z, permettant de trouver une valeur très proche de celles trouvées avec ta méthode. Je ne sais si elle est adaptée aux situations que tu dois traitées, mais, si c'est le cas, elle doit certainement donnée une valeur plus proche de la réalité (puisqu'il ne s'agit pas d'une méthode simplifiée) :

Lp = 10*Log (10^(L1/10)+10^(L2/10)+10^(L3/10)+10^(L4/10)....)

avec Log le logarithme décimal.

@ plus

P.S : Je met en pièce jointe un extrait du livre "Chauffage-Climatisation-Froid-Sanitaire : Acoustique Pratique" de Jean Desmons ISBN 2-86243-068-4 montrant la méthode simplifiée et la relation utilisée dans mon dernier fichier.
 

Pièces jointes

  • img884.jpg
    img884.jpg
    57.1 KB · Affichages: 37
  • base six bis.xls
    122.5 KB · Affichages: 30
Dernière édition:

morganSOCO

XLDnaute Junior
Re : Modification de formule

Bonjour, Bonjour CISCO

Tout d'abord merci de ton aide ! J'ai regardé tes bases et elles sont vraiment bien mais est-ce possible de transposer ca dans une seule case (la case isolement par infra terrestre) plutôt que d'avoir un nombre infini de colonnes ? Peut-être grâce à une macro (je suppose qu'a ce stade la il n'y a plus que la macro qui puisse me sauver) ?!

De plus il me semble dans tes exemples que lorsque la différence des 2 valeur est supérieur à 9 elle rajoute tout de même 1 à la valeur la plus grande alors que c'est 0 normalement.

Merci encore de ton aide et de l'attention que tu porte à ma demande =)

Morgan
 

eriiic

XLDnaute Barbatruc
Re : Modification de formule

Bonjour,

une proposition de fonction personnalisée faite à partir de ton fichier exemple :
Code:
Function correction(plage As Range) As Double
    Dim valeurs As Variant
    Dim tmp As Double, fini As Boolean, i As Long
    valeurs = Application.Transpose(Application.Index(plage.Value, , 1))
    While UBound(valeurs) > 1
        Do    'tri décroissant
            fini = True
            For i = 1 To UBound(valeurs) - 1
                If valeurs(i) < valeurs(i + 1) Then
                    tmp = valeurs(i)
                    valeurs(i) = valeurs(i + 1)
                    valeurs(i + 1) = tmp
                    fini = False
                End If
            Next i
        Loop Until fini
        ' correction
        Select Case valeurs(UBound(valeurs) - 1) - valeurs(UBound(valeurs))
        Case Is <= 1
            valeurs(UBound(valeurs) - 1) = valeurs(UBound(valeurs) - 1) + 3
        Case Is <= 3
            valeurs(UBound(valeurs) - 1) = valeurs(UBound(valeurs) - 1) + 2
        Case Is <= 9
            valeurs(UBound(valeurs) - 1) = valeurs(UBound(valeurs) - 1) + 1
        End Select
        ' éliminer 1 valeur
        ReDim Preserve valeurs(1 To UBound(valeurs) - 1)
    Wend
    correction = valeurs(1)
End Function

Je te laisse tester...

eric
 

Pièces jointes

  • exemple.xls
    33.5 KB · Affichages: 32
  • exemple.xls
    33.5 KB · Affichages: 37
  • exemple.xls
    33.5 KB · Affichages: 37

morganSOCO

XLDnaute Junior
Re : Modification de formule

Bonjour Eriic !

Je viens de tester ton fichier et il me semble qu'il fonctionne parfaitement bien ! Merci beaucoup !
Puis-je te demander encore ton aide ? Maintenant que j'ai l'isolement infra terrestre je souhaiterais le global. Autrement dit, il faudrait comparer la valeur iso infra terrestre avec iso infra aérienne (si elle existe) de la même manière que précédemment. si elle n'existe pas évidemment l'isolement global est l'iso infra terrestre. De plus il faut prendre en compte le fait que l'isolement ne peux etre inférieur à 30dB !!!

Encore merci de ton aide !!!!! =D
 

Pièces jointes

  • base.xls
    76 KB · Affichages: 20
  • base.xls
    76 KB · Affichages: 27
  • base.xls
    76 KB · Affichages: 34

eriiic

XLDnaute Barbatruc
Re : Modification de formule

Re,

Je t'ai ajouté le paramètre optionnel infraTerrestre (valeur par défaut = FAUX)
S'il tu le met à VRAI le mini de 30 dB est appliqué.

Syntaxe :
=correction(L16:L19) : équivalent à =correction(L16:L19;faux)
ou
=correction(L16:L19;vrai) : mini 30 dB

Code:
Function correction(plage As Range, Optional infraTerrestre As Boolean = False) As Double
    Dim valeurs As Variant
    Dim tmp As Double, fini As Boolean, i As Long
    valeurs = Application.Transpose(Application.Index(plage.Value, , 1))
    While UBound(valeurs) > 1
        Do    'tri décroissant
            fini = True
            For i = 1 To UBound(valeurs) - 1
                If valeurs(i) < valeurs(i + 1) Then
                    tmp = valeurs(i)
                    valeurs(i) = valeurs(i + 1)
                    valeurs(i + 1) = tmp
                    fini = False
                End If
            Next i
        Loop Until fini
        ' correction
        Select Case valeurs(UBound(valeurs) - 1) - valeurs(UBound(valeurs))
        Case Is <= 1
            valeurs(UBound(valeurs) - 1) = valeurs(UBound(valeurs) - 1) + 3
        Case Is <= 3
            valeurs(UBound(valeurs) - 1) = valeurs(UBound(valeurs) - 1) + 2
        Case Is <= 9
            valeurs(UBound(valeurs) - 1) = valeurs(UBound(valeurs) - 1) + 1
        End Select
        ' éliminer 1 valeur
        ReDim Preserve valeurs(1 To UBound(valeurs) - 1)
    Wend
    If infraTerrestre Then correction = Application.Max(30, valeurs(1)) Else correction = valeurs(1)
End Function
eric

PS : je me suis peut-être emmêlé les pinceaux dans les termes, corrige infraTerrestre par le nom cohérent ;-)
PS2 : j'ai peut-être lu un peu rapidement ta demande... mais là je vais manger. Confirme si c'est ce que tu voulais, sinon donne un exemple concret.
 
Dernière édition:

morganSOCO

XLDnaute Junior
Re : Modification de formule

Re Eriiiic,

Oui c'est exactement ce que je voulais. Merci beaucoup. En ce qui concerne l'isolement global, il suffit juste de comparer de façon analogue, la colonne iso infra terrestre avec iso infra aérienne. Il n'ya donc que deux valeurs cette fois.

Bon app' ;)
 

Discussions similaires

Réponses
3
Affichages
174

Statistiques des forums

Discussions
312 389
Messages
2 087 936
Membres
103 678
dernier inscrit
bibitm