CountIf argument multiple

Résolu
pou pouille Messages postés 212 Statut Membre -  
pou pouille Messages postés 212 Statut Membre -
Bonjour,
je vais essayer d'etre le plus clair possible ,
je souhaiterais compter le nombre de cellules avec plusieurs critère le premier est la vaiable K ( je cherche cette valeur dans la colonne B), le deuxième est qu'il ne doit pas compter lorsqu'il trouve "* B" dans la colonne C (en regard avec la ligne)
petit exemple
A B C
1 toto B
1 1
1 1
1 toto B

je veux qu'il me renvoie 2 puisque ma variable k ici sera à 1
dans l'attente de réponse je poste aussi la fonction tel que je l'ais écrite :
qte = Application.WorksheetFunction.CountIf(Sheets("Recap").Range("B2:B" & lignes), k And "C:C" <> "* B")

3 réponses

  1. ladameblanche Messages postés 318 Date d'inscription   Statut Membre Dernière intervention   89
     
    Peut-être ça
    http://www.cijoint.fr/cjlink.php?file=cj200910/cijsOwc6Ns.xls
    0
  2. pou pouille Messages postés 212 Statut Membre 31
     
    cela pourai fonctionner oui mais jme suis mal exprimer
    il n'y as rien dans la colonne C , la colonne B est "toto B"
    et il y as un petit problème d'automatisation j'ai cré une macro pour ce que je souhaite faire parce que j'ai au moins 300 lignes avec des nombres qui varie ( K ).

    en tout cas merci pour la réponse rapide ^^
    0
  3. pou pouille Messages postés 212 Statut Membre 31
     
    bon avec l'aide d'un autre forum j'ai enfin solution à mon problème , je post le code si des fois cela pouvais servire à quelqun.

    Sub Macro1()
    Dim DicoBoite As Object, Boite As Range, DerLig As Integer, Lig As Integer, Elmnt As Variant
    Dim Qte As Integer, QteB As Integer, QteC As Integer
    Application.ScreenUpdating = False
    [E2:E65000].ClearContents
    Set DicoBoite = CreateObject("Scripting.Dictionary")
    DerLig = [B65000].End(xlUp).Row
    'on identifie la liste unique des boites
    For Each Boite In Range([B2], [B65000].End(xlUp))
    If Not DicoBoite.Exists(Boite.Value) Then DicoBoite.Add Boite.Value, Boite.Value
    Next Boite

    For Each Elmnt In DicoBoite.items
    Lig = [E65536].End(xlUp).Row + 1
    Qte = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)<>""C"")*(RIGHT(C2:C" & DerLig & ",1)<>""B""))")
    QteB = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)=""B""))")
    QteC = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)=""C""))")
    If Qte > 0 Then
    Range("E" & Lig).Value = Elmnt
    Range("F" & Lig).Value = Qte
    Range("G" & Lig).Value = Columns(2).Find(Elmnt, LookIn:=xlValues, lookat:=xlWhole).Offset(0, -1).Value
    Lig = Lig + 1
    End If
    If QteB > 0 Then
    Range("E" & Lig).Value = Elmnt & "B"
    Range("F" & Lig).Value = QteB
    Lig = Lig + 1
    End If
    If QteC > 0 Then
    Range("E" & Lig).Value = Elmnt & "C"
    Range("F" & Lig).Value = QteC
    Lig = Lig + 1
    End If
    ' Range("E" & Lig).Value = Elmnt: Range("E" & Lig + 1).Value = Elmnt & "B": Range("E" & Lig + 2).Value = Elmnt & "C"
    ' Range("F" & Lig).Value = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)<>""C"")*(RIGHT(C2:C" & DerLig & ",1)<>""B""))")
    ' Range("F" & Lig + 1).Value = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)=""B""))")
    ' Range("F" & Lig + 2).Value = Evaluate("SUMPRODUCT((B2:B" & DerLig & "=" & Elmnt & ")*(RIGHT(C2:C" & DerLig & ",1)=""C""))")
    Next
    End Sub
    0