bonjour
je pense qu'il vaut mieux utiliser une fonction et que tu vas la mettre dans ta requête
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
| Option Compare Database
Option Explicit
Public ChoixAnnée As Long
Function F_ClaculConso(DD As Date, DF As Date, Consommation As Double) As Double
On Error GoTo suite_err
Dim NB As Integer, NBpart As Integer
Dim DFPart As Date
'mon test
'ChoixAnnée = 2003
If ChoixAnnée < Year(DD) Or ChoixAnnée > Year(DF) Or Consommation = 0 Then
F_ClaculConso = 0
Exit Function
End If
If ChoixAnnée = Year(DD) And ChoixAnnée = Year(DF) Then
F_ClaculConso = Consommation
Exit Function
End If
'on calcule le nombre de jour entre DD et DF
NB = DateDiff("d", DD, DF)
'on cherche le dernier jour de l'année
DFPart = DateSerial(ChoixAnnée, 12, 31)
'on calcule le nombre de jour entre DD et DFPart
NBpart = DateDiff("d", DD, DFPart)
'on calcule la consommation de DD jusqu'à DFPart
F_ClaculConso = (Consommation * NBpart) / NB
suite_exit:
Exit Function
suite_err:
MsgBox Err.Description & " >>> N° Err=" & Err.Number
Resume suite_exit
End Function |
ta variable public
Public ChoixAnnée As Long
te permet de choisir l'année
et tu lances ta requête
ci-joint un exemple
BOnne chance
Partager