|
|
|
|
Bonjour marie,
|
Merci à toi!!
|
En fait j'ai une serie des dates (colonne A)et des vL (colonne B)
|
Bonjour marie,
|
Est ce que je peux mettre les 127 valeurs que j'ai dans un tableau ? j'arrive pas à identifier les variables d'entrer dans la fonction
|
Bonjour,
Dim max As Double Le mot [ max ] est un mot réservé. La déclaration suivante est incomplète :
If max < Range("C2").Offset(i - 1) Then
La méthode offset possède 2 dimensions ! Perso je ne l'ai jamais utilisé de façon implicite a une dimension, je recommande l'utilisation de : Offset( i - 1, 0 ) Pour retourner une valeur, celle-ci doit être affecté ! La fonction est déclaré comme suit : Function gestion(N As Integer) As double Par analogie, il faut lire : [ Dim Gestion As Double ] d'où le besoin de faire l'affectation !
...
Range("i2").Offset(i - 1) = Range("h2").Offset(i - 1) * Range("G2").Offset(i - 1) / Range("A2").Offset(i - 1)
Next i
ActiveSheet.Range("i2:i9").Clear
Gestion = s
End Function
J'ai bien testé le code, mais celui-ci tombe dans une boucle récursive, lors de l'instruction :
Range("E2").Offset(i - 1,0) = Ce_max
En fait je suis un peu d'accord avec gbinforme, cette fonction devrait plutôt être une procédure évènementielle. Lupin |
Re :
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Resultat As Double
If (Target.Address = "$A$1") Then
If ((Target > 0) And (Target < 250)) Then
Resultat = Gestion(Target.Value)
End If
End If
End Sub
'
Function Gestion(N As Integer) As Double
Dim i As Integer
Dim s As Double
Dim CeMax As Double
Dim datecheance As Range
Dim datevalo As Range
s = 0
CeMax = 0
Set datevalo = Range("B2")
Set datecheance = Range("B128")
For i = 1 To N
If CeMax < Range("C2").Offset(i - 1, 0) Then
CeMax = Range("C2").Offset(i - 1, 0)
End If
Range("E2").Offset(i - 1, 0) = CeMax
If Range("E2").Offset(i - 1, 0) >= 1050 And Range("E2").Offset(i - 1, 0) <= 1100 Then
Range("F2").Offset(i - 1, 0) = 0.5 * (Range("E2").Offset(i - 1, 0) + 1050)
ElseIf Range("E2").Offset(i, 0) >= 1100 And Range("E2").Offset(i - 1, 0) <= 1150 Then
Range("F2").Offset(i - 1, 0) = 0.5 * (Range("E2").Offset(i - 1, 0) + 1100)
ElseIf Range("E2").Offset(i - 1, 0) >= 1150 Then
Range("F2").Offset(i - 1, 0) = 0.5 * (Range("E2").Offset(i - 1, 0) + 1150)
Else
Range("F2").Offset(i - 1, 0) = 0.5 * (Range("E2").Offset(i - 1, 0) + 1000)
End If
s = s + Range("F2").Offset(i - 1, 0)
Range("G2").Offset(i - 1, 0) = s
Range("h2").Offset(i - 1, 0) = Exp((datecheance - datevalo.Offset(i - 1, 0)) / 365)
If (Range("A2").Offset(i - 1, 0).Value > 0) Then
Range("i2").Offset(i - 1, 0) = Range("h2").Offset(i - 1, 0) * Range("G2").Offset(i - 1, 0) / Range("A2").Offset(i - 1, 0)
Else
Range("i2").Offset(i - 1, 0).Value = 0
End If
Next i
ActiveSheet.Range("i2:i9").Clear
Gestion = s
End Function
'
attention, le code n'est pas testé, n'ayant pas de données. Lupin |