Passage d'une plage de cellule en parametre

Résolu/Fermé
CharlemagneKid Messages postés 19 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 15 octobre 2010 - 9 déc. 2009 à 16:39
CharlemagneKid Messages postés 19 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 15 octobre 2010 - 9 déc. 2009 à 17:13
Bonjour à toutes et à tous,

Je suis toujours sur mon fichier de congé, la deadline approche et un truc qui marchait ne marche plus.
En même temps, vu que ca tenait du miracle le fait que ca marche, ca devait arriver.

Bref, voici l'histoire:
le tableau ressemble a ca:
A B C D E
1 01/01 - 02/01 - 03/01 -04/01
2 Pierre ok ab ok ok
3 Paul ok ok ok ab
4 Jacques ok ok ok ab
5 Total 0 1 0 2

J'ai vachement simplifier le truc afin de ne pas vous embrouiller

En B5, C5, D5, E5, j'ai une formule pour compter le nbr d'absent, qui fait appel a une macro
B5 = CompteAbsent(B2;B4)
C5 = CompteAbsent(C2;C4)

C'est dans la macro que ca merde:

Public Function CompteAbsent(x As Range, y As Range)
For Each col In Range(x, y)
If col.Value = "ab" Then
Sum = Sum + 1
End if
Next
CompteAbsent = Sum
End Function

Au début, comme je disais, ca marchais, mais depuis que j'ai coder un peu partout autour, plus rien !

Après plusieurs recherche, je pense que je m'y prend mal.
Ca devrait plutot ressembler a un truc comme ca:

B5 = CompteAbsent(B2:B4)

et

Public Function CompteAbsent(x As Range)
For Each col In x
If col.Value = "ab" Then
Sum = Sum + 1
End if
Next
CompteAbsent = Sum
End Function

Mais ca, ca ne marche pas non plus, dans les deux cas, vba dit que col.Value sort du contexte et me jette

Je sollicite donc votre aide s'il vous plait (vous pouvez vous moquer de moi si vous voulez, je suis vraiment pas bon)

Merci d'avance.

6 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
9 déc. 2009 à 16:54
telle que ta fonction est correcte (quoique utiliser col comme variable pour une cellule ça embrouille un peu...)
1
bonjour
juste une suggestion : ne pourrais-tu pas virer tes macros et les remplacer par la fonction NB.SI
a+
0
CharlemagneKid Messages postés 19 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 15 octobre 2010
9 déc. 2009 à 16:51
Effectivement, ca aurait été préférable.

Mais en realité, je test non seulement le texte (et il peut ya avoir des dizaines de possiblités avec des resultats différents), je test la couleur des cellules, les commentaires sur les cellules,...

Bref, beaucoup trop de chose pour passr par une simple formule.
0
CharlemagneKid Messages postés 19 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 15 octobre 2010
9 déc. 2009 à 17:01
C'est vrai que "col", c'est pas le top !

Quand tu dis que la fonction est correct, tu parles de la 1ere version avec le passage de 2 parametres (x, y) x 1ere cellule et y derniere cellule) ou tu parles de la 2nd avec x qui représente la plage entiere ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
9 déc. 2009 à 17:07
Je n'ai regardé que la 2nde
0
CharlemagneKid Messages postés 19 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 15 octobre 2010
9 déc. 2009 à 17:13
Ca y est, c'est bon!

Ane que je suis, je faisais mon premier test sur la couleur de la cellule en faisant
if col.color = rouge then... au lieu de if col.interior.color = ...

d'où gros plantage de la macro !!!

Après modif, c'est tout bon !

Merci eriiic, tu es comme Chris, tu m'as ouvert les yeux ! ;o)
0