Calcul de fréquence sans doublons

Bonjour,

Je suis à la recherche d'aide pour une formule.

Pour faire simple, e reçois un fichier tous les mois avec 3 colonnes :

  • date de la collecte
  • Producteur
  • tonnage

J'aimerai calculer le nombre de jours où il y a eu une collecte, par producteur, sachant que pour une même journée il peut y avoir plusieurs collecte (s'il y a eu plusieurs collecte en une journée, je veux que ça me compte 1)

J'espère avoir été claire dans mes explications et je remercie à l'avance les personnes qui voudront bien m'aider

(je mets un fichier en exemple si ça peut aider ...)

21classeur1.xlsx (9.76 Ko)

Merci !

Bonjour et bienvenue,

Une proposition

33classeur1.xlsx (16.02 Ko)

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

par formule je ne sais pas faire...

Bonjour ThauThème

En fait il suffit de faire un décompte, de l'inverser (1/fréquence) et d'en faire la somme ___ ce qui fait 1 pour chaque critère décompté

Bonjour,

Une proposition TCD (Excel 2013+).

Cdlt.

20classeur1-1.xlsx (124.03 Ko)

Bonjour,

Merci pour vos réponses.

ThauThème : je ne suis pas assez calée pour utiliser ta macro

Steelson et Jean-Eric, effectivement le tableau croisé est une bonne solution mais ne me convient pas dans le cas présent.

En effet, j'aimerais insérer le résultat dans un autre tableau existant qui a la forme : colonne A "producteur" et colonne B "nb de jours" sans avoir les sous-totaux pour chaque prod

Producteur Nb de jours

Producteur 1

Producteur 2

Producteur 3

Producteur 4

Producteur 5

Producteur 6

Bonjour,

Voir feuille Autres.

Cdlt.

21classeur1-1.xlsx (124.74 Ko)

Steelson et Jean-Eric, effectivement le tableau croisé est une bonne solution mais ne me convient pas dans le cas présent.

voici

bonjour Jean-Eric, je suppose qu'on a des solutions similaires !

21classeur1.xlsx (11.64 Ko)

Re,

Bonjour Steelson,

La réponse est non.

Mais pour cela tu dois télécharger ma proposition et ouvrir le fichier.

Bonne journée.

Cdlt.

ok

j'y avais pensé également en passant par le TCD

cela a en effet un intérêt si les données sont nombreuses car cela évite de calculer à chaque fois avec SOMMEPROD

donc Paquerette_36 peut cueillir la formule qui lui convient !

Rechercher des sujets similaires à "calcul frequence doublons"