Salut,
Je suis entrain de faire un classeur de simulation. Pour cela je doit calculer une cellule en fonction des résultats d'une autre feuille.
J'ai réalisé une macro pour réaliser cela. Elle fonctionne sans erreur lorsque je la test avec une procédure "test" mais dès que je l'utilise dans une formule le code plante après
Code : Sélectionner tout - Visualiser dans une fenêtre à part
.Range("H6") = ortFacette
sans émettre de code d'erreur et insère "#VALEUR" dans la cellule.

Quelqu'un aurait une solution?

Merci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
Public Function testCalculCr(nLigne As Integer) As Double
 
    Dim cell As Range
    Dim feuillePoutre As Worksheet
    Set feuillePoutre = Worksheets("calcul de poutre")
    Set cell = Worksheets("calcul d'une portion de came").Range("F" & nLigne)
    testCalculCr = calculCr(cell, feuillePoutre)
 
End Function
 
Public Function calculCr(ByVal cellCourrante As Range, ByRef feuillePoutre As Worksheet) As Double
 
    Dim nbligne As Integer
    Dim valCr As Double
    Dim ortFacette As Double
    Dim Flobjectif As Double, alpha As Double, Lreelle As Double
    Dim Flcourant As Double, effortCourant
    Dim i As Integer
 
    'Worksheets("calcul de poutre").Select
    'Dim feuillePoutre As Worksheet
    'Set feuillePoutre = Worksheets("calcul de poutre")
 
 
    ortFacette = cellCourrante.Offset(0, 7).Value
 
    'initialisation du calcul
    With feuillePoutre
        .Range("H6") = ortFacette
        Flobjectif = .Range("H7")
    End With
 
    effortCourant = 1
    i = 0
 
    Do
        With feuillePoutre
           .Range("D9") = effortCourant
           Flcourant = .Range("H12")
        End With
        effortCourant = effortCourant + (Flobjectif - Flcourant) / Math.Abs((Flobjectif - Flcourant)) * 0.5
        i = i + 1
    Loop While (Math.Abs((Flobjectif - Flcourant)) > 10 ^ -1) Or i > 1000
 
    calculCr = feuillePoutre.Range("H13")
 
End Function