Compter Sans Doublons Par Dates (Macro)

Bonsoir

Dans le fichier joint, je compte le nombre de noms sans doublons par dates.

J'aimerais obtenir ce résultat (291) par un code.

Merci par avance.

Amicalement

Nad

Bonsoir Nad,

J'ai simplement converti ta formule en VBA, c'est çà que tu voulais ?

Sub Macro1()
    Range("c2") = Application.CountIf(Range("Num"), 1)
End Sub

Bonne soirée

Claude

Bonsoir Claude

Merci de ton aide mais ce n'est pas ce que j'attends. Je me suis mal expliquée.

Je voudrais un code qui fait "tout en un", à savoir ne plus avoir besoin des formules en colonne C de la feuille BASE et obtenir ce résultat de 291.

Amicalement

Nad

re,

C'est bien ce que je pensais, c'était trop simple !

je ne sais pas faire sans cette colonne, mais on peut l'écrire et l'effacer ensuite.

Sub Macro2()
Dim Lg&, f1 As Worksheet, f2 As Worksheet
    Application.ScreenUpdating = False
    Set f1 = Sheets("Base")
    Set f2 = Sheets("RECAP")
    Lg = f1.Range("a" & Rows.Count).End(xlUp).Row
    '--- colonne temporaire ---
    f1.Range("c2:c" & Lg) = _
        "=IF($b2="""","""",SUMPRODUCT(($b$2:$b2=$b2)*($a$2:$a2=$a2)))"

    f2.Range("c2") = Application.CountIf(f1.Range("c2:c" & Lg), 1)
    f1.Columns("c").Clear
End Sub

Amicalement

Claude

Bonjour

Merci Claude.

Une des raisons pour laquelle je préfère un code à la formule est que mon nombre de lignes va être considérable à terme et j'ai peur que le fait de garder la formule SOMMEPROD dans le code ne ralentisse l'exécution.

Qu'en penses-tu ?

Amicalement

Nad

Bonjour

Je ne sais pas si c'est plus rapide ou moins

Il faut que la liste soit triée en fonction des dates

Bonsoir Nad, Banzai, forum,

Je vais peut-être dire une bêtise, mais il me semble que:

Noms sans doublons par dates,

çà revient à dire la base complète sans doublons, non ?

partant de là, je filtre avec Unique:=True et colonne "Noms" non vide

et je récupère le Sous.Total() filtré.

Cela n'est pas + rapide qu'avec la formule SommeProd

faudra tester les macros avec le fichier réel.

A toi de voir, tu as le choix

Amicalement

Claude

Bonsoir

Je viens de tester les 3 codes sur mon fichier réel (les 3 donnent la bonne réponse évidemment)

Code avec formules = 10 secondes

Code Filtre = 18 secondes

Code CreateObject("Scripting.Dictionary") = 5 secondes

Merci à tous les deux.

Amicalement

Nad

re,

à noter que la matricielle en B2 ralenti le code, ajoute un calcul manuel au départ

Application.Calculation = xlCalculationManual

et à la fin

Application.Calculation = xlCalculationAutomatic

çà change tout !

Claude

Bonjour

Merci Claude ; effectivement, c'est plus rapide.

Amicalement

Nad

Rechercher des sujets similaires à "compter doublons dates macro"