Erreur de type 5 : argument ou appel de procédure incorrect
Résolu
Prunett
Messages postés
31
Statut
Membre
-
Prunett Messages postés 31 Statut Membre -
Prunett Messages postés 31 Statut Membre -
Bonjour,
Dans le cadre d'un projet, je dois calculer la gène dû au courant d'air. La formule est la suivante :
DR= 3.14*(34-temp_ext)*(vitesse_du_vent-0.05)^0.62
Je souhaite calculer DR pour chaque heure de l'année.
J'ai réalisé le code suivant :
Mais ce dernier ne fonctionne pas. En effet, j'ai une erreur de type 5 : Argument ou appel de procédure incorrect.
Je n'arrive pas à voir où est mon erreur.
En vous remerciant d'avance,
Dans le cadre d'un projet, je dois calculer la gène dû au courant d'air. La formule est la suivante :
DR= 3.14*(34-temp_ext)*(vitesse_du_vent-0.05)^0.62
Je souhaite calculer DR pour chaque heure de l'année.
J'ai réalisé le code suivant :
Sub Calcul_DR()
'Déclaration des variables
Dim tab_DR(8761) As Variant
Dim tab_temp_ext(8761) As Variant
Dim tab_vitesse_vent(8761) As Variant
Dim DR As Variant
For i = 0 To 8761
tab_temp_ext(i) = Sheets("Tableau données temp moy").Range("D" & i + 2)
tab_vitesse_vent(i) = Sheets("Tableau données temp moy").Range("AA" & i + 2)
DR = 3.14 * (34 - tab_temp_ext(i)) * (tab_vitesse_vent(i) - 0.05) ^ 0.62
tab_DR(i) = DR
Next
Worksheets("Tableau données temp moy").Cells(2, 55).Resize(UBound(tab_DR, 1)) = Application.Transpose(tab_DR)
End Sub
Mais ce dernier ne fonctionne pas. En effet, j'ai une erreur de type 5 : Argument ou appel de procédure incorrect.
Je n'arrive pas à voir où est mon erreur.
En vous remerciant d'avance,
A voir également:
- Vba argument ou appel de procédure incorrect
- Type de ram - Guide
- Tableau de combinaison loto 5/90 - Forum Logiciels
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur t32 ✓ - Forum Livebox
2 réponses
Bonjour,
Je pense que ça vient de là:
(tab_vitesse_vent(i) - 0.05) ^ 0.62
Si (tab_vitesse_vent(i) - 0.05) est inférieur ou égal à 0, élever à la puissance ^0.62 est interdit.
Il faudrait mettre abs((tab_vitesse_vent(i) - 0.05)) ^ 0.62
A+
Je pense que ça vient de là:
(tab_vitesse_vent(i) - 0.05) ^ 0.62
Si (tab_vitesse_vent(i) - 0.05) est inférieur ou égal à 0, élever à la puissance ^0.62 est interdit.
Il faudrait mettre abs((tab_vitesse_vent(i) - 0.05)) ^ 0.62
A+
Bonjour,
C'est un problème purement mathématiques.
J'ai essayé ta macro avec des valeurs bidons, et ensuite, lors d'un plantage, refait le même calcul avec une calculatrice (celle de windows). En fait, les deux calculateurs (excel et la calculette windows) ne parviennent pas à calculer une puissance décimale d'un nombre négatif.
(tab_vitesse_vent(i) - 0.05) ^ 0.62 lorsque tab_vitesse_vent(i) < 0.05 retourne une erreur de type 5...
C'est un problème purement mathématiques.
J'ai essayé ta macro avec des valeurs bidons, et ensuite, lors d'un plantage, refait le même calcul avec une calculatrice (celle de windows). En fait, les deux calculateurs (excel et la calculette windows) ne parviennent pas à calculer une puissance décimale d'un nombre négatif.
(tab_vitesse_vent(i) - 0.05) ^ 0.62 lorsque tab_vitesse_vent(i) < 0.05 retourne une erreur de type 5...
Le fait de transformer le nombre négatif en "positif" via abs, va fausser le résultat.
La puissance nième d'un nombre négatif est un nombre négatif.
Par exemple, la racine carrée de -9 est -3.
Or, en prenant la valeur absolue, on obtiendrait 3.
Il doit donc, selon moi (et je ne suis pas mathématicien plus que cela), multiplier ce résultat par -1 lorsque tab_vitesse_vent(i) - 0.05 est inférieur strictement à 0.
Pour cela, prunett peut utiliser une petite fonction de calcul, comme ceci :
appel de la fonction dans la Sub Calcul_DR :
Code de la function :