Private Sub CommandButton1_Click() 'bouton "Calcul P1 et P2
Dim OT As Worksheet 'déclare la variable OT (Onglet des Totaux)
Dim DP1 As Date 'déclare la variable DP1 (Début Période 1)
Dim FP1 As Date 'déclare la variable FP1 (Fin Période 1)
Dim DP2 As Date 'déclare la variable DP2 (Début Période 2)
Dim FP2 As Date 'déclare la variable FP2 (Fin Période 2)
Dim O As Worksheet 'déclare la variable O (Onglets)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim CP1(1 To 4) As Variant 'déclare le tableau de 4 variables CP1 (Compteur Période 1)
Dim CP2(1 To 4) As Variant 'déclare le tableau de 4 variables CP2 (Compteur Période 2)
Dim I As Byte 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
ActiveCell.Select 'enlèce le focus au bouton
Set OT = Worksheets("TBD") 'définit l'onglet des totaux OT
DP1 = DateSerial(Year(OT.Range("C2").Value), Month(OT.Range("C2").Value), Day(OT.Range("C2").Value)) 'définit la date DP1
FP1 = DateSerial(Year(OT.Range("C3").Value), Month(OT.Range("C3").Value), Day(OT.Range("C3").Value)) 'définit la date DF1
DP2 = DateSerial(Year(OT.Range("C4").Value), Month(OT.Range("C4").Value), Day(OT.Range("C4").Value)) 'définit la date DP2
FP2 = DateSerial(Year(OT.Range("C5").Value), Month(OT.Range("C5").Value), Day(OT.Range("C5").Value)) 'définit la date DF2
For Each O In Worksheets 'boucle 1 : sur tous les onglet O du classeur
If Not O.Name = "TBD" Then 'condition : si le nom de l'onglet n'est pas "TBD"
TV = O.Range(O.Cells(9, 6), O.Cells(16, O.Cells(9, 6).End(xlToRight).Column)) 'définit le tableau des valeurs TV
For I = 5 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I de tableau des valeurs TV (en partant de la cinquième)
For J = 1 To UBound(TV, 2) 'boucle 3 : sur toutes les colonnes J de tableau des valeurs TV
'si la date ligne 1 colonne J de TV est comprise entre (ou égale) entre les date DP1 et DF1
'incrémente le compteur CP1 de la ligne I - 4 (E1, E2 E3 ou E4) avec la valeur ligne I colonne J de TV
If DP1 <= TV(1, J) And FP1 >= TV(1, J) Then CP1(I - 4) = CP1(I - 4) + TV(I, J)
'si la date ligne 1 colonne J de TV est comprise entre (ou égale) entre les date DP2 et DF2
'incrémente le compteur CP2 de la ligne I - 4 (E1, E2 E3 ou E4) avec la valeur ligne I colonne J de TV
If DP2 <= TV(1, J) And FP2 >= TV(1, J) Then CP2(I - 4) = CP2(I - 4) + TV(I, J)
Next J 'prochaine colonne de la boucle 3
Next I 'prochaine ligne de la boucle 2
End If 'fin de la condition
Next O 'prochain onglet de la boucle 1
OT.Range("C8").Resize(4, 1).Value = Application.Transpose(CP1) 'renvoie dans C8 redimensionnée le tableau CP1 transposé
OT.Range("D8").Resize(4, 1).Value = Application.Transpose(CP2) 'renvoie dans D8 redimensionnée le tableau CP2 transposé
OT.Range("C8").Resize(4, 1).NumberFormat = "[h]:mm;@" 'mise au format
OT.Range("D8").Resize(4, 1).NumberFormat = "[h]:mm;@" 'mise au format
End Sub