Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2681 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Calcul puissance acoustique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Calcul puissance acoustique

n°2176663
Egel
Posté le 20-02-2013 à 17:57:39  profilanswer
 

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

mood
Publicité
Posté le 20-02-2013 à 17:57:39  profilanswer
 

n°2176677
Marc L
Posté le 20-02-2013 à 19:20:31  profilanswer
 

 
           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 …
 

n°2176736
Egel
Posté le 21-02-2013 à 08:28:46  profilanswer
 

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

n°2176752
Marc L
Posté le 21-02-2013 à 09:21:32  profilanswer
 

 
          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 ?
 

n°2176760
Egel
Posté le 21-02-2013 à 09:58:35  profilanswer
 

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

n°2176784
Marc L
Posté le 21-02-2013 à 10:56:03  profilanswer
 

 
           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 :
  1. Function Lw(Rg As Range)
  2.          Application.Volatile
  3.          For Each Cel In Rg:  T = T + 10 ^ (Cel / 10):  Next
  4.          Lw = Round(10 * Log(T) / Log(10), 1)
  5. End Function


           Si les 53, 25 & 46dB sont dans les cellules B6 à D6, voici la formule à entrer dans une cellule :

     =Lw(B6:D6)

n°2176789
Egel
Posté le 21-02-2013 à 11:15:30  profilanswer
 

Ca marche parfaitement, merci !
 
Peux-tu m'expliquer le code ? Que je comprenne ce que j'écris...
 
Merci beaucoup

n°2176797
Marc L
Posté le 21-02-2013 à 11:31:48  profilanswer
 

 
          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 …
 

n°2176798
Egel
Posté le 21-02-2013 à 11:39:49  profilanswer
 

Ok,  
 
J'ai modifié le code pour que la valeur ne soit pas arrondie.
 
Tout marche impec, merci beaucoup
 
A bientôt  ;)

n°2176839
Marc L
Posté le 21-02-2013 à 14:16:20  profilanswer
 

 
           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 …
 

mood
Publicité
Posté le 21-02-2013 à 14:16:20  profilanswer
 

n°2177241
Marc L
Posté le 24-02-2013 à 11:32:02  profilanswer
 

 
           Rien de nouveau côté formule …
 
           Dans la fonction Lw, la ligne  Application.Volatile  n'est pas nécessaire dans ce cas …
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Calcul puissance acoustique

 

Sujets relatifs
(Python) Codage Puissance 4 + affichage consoleCalcul de durée entre deux dates.
[RESOLU] Calcul d'une sérieCalcul html avec wordpress
Calcul[VBA]Calcul du nombre de lignes avec 3 conditions non numériques
calcul de la convergence d'un RdNalgo calcul de volume objet 3d
Calcul de la norme d'un vecteur généré de façon aléatoire en langage CPHP : Calcul de moyenne par modalité
Plus de sujets relatifs à : Calcul puissance acoustique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR