Bonjour,
Je sais cette discussion résolue mais n'ayant pas pu répondre hier suite à un problème d'affichage de mes discussions, je me permets de publier tout de même la réponse que j'avais préparée.
Il s'agit d'une fonction personnalisée nommée CountIfSum qui peut donc être utilisée indifféremment avec excel ou avec une procédure VBA.
Cette fonction renvoie le nombre de fois qu'il y a dans la plage définie dans l'argument Rng, les mots se trouvant dans la chaîne de caractères passée à l'argument Criterias (Les mots doivent être séparés par un point virgule. Exemple : toto;mama;titi
La fonction
Depuis excel (Voir illustration ci-dessous)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Function CountIfSum(Rng As Range, Criterias As String) As Long ' Arguments ' Rng (Range) ' Plage dans laquelle compter les cellules répondant aux critères ' Criterias (String) ' Critères à chercher séparés par des ; Const FormulaTemplate As String = "=COUNTIF(<Range>, <Criteria>)" Dim tbl() As String, Count, Sum, elem tbl = Split(Criterias, ";") For elem = 0 To UBound(tbl) Count = Evaluate(Replace(Replace(FormulaTemplate, "<Range>", Rng.Address), "<Criteria>", Chr(34) & tbl(elem) & Chr(34))) Sum = Sum + Count Next CountIfSum = Sum End Function
Depuis une procédure VBA
Code : Sélectionner tout - Visualiser dans une fenêtre à part =CountIfSum(A2:A15;C2)
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox CountIfSum(Range("A2:A15"), Range("C2"))
Illustration de la feuille Excel
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox CountIfSum(Range("A2:A15"), Join(Array("toto", "mama", "titi"), ";"))
Partager