Bonsoir, voici mon problème. J'ai besoin de générer le jour de chaque mois auquel une valeurs est attribuée (nombre d'heures de service) . Il s'agit de faire la somme des heures de fonctionnement d'un moyen de transport pour chaque année puis d'une année sur l'autre sachant que le service est variable suivant le jour.
J'ai réussi à récupérer la valeur du jour avec WeekDay et à lui affecter la valeur voulu. On sélectionne le mois et l'année avec une liste déroulante.
Comme je dois sommer les 40 prochaines années, j'aimerais remplir automatiquement mon tableau. Voici ce que j'ai codé( sûrement très mal du reste) :
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
 
 
Private Sub Worksheet_Calculate()
 
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim m As Integer
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
 
 
 
 
 
For i = 7 To 37
 
j = Weekday(Cells(i, 5), vbSunday) ' affecte la valeur du jour à la variable j
 
 
 Cells(i, 6) = j   ' rempli les cellules avec la valeur 
 
 
    If j = 2 Then   ' affecte le nombre d'heures de service en fonction du jour
 
        Cells(i, 7) = 13.5
 
 
 
    ElseIf j = 3 Then   ' affecte le nombre d'heures de service en fonction du jour
 
        Cells(i, 7) = 17
 
 
 
    ElseIf j = 4 Then   ' affecte le nombre d'heures de service en fonction du jour
 
        Cells(i, 7) = 17
 
 
 
    ElseIf j = 5 Then   ' affecte le nombre d'heures de service en fonction du jour
 
        Cells(i, 7) = 17
 
 
 
    ElseIf j = 6 Then   ' affecte le nombre d'heures de service en fonction du jour
 
        Cells(i, 7) = 17.5
 
 
 
    ElseIf j = 7 Then   ' affecte le nombre d'heures de service en fonction du jour
 
        Cells(i, 7) = 17.5
 
 
 
    Else
 
        Cells(i, 7) = 14   ' affecte le nombre d'heures de service en fonction du jour
 
    End If
 
Next i
 
If Range("D2") = 2 Then   ' vérifie le mois
 
    a = WorksheetFunction.Sum(Range("G7:G34"))   ' fait la somme des heures du mois
 
    Range("F41") = a   ' assigne cette valeur 
 
  Else
 
    Range("F41").Clear   ' nettoie la valeur
 
End If
 
 
 
If Range("D2") = 4 Or Range("D2") = 6 Or Range("D2") = 9 Or Range("D2") = 11 Then   ' vérifie le mois
 
    c = WorksheetFunction.Sum(Range("G7:G36"))   ' fait la somme des heures du mois
 
    Range("F43") = c   ' assigne cette valeur
 
  Else
 
    Range("F43").Clear   ' nettoie la valeur
 
 
End If
 
If Range("D2") = 1 Or Range("D2") = 3 Or Range("D2") = 5 Or Range("D2") = 7 Or Range("D2") = 8 Or Range("D2") = 10 Or Range("D2") = 12 Then   ' vérifie le 'mois
 
    d = WorksheetFunction.Sum(Range("G7:G37"))   ' fait la somme 'des heures du mois
 
    Range("F44") = d   ' assigne cette valeur
 
  Else
 
    Range("F44").Clear    ' nettoie la valeur
 
 
End If
 
 
'TENTATIVE de placer mes valeurs dans le tableau et évidemment ça fait pas comme j'aimerais (vrai pour tout l,m donc on rempli toutes les cases)
 
For k = 1 To 24
  For l = 7 To 18
    For m = 11 To 42
 
  If Cells(2, 4) = 1 And Cells(4, 4) = k Then
 
    Cells(l, m) = Range("F44")
 
  ElseIf Cells(2, 4) = 2 And Cells(4, 4) = k Then
 
    Cells(l, m) = Range("F41")
 
  ElseIf Cells(2, 4) = 3 And Cells(4, 4) = k Then
 
    Cells(l, m) = Range("F44")
 
  ElseIf Cells(2, 4) = 4 And Cells(4, 4) = k Then
 
    Cells(l, m) = Range("F43")
 
  ElseIf Cells(2, 4) = 5 And Cells(4, 4) = k Then
 
    Cells(l, m) = Range("F44")
 
  ElseIf Cells(2, 4) = 6 And Cells(4, 4) = k Then
 
    Cells(l, m) = Range("F43")
 
  ElseIf Cells(2, 4) = 7 And Cells(4, 4) = k Then
 
    Cells(l, m) = Range("F44")
 
  ElseIf Cells(2, 4) = 8 And Cells(4, 4) = k Then
 
    Cells(l, m) = Range("F44")
 
  ElseIf Cells(2, 4) = 9 And Cells(4, 4) = k Then
 
    Cells(l, m) = Range("F43")
 
  ElseIf Cells(2, 4) = 10 And Cells(4, 4) = k Then
 
    Cells(l, m) = Range("F44")
 
  ElseIf Cells(2, 4) = 11 And Cells(4, 4) = k Then
 
 
    Cells(l, m) = Range("F43")
 
  ElseIf Cells(2, 4) = 12 And Cells(4, 4) = k Then
 
    Cells(l, m) = Range("F44")
 
  End If
    Next m
  Next l
Next k
 
 
End Sub

Merci d'avance pour toute aide .
Cordialement.