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
sans émettre de code d'erreur et insère "#VALEUR" dans la cellule.
Code : Sélectionner tout - Visualiser dans une fenêtre à part .Range("H6") = ortFacette
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
Partager