Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Besoin d'aide VBA appeler cellule

Nicolas17

XLDnaute Nouveau
Bonjour,

J'essaie de faire fonctionner mon programme mais il n'arrive pas à appeler les cellules correspondantes. Je suis néophyte avec VBA. J'aurai besoin d'aide c'est très important.

Sub Fltest()
Dim Am As Double
Dim Ac As Double

Am = Range("B25").Value 'InputBox("Indiquez la section transversale immergé en m")

Ac = Range("B22").Value 'InputBox("Indiquez le débit en m3/s")

resultat = Fl(Am, Ac) 'pour afficher la valeur de Fl

End Sub

Function equation(Ac As Double, Am As Double, F As Double)


equation = ((2 / 3) * (1 - (Am / Ac) + 0.5 * (F ^ 2))) ^ (3 / 2)

End Function

Function Fl(Ac As Double, Am As Double)

Dim X As Double

X = 1
While Abs(X - equation(Ac, Am, X)) > 0.001
X = equation(Ac, Am, X)
Wend
Fl = X

End Function




Merci à vous

Cordialement
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
à part B22 et B25
il est extrêmement hasardeux de pouvoir deviner la composition, le but de ton ouvrage.

Avant que de penser VBA ...
exploitez le B.A.BA des feuilles de calculs !!!
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Nicolas, ModesteGeedee
En fait votre formule ((2 / 3) * (1 - (Am / Ac) + 0.5 * (F ^ 2))) donne un résultat négatif ( -0.73)
Donc la racine donne une erreur.
Est ce Am/Ac ou Ac/Am ? Car à priori Ac > Am donc (1-Am/Ac)<0 ( pour un néophyte )
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si Am=200 et Ac=30 alors Am/Ac=200/30=6.666666
Donc 1-Am/Ac=-5.66666
Donc ou votre formule est fausse, soit les données sont fausses car cela conduit à une "racine négative"
Et par XL vous aurez la même chose.

Par contre si Am=30 et Ac=200 alors on obtient : 0,542515163850113


Sous XL vous pourriez le faire par calcul itératif en spécifiant un écart maximal dans les options.
Mais franchement à mes yeux il vaut mieux trois lignes de VBA.
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…