Bonjour,


J'ai besoin de votre aide.
J'ai trouvé une solution pour le calcul d'une moyenne (dans une autre discussion) voici le code:
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
49
50
 
Dim date_min, date_finale, date_j As Date
        Dim somm, ap_j, moy As Double
        Dim num_j_min, num_mois_min, num_mois_actuel, num_an_actuel, nbre_j_mois_actuel, num_an_minimale, nbre_ans, an, i, j As Integer
        'on initialise i à 1
        i = 1
        'date minimale dans la base
        date_min = Me.Historiques_barragesTableAdapter1.ScalarQueryMin_Date()
 
        'num jour de la date minimale
        num_j_min = date_min.ToString("dd")
 
        'num mois de la date min
        num_mois_min = date_min.ToString("MM")
 
        'num de l'année de la date minimale
        num_an_minimale = date_min.ToString("yyyy")
 
        'num mois actuel
        num_mois_actuel = DateTimePicker1.Value.ToString("MM")
 
        'num de l'année actuelle
        num_an_actuel = DateTimePicker1.Value.ToString("yyyy")
 
        'nombre de jour du mois actuel
        nbre_j_mois_actuel = Date.DaysInMonth(num_an_actuel, num_mois_actuel)
        ' on initilise an à 
        an = num_an_minimale
        'date final de control
        date_finale = CDate(nbre_j_mois_actuel & "/" & num_mois_actuel & "/" & an)
 
        'on initialise le nombre d'années à 0
        nbre_ans = 0
        'on initilise la somme à 0
        somm = 0
        If (num_mois_min < num_mois_actuel) Or (num_mois_min = num_mois_actuel And num_j_min = 1) Then
            an = num_an_minimale
                   Else : an = num_an_minimale + 1
                  End If
        Do While DateTime.Compare(DateTimePicker1.Value.ToShortDateString, date_finale.ToShortDateString) > 0
                       For j = 1 To nbre_j_mois_actuel
                date_j = CDate(j & "/" & num_mois_actuel & "/" & an)
                ap_j = CDbl(Me.Matable.GetDataBy(i, date_j.ToShortDateString).Item(0).X)
                somm = somm + ap_j
            Next
            nbre_ans = nbre_ans + 1
            an = an + 1
            date_finale = CDate(nbre_j_mois_actuel & "/" & num_mois_actuel & "/" & an)
        Loop
              moy = somm / nbre_ans

le problème c'est que je dois éxécuter ce code trois fois pour obtenir un fichier donné, et ceci prend beaucoup de temp.
Avez- vous une solution pour minimiser le temps d'éxécution?
Merci d'avance pour votre aide.