Bonjour le fil, bonjour le forum,
par formule je ne sais pas faire... Si une macro te convient, essaie comme ça :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim J As Integer 'déclare la variable J (incrément)
Dim Dat As Date 'déclare la variable Dat (Date)
Dim T As Integer 'déclare la variable T (Total)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Set O = Worksheets("Feuil2") 'définit l'onglet O
O.Cells(1, "E").CurrentRegion.ClearContents 'éfface d'éventuels anciens calculs
TV = O.Range("A1").CurrentRegion 'definit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
D(TV(I, 2)) = TV(I, 2) 'alimente le dictionnaire D
Next I 'prochaine ligne de la boucle
TMP = D.Keys 'récupères dans le tableau temporaire TMP la liste des producteurs sans doublon
Dat = 0 'initialise la date dat
For J = 1 To UBound(TMP) 'boucle 1 : sur tous les producteurs du tableau temporaire TMP
T = 0 'initialise le total T
For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeur (en partant de la seconde)
'condition : si le producteur de la ligne de la boucle 2 correspond au producteur de la boucle 1 et si la date est différente de dat
If TMP(J) = TV(I, 2) And DateSerial(Year(TV(I, 1)), Month(TV(I, 1)), Day(TV(I, 1))) <> Dat Then
T = T + 1 'incrémente le total T
Dat = DateSerial(Year(TV(I, 1)), Month(TV(I, 1)), Day(TV(I, 1))) 'redéfinit la date dat
End If 'fin de la condition
Next I 'prochaine ligne de la boucle 2
'définit la cellule de destination DEST (E1 si E1 est vide, sinon la première cellule vide de la colonne E)
If O.Cells(1, "E") = "" Then Set DEST = O.Cells(1, "E") Else Set DEST = O.Cells(Application.Rows.Count, "E").End(xlUp).Offset(1, 0)
DEST.Value = TMP(J) 'renvoie le producteur dans DEST
DEST.Offset(0, 1).Value = T 'renvoie le total T dans en colonne F
Next J 'prochain producteur de la boucle 1
End Sub