Bonjour le fil, bonjour le forum,
Une proposition VBA avec la macro ci-dessous :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim T As Integer 'déclare la variable T (Total)
Dim J As Integer 'déclare la variable J (incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Set O = Worksheets("Feuil1") 'définit l'onglet O
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
DL = O.Cells(Application.Rows.Count, "G").End(xlUp).Row 'définit la dernière ligne édité DL de la colonne G de l'onglet O
For I = 11 To DL 'boucle sur toutes les lignes I de 11 à DL
'si la cellule ligne de la boucle, colonne "H" est une date, alimente le dictionnaire D
If IsDate(O.Cells(I, "H").Value) Then D(O.Cells(I, "H").Value) = O.Cells(I, "H").Value
Next I 'prochaine ligne de la boucle
TMP = D.keys 'renvoie dans le tableau temporaire D la liste des dates du dictionnaire D sans doublon
O.Range(O.Cells(5, "M"), O.Cells(6, Application.Columns.Count)).ClearContents 'efface d'éventuelles anciennes données
For I = 0 To UBound(TMP) 'boucle 1 : sur toutes les dates du tableau temporaire D
T = 0 'initialise le total T
For J = 11 To DL 'boucle 2 sur toutes les lignes J de 11 à DL
'si la cellule ligne de la boucle 2 colonne "I" est vide et que la date de la même ligne colonne "H" correspond à la date de la boucle 1, incrémente le total T
If O.Cells(J, "I") = "" And O.Cells(J, "H") = TMP(I) Then T = T + 1
Next J 'prochaine ligne de la boucle 2
'définit la cellule de destination DEST (M5 si M5 est vide, sinon la première cellule vide de la ligne 5 après la colonne M)
If O.Range("M5").Value = "" Then Set DEST = O.Range("M5") Else Set DEST = O.Cells(5, Application.Columns.Count).End(xlToLeft).Offset(0, 1)
DEST.Value = TMP(I) 'renvoie la date de la boucle 1 dans dest
DEST.Offset(1, 0).Value = T 'renvoie de total T sous dest
Next I 'prochaine date de la boucle 1
End Sub