Bonjour !

J'essai de coder une fonction relativement simple (comme j'y suis depuis un bout de temps, elle ne me paraît plus si simple). Cette fonction doit simplement prendre en argument un range (une plage de cellule comme A5:A20 par exemple) et incrémenter une variable de 1 à chaque fois qu'elle rencontre la valeur "P" dans une des cases de mon range.

Exemple : |P|Q|Q|P|P|A| résultat de la fonction : 3

Voila la fonction que j'ai faite. Le souci, c'est que un, elle ne marche pas et deux (mais c'est moins grave) elle est pas pratique car elle oblige à rentrer toutes les cellules de notre range une par une dans les arguments.

La raison pour laquelle elle ne marche pas : la comparaison If Elements(cmpt) = "P" ne renvoie jamais vrai, et le compteur ne s'incrémente donc jamais.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Function JourHoLigne3(ParamArray Elements() As Variant) As Long
 
Dim cmpt As Long
Dim Total As Long
Total = 0
 
If UBound(Elements) > -1 Then
    For cmpt = LBound(Elements) To UBound(Elements)
 
        If Elements(cmpt) = "P" Then Total = Total + 0.5
 
    Next cmpt
End If
 
MsgBox Elements(0)
 
JourHoLigne3 = Total
 
End Function
Merci de votre aide et bon weekend !