Calcul puissance acoustique - VB/VBA/VBS - Programmation
Marsh Posté le 20-02-2013 à 19:20:31
Bonsoir ! Normalement cela devrait pouvoir se calculer sans l'aide du VBA …
Pas sûr de bien comprendre ta formule, j'aimerais bien un lien sur une page détaillée avec un exemple …
Marsh Posté le 21-02-2013 à 08:28:46
Bonjour,
Voici un lien qui explique un peu la formule : http://www.acouphile.fr/bases.html
La formule se situe en bas de page (avant dernier titre : niveau sonore global en dB et dBA)
Si il existe en effet une solution sans passer par le VBA, je suis preneur !
Bonne journée à tous
Marsh Posté le 21-02-2013 à 09:21:32
Bonjour et merci pour le lien !
Hélas je reste encore un peu dans le brouillard, pourriez-vous expliquer un exemple et comment vous le calculez manuellement ?
Marsh Posté le 21-02-2013 à 09:58:35
Bonjour,
En fait pour avoir un niveau de puissance acoustique global, il faut additionner les niveaux de puissance de chaque bande de fréquences.
Admettons que j'ai 3 bandes de fréquences différentes : 250Hz, 500Hz et 1000Hz
Et que j'ai un niveau de puissance pour chaque bandes qui vaut respectivement 53dB, 25dB et 46dB.
On note Lw le niveau de puissance global qui vaut : 10 x Log (10^(53/10)+10^(25/10)+10^(46/10)) = 53,8 dB
Si on note Li le niveau de puissance acoustique par bande, on obtient la formule donnée sur le site, c'est à dire 10 x Log (Somme (10^(Li/10))).
Mon problème est que parfois je peux avoir plus de 10 bandes de fréquence, ce qui veut dire que j'ai une formule à rallonge quand je calcul le Lw. J'aimerais qu'en une seule case je puisse faire le calcul du Lw.
J'espère que c’est compréhensible,
Bonne journée
Marsh Posté le 21-02-2013 à 10:56:03
Pour la formule directe, je ne vois pas trop à cause de la variabilité du nombre de fréquences …
Par contre en VBA c'est facile ! Le code exposé part sur une procédure alors qu'une fonction est nécessaire …
Voici donc la fonction Lw à insérer dans un module VBA normal :
Code :
|
Si les 53, 25 & 46dB sont dans les cellules B6 à D6, voici la formule à entrer dans une cellule :
=Lw(B6:D6) |
Marsh Posté le 21-02-2013 à 11:15:30
Ca marche parfaitement, merci !
Peux-tu m'expliquer le code ? Que je comprenne ce que j'écris...
Merci beaucoup
Marsh Posté le 21-02-2013 à 11:31:48
Ne pas oublier l'aide intégrée de VBA ‼
Sinon il n'y a pas grand chose à expliquer :
- ligne n°1 : Rg est la plage à traiter
- 3 : Boucle pour calculer T, la somme des Li; Cel est une cellule de la plage
- 4 : Résultat à partir d'un logarithme népérien converti en base 10 puis arrondi à une décimale …
Marsh Posté le 21-02-2013 à 11:39:49
Ok,
J'ai modifié le code pour que la valeur ne soit pas arrondie.
Tout marche impec, merci beaucoup
A bientôt
Marsh Posté le 21-02-2013 à 14:16:20
En fait j'ai été quelque peu induit par le résultat de l'exemple …
Sinon je me demande s'il n'y a quand même pas moyen d'éviter le VBA par un produit matriciel (ou quelque chose dans le genre)
mais pour l'instant rien ne me revient; au cas où, je posterais ici une autre approche …
Marsh Posté le 24-02-2013 à 11:32:02
Rien de nouveau côté formule …
Dans la fonction Lw, la ligne Application.Volatile n'est pas nécessaire dans ce cas …
Marsh Posté le 20-02-2013 à 17:57:39
Bonjour à tous,
Dans le cadre de mon travail je dois calculer un niveau de puissance acoustique. Cette puissance ce calcul de la façon suivante :
10 x Log ( Somme de 10 ^(Li/10))
Ou Li est ma puissance acoustique pour une bande de fréquence donnée. (250 Hz, 500 Hz ...)
J'aimerais pouvoir automatiser mon calcul pour mes 8 bandes de fréquence sans avoir à taper une formule à rallonge. Je n'ai pas trouvé de solution en utilisant les formules classiques du coup je voudrais passer par les macros. Voila ce que j'ai écris pour le moment mais sans succès :
Sub Lw()
Dim i As Integer
For i = 2 To 10
Range("B12" ).Formula = "=10 * Log(Sum(10 ^ (cell(6,i) / 10)))"
Next i
End Sub
Quelqu'un aurai une idée ?
En vous remerciant, bonne fin d'aprem à tous,
Egel