CountIfs

RYJITS

XLDnaute Nouveau
bonjour,

j'ai un problème avec le code ci dessous avec la fonction countfits.
si j'y intégré un seul argument le code fonctionne mais avec deux argument j'ai un code erreurs 1004. j'ai essayez plusieurs façons mais rien à faire.

merci d'avance de votre aide

Sub code_Absence()
'
' code_Absence Macro
'

Dim TotalAbsents As Integer
Dim colSem As Integer
Dim colSem2 As Integer

Range("H7").Select
ligne = 3


Pool = Range("D:D").Address
Semaine = Selection.Value
colSem = ActiveCell.Column
col2Sem = ActiveCell.Column + 7
code = Sheets("Code absence").Cells(ligne, 1).Value

Do While code <> ""

Actions_Absence = Sheets("Code absence").Cells(ligne, 3).Value
code = Sheets("Code absence").Cells(ligne, 1).Value
PSB = Application.WorksheetFunction.CountIfs(Range(Columns(colSem), Columns(col2Sem)), code, Range(Columns(5)), "=BSMR")

If Actions_Absence = "Absent" And PSB > 0 Then

TotalAbsents = TotalAbsents + PSB
ligne = ligne + 1

Else

ligne = ligne + 1

End If

Loop
'
End Sub
 

Paf

XLDnaute Barbatruc
Re : CountIfs

Bonjour,

WorksheetFunction.CountIf, comme la fonction NB.SI (et pour cause), n'accepte qu'une plage de recherche et un critère.

Précisez donc ce que vous cherchez à déterminer avec:
PSB = Application.WorksheetFunction.CountIfs(Range(Columns(colSem), Columns(col2Sem)), code, Range(Columns(5)), "=BSMR")

avec ces précisions un intervenant pourra sans doute mieux vous orienter : scinder en deux, autre fonction ...

A+
 

RYJITS

XLDnaute Nouveau
Re : CountIfs

Bonjour,
Comme vous l'avez remarque j'utilise bien countifs et pas countif et donc la fonction devrais accepter plusieur critères. Je cherche a comptabiliser le nombre de code inscrit dans la plage entre deux colonne défini par les variable colsem et colsem2 si la valeur BSMR dans la colonne 5 est vrais.
Merci encore
 

Paf

XLDnaute Barbatruc
Re : CountIfs

Re,

Jusqu'à XL 2003 Countifs n'existait pas d'où ma méprise.

avec XL 2003, PSB = Application.WorksheetFunction.CountIf(Range(Columns(5)), "=BSMR") est en erreur et on doit modifier en PSB = Application.WorksheetFunction.CountIf(Range("E:E"), "=BSMR") pour que ça fonctionne.


Essayer peut être (je suppose, je ne peux pas tester), d'apporter cette modif à votre code ?

PSB = Application.WorksheetFunction.CountIfs(Range(Colum ns(colSem), Columns(col2Sem)), code, Range("E:E"), "=BSMR")

Bonne suite
 

RYJITS

XLDnaute Nouveau
Re : CountIfs

bonjour,
s'est la première chose que j'ai essayé même problème il n'accepte pas ma deuxième condition

les essai que j'ai fait

Range("E:E"), "=BSMR")
Range("E:E"), "BSMR")
"E:E", "=BSMR")
Range(Columns(5), Columns(5))

merci de consacrer du temps pour mon problème je pense que je vais essayer avec sommeprod ca devrais fonctionnée mais j'aimerais bien comprendre mon erreur
 

RYJITS

XLDnaute Nouveau
Re : CountIfs

bonjour,

la je sais plus ni avec countifs ni avec SumProduct

j'ai vraiment besoin d'un sérieux coup de main

merci encore

Sub comptage()

Dim TotalAbsents As Integer
Dim colSem As Integer
Dim colSem2 As Integer
Dim Ligne As Integer
Dim Actions_Absence As String
Dim code As String
Dim Plage As Range
Dim Plage2 As Range

Range("J7").Select
Ligne = 3

colSem = ActiveCell.Column
col2Sem = ActiveCell.Column + 7
code = Sheets("Code absence").Cells(Ligne, 1).Value
Set Plage = Range(Columns(colSem), Columns(col2Sem))
Set Plage2 = Range("E:E")

Do While code <> ""

Actions_Absence = Sheets("Code absence").Cells(Ligne, 3).Value
code = Sheets("Code absence").Cells(Ligne, 1).Value
'PSB = Application.WorksheetFunction.CountIfs(Plage, code, Plage2, "=BSMR")
PSB = Application.WorksheetFunction.SumProduct((Plage2 = "BSMR") * (Plage = " & code & "))


If Actions_Absence = "Absent" And PSB > 0 Then

TotalAbsents = TotalAbsents + PSB
Ligne = Ligne + 1

Else

Ligne = Ligne + 1

End If

Loop
'
End Sub
 

Paf

XLDnaute Barbatruc
Re : CountIfs

re,

Plage est une plage de 7 colonnes, peut_être que countifs, comme sumproduct, ne peut pas fonctionner avec plusieurs plages dont une multicolonne

essayer peut-être de traiter en plusieurs fois du style:

Code:
For i= colSem to colSem2
    PSB = PSB +  Application.WorksheetFunction.CountIfs(Range(Columns(i)), code, Range(Columns(5)), "=BSMR")
Next

Bonne suite
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz