Recherche lignes en fonction de plusieurs critères

Bonjour,

il y a beaucoup de "il faut" et pas beaucoup de "merci" (aucun en fait) dans tes posts...

Très désagréable je trouve.

eric

salut eriiic

d'autant plus que je me suis deja pas mal troué pour arriver a une solution

je m'attend a une pj avec des x au droit du resultat attendu ;issus de cas complexifiés

cordialement

Je m'étais déjà retenu les autres fois mais là c'est abuser...

C'est vrai quoi, on est sensés être civilisés

Bonjour à tous,

Désolé si je vous ai paru désagréable mais ce n'était pas mon intention et je vous assure que je suis une personne très civilisée.

Je suis nouveau sur ce genre de forum et amateur sur Excel, j'essayais juste de vous expliquer au mieux mon problème et le merci serait venu naturellement ensuite.

MERCI beaucoup pour toutes les réponses que vous avez pu me fournir.

Cordialement,

Bonjour à tous,

J'ai essayé de trouvé une solution à mon problème mais je n'y arrive toujours pas

Si vous pouviez m'aider à trouver le résultat souhaité je vous en serait très reconnaissant.

En pièce jointe, un fichier dans lequel j'ai essayé d'être le plus clair possible.

Sur une journée, si un client appelle uniquement l'agence 2, il doit être dans ma liste de résultat. Mon but étant de recenser les clients qui appellent uniquement l'agence 2 sur une journée.

Si ce n'est pas clair pour vous, dites le moi et j'essaierai de vous expliquer au mieux.

Merci d'avance.

11fichier-4.xlsx (12.45 Ko)

bonjour

un ennieme essai

cordialement

Bonsoir à tous,

A tester avec le dernier fichier joint

Option Explicit
Sub test()
Dim a, e, v, w(), i As Long, dico As Object
    Set dico = CreateObject("Scripting.Dictionary")
    With Sheets("Feuil1")
        a = .Range("a1").CurrentRegion.Value
        For i = 3 To UBound(a, 1)
            If Not dico.exists(a(i, 1)) Then
                Set dico(a(i, 1)) = CreateObject("Scripting.Dictionary")
            End If
            If Not dico(a(i, 1)).exists(a(i, 2)) Then
                ReDim w(1 To 2)
            Else
                w = dico(a(i, 1))(a(i, 2))
            End If
            If Not IsEmpty(a(i, 3)) Then w(1) = w(1) + 1
            If Not IsEmpty(a(i, 4)) Then w(2) = w(2) + 1
            dico(a(i, 1))(a(i, 2)) = w
        Next
        For Each e In dico.keys
            For Each v In dico(e).keys
                If Not IsEmpty(dico(e)(v)(1)) Then dico(e).Remove v
            Next
        Next
        For Each e In dico.keys
            If dico(e).Count = 0 Then
                dico.Remove e
            End If
        Next
        With .Range("K5")
            .CurrentRegion.Clear
            If dico.Count > 0 Then
                .Resize(dico.Count, 1).Value = Application.Transpose(dico.keys)
            Else
                MsgBox "Pas d'appels uniques vers l'agence 2"
            End If
        End With
    End With
    Set dico = Nothing
End Sub

klin89

tulipe_4 a écrit :

bonjour

un ennieme essai

cordialement

Bonjour tulipe_4,

Merci pour ta réponse mais le résultat attentant ne convient pas car si le client a appelé également l'agence 1 le même jour jour que l'agence 2, il ne faut pas le comptabiliser.

Cordialement,


Klin89 a écrit :

Bonsoir à tous,

A tester avec le dernier fichier joint

Option Explicit
Sub test()
Dim a, e, v, w(), i As Long, dico As Object
    Set dico = CreateObject("Scripting.Dictionary")
    With Sheets("Feuil1")
        a = .Range("a1").CurrentRegion.Value
        For i = 3 To UBound(a, 1)
            If Not dico.exists(a(i, 1)) Then
                Set dico(a(i, 1)) = CreateObject("Scripting.Dictionary")
            End If
            If Not dico(a(i, 1)).exists(a(i, 2)) Then
                ReDim w(1 To 2)
            Else
                w = dico(a(i, 1))(a(i, 2))
            End If
            If Not IsEmpty(a(i, 3)) Then w(1) = w(1) + 1
            If Not IsEmpty(a(i, 4)) Then w(2) = w(2) + 1
            dico(a(i, 1))(a(i, 2)) = w
        Next
        For Each e In dico.keys
            For Each v In dico(e).keys
                If Not IsEmpty(dico(e)(v)(1)) Then dico(e).Remove v
            Next
        Next
        For Each e In dico.keys
            If dico(e).Count = 0 Then
                dico.Remove e
            End If
        Next
        With .Range("K5")
            .CurrentRegion.Clear
            If dico.Count > 0 Then
                .Resize(dico.Count, 1).Value = Application.Transpose(dico.keys)
            Else
                MsgBox "Pas d'appels uniques vers l'agence 2"
            End If
        End With
    End With
    Set dico = Nothing
End Sub

klin89

Bonjour Klin89,

Merci de ta réponse mais je connais pas ce langage, comment dois-je faire ?

Cordialement,

Rechercher des sujets similaires à "recherche lignes fonction criteres"