Re : Calcul automatique
Désolé yojema, je ne peux pas joindre le fichier, même une partie du fichier : beaucoup trop gros. Si je veux envoyer juste un bout, trop de boulot pour l'adapter. Mais je copie tout de même ci dessous les codes correcpondants.
Pierrot93, ça ne marche pas mieux. J'avais déjà essayé cette solution.
En fait, je pense que la fonction est lancée en même temps que la procédure. Et excel se comporte comme si la fonction devenait prioritaire devant la procédure qui n'est plus prise en compte.
Pour reprendre ton code, si je supprime la fonction, le mode de calcul passe en manuel sans pb. Si je laisse la fonction, le mode de calcul n'est pas changé
Codes
Procédure:
Public Sub Worksheet_Change(ByVal Target As Range)
' Macro de nettoyage des infos tribs lors d'un changement de type SLTE
' Laurence BISSON-BUET - Août 06
' Modifiée par Antoine OLIVIERO - Sept 06
On Error GoTo Out
If ProcIndice = 1 Then GoTo Out
If (Not Intersect(Target, Range("D😀")) Is Nothing) And Target.Row > 12 And InStr(1, ActiveCell.Value, "SLTE", 1) <> 0 Then
IndiceProtSheet = 1
If ActiveSheet.ProtectContents = True Then IndiceProtSheet = 0
ActiveSheet.Unprotect
ActiveCell.Offset(0, 1).Select
ActiveCell.ClearContents
If IndiceProtSheet = 0 Then ActiveSheet.Protect
End If
Out:
End Sub
fonction:
Function NbSpare(FITS, DaysRepair, ConfidenceLevel)
Const TempsFIT = 10 ^ 9
Dim lambdat As Variant
Dim n As Integer
Dim X As Integer
lambdat = (24 * FITS * DaysRepair) / TempsFIT
If FITS = 0 Then
NbSpare = 0
Else
If lambdat < 0.001 Then
NbSpare = 1
Else
n = 0
Do While Excel.WorksheetFunction.Poisson(n, lambdat, True) < ConfidenceLevel
n = n + 1
Loop
'
If n = 0 Then
NbSpare = 1
Else
NbSpare = n
End If
End If
End If
Out:
End Function