Compter via une clé primaire multi-critère

Bonjour, à tous.

Dans un premier temps je tient à remercier tous les lecteurs car les réponses sont très réactives et pertinentes.

Ensuite, je vous expose mon soucis:

Je cherche via un tableau de paiement par échéance de compter les clients selon plusieurs critères. c'est possibles avec les filtres et compter manuellement mais ça n'est pas professionnelle et c'est lourd.

1er demande :

Ce que je souhaite c'est de connaître le nombre de client qui ont payé par chèque ( un même client qui paye 2 fois ou 3 ... par chèque on ne le compte qu'une seule fois - par contre s'il paye ses échéances par différent mode de paiement alors on le compte pour chaque monde de paiment différent)

  • Mandat Cash
  • Etc...

2ème demande :

Je souhaiterais également combien de client ont effectuer un ou plusieurs paiement(s) ( soit seul le N° Client est la clé Primaire)

3ème demande :

Pour finir je souhaiterais savoir le nombre de paiement de chaque moyen de paiement :

  • Chèque
  • Mandat Cash
  • Etc...

Le résulat doit apparaître sous forme de message box en clickant sur 3 boutons.

Je ne vois pas du tout quel code VB je doit écrire et pourtant l'algorhytme est facile à visualiser.

MERCI A VOUS DE ME DONNER UN COUP DE MAIN.

Help ME.

30test-resultat.xlsx (12.40 Ko)

Bonjour,

Un essai par formules si tu veux bien..

Voir PJ

21crapoutz.xlsx (14.33 Ko)

@ + +

Bravo rachid..

Par macro c'est plus simple voici le travail. A savoir que pour avoir 6 il faut écrire 0 dans la macro 2 puisuqe je cherche le nombre de personnes ayant effectué plus que X paiements. => Plus que 0 = au moins 1

A noter que je ne suis pas d'accord avec les réponses de la demande 1 de Rachid, ni des tiennes d'ailleurs.

Sub toto1()
Dim i As Long, j As Long, cb As Long, cq As Long, mc As Long, es As Long, vb As Long
With Sheets("Feuil1")
    For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
    deja = False
        For j = i - 1 To 2 Step -1
            If .Range("B" & j) = .Range("B" & i) And .Range("D" & j) = .Range("D" & i) Then
                deja = True
            End If
        Next j
        If deja = False Then
            Select Case .Range("D" & i)
            Case "CB"
                cb = cb + 1
            Case "Chèque"
                cq = cq + 1
            Case "Mandat Cash"
                mc = mc + 1
            Case "Espèce"
                es = es + 1
            Case "Virement Bancaire"
                vb = vb + 1
            End Select
        End If
    Next i
End With
MsgBox "Le nombre de clients en CB est de : " & cb & vbNewLine & _
"Le nombre de clients en Chèque est de : " & cq & vbNewLine & _
"Le nombre de clients en Mandat Cash est de : " & mc & vbNewLine & _
"Le nombre de clients en Espèce est de : " & es & vbNewLine & _
"Le nombre de clients en Virement Babcaire est de : " & vb
End Sub

Sub toto2()
Dim i As Long, j As Long, tot As Long, nb As Integer, derlig As Long
nb = InputBox("Combien de paiements?")
With Sheets("Feuil1")
derlig = .Range("A" & .Rows.Count).End(xlUp).Row
    For i = 2 To derlig
        deja = False
        For j = i - 1 To 2 Step -1
            If .Range("B" & j) = .Range("B" & i) Then
                deja = True
            End If
        Next j

        If deja = False And Application.WorksheetFunction.CountIf(.Range("B2:B" & derlig), .Range("B" & i)) > nb Then
            tot = tot + 1
        End If

    Next i
End With
MsgBox "Le nombre de clients ayant effectué plus de " & nb & " paiments est de : " & tot
End Sub

Sub toto3()
Dim i As Long, j As Long, cb As Long, cq As Long, mc As Long, es As Long, vb As Long
With Sheets("Feuil1")
    For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
            Select Case .Range("D" & i)
            Case "CB"
                cb = cb + 1
            Case "Chèque"
                cq = cq + 1
            Case "Mandat Cash"
                mc = mc + 1
            Case "Espèce"
                es = es + 1
            Case "Virement Bancaire"
                vb = vb + 1
            End Select
    Next i
End With
MsgBox "Le nombre de paiements en CB est de : " & cb & vbNewLine & _
"Le nombre de paiements en Chèque est de : " & cq & vbNewLine & _
"Le nombre de paiements en Mandat Cash est de : " & mc & vbNewLine & _
"Le nombre de paiements en Espèce est de : " & es & vbNewLine & _
"Le nombre de paiements en Virement Babcaire est de : " & vb
End Sub

Merci c'est exactement ceux que je cherchais , et je confirme mon calcul était faux

Rechercher des sujets similaires à "compter via cle primaire multi critere"