Bonjour,

J'ai un souci de recalcul (qui ne s'effectue pas donc) sur des cellules qui contiennent une fonction personnalisée.
Elle marche très bien, si je ré-entre dans la cellule puis valide avec entrée.
J'ai vu qu'il fallait mettre Application.Volatile, ce que j'ai fait, et qui ne fonctionne pas.
Pour info ma macro/fonction est dans un autre fichier (ouvert) que celui dans lequel s’effectue le calcul.

Pour infos voici la fonction, en vous remerciant par avance pour votre indulgence (elle est très moche mais elle fonctionne)


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
Function CalculStockFinition(Code As String) As String
Call declA 'cette sub déclare notament FIN comme une worksheet
Application.Volatile
Dim Codes() As String, CompteCabine(2) As Currency
Codes = Split(Code, "/")
 
 
 
Dim Resultats(0 To 3)
'remise à zero  - ----- J'imagine qu'un redim ferait l'affaire ?
    Resultats(0) = 0
    Resultats(1) = 0
    Resultats(2) = 0
    Resultats(3) = 0
 
 
Dim i As Integer, a As Integer
For i = 0 To UBound(Codes) - 1
 
        Resultats(0) = Resultats(0) + (RechercheValeur(Codes(i), 6, FIN) / 2)
        If RechercheValeur(Codes(i), 9, FIN) > 0 Then
            CompteCabine(0) = CompteCabine(0) + 1
            CompteCabine(1) = CompteCabine(1) + (RechercheValeur(Codes(i), 6, FIN) / 2)
            CompteCabine(2) = CompteCabine(2) + (RechercheValeur(Codes(i), 8, FIN))
        End If
        Resultats(2) = Resultats(2) + ((RechercheValeur(Codes(i), 5, FIN) + RechercheValeur(Codes(i), 9, FIN)) / 2)
        Resultats(3) = Resultats(3) + (RechercheValeur(Codes(i), 7, FIN) / 2)
 
Next i
        Resultats(0) = Resultats(0)
        If CompteCabine(1) < 1 Then
            Resultats(1) = 0
        Else
        Resultats(1) = Round((CompteCabine(1) / 420) + 1) * (CompteCabine(2) / CompteCabine(0))
 
        End If
 
        Resultats(2) = Resultats(2)
        Resultats(3) = Resultats(3)
 
CalculStockFinition = Resultats(0) & "/" & Resultats(1) & "/" & Resultats(2) & "/" & Resultats(3)
 
 
End Function
En vous remerciant par avance pour vos suggestions.

EDIT :
Cette marco fait recalculer la cellule (alors que le bouton recalcul non)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Cells(3, 14).FormulaR1C1 = Cells(3, 14).FormulaR1C1