Remplacer la fonction CountIfs VBA Excel 2003

Résolu/Fermé
Olivier67 - 17 nov. 2011 à 14:39
 Olivier67 - 21 nov. 2011 à 21:40
Bonjour,

J'ai fait une petite application qui me permet de compter le nombre de congés de personnel sur l'année.
Pour cela j'ai créé un petit code en VBA sous 2007.
Le problème c'est qu'à mon poste, je n'ai que 2003 et la fonction Countifs est inconnu sous 2003.
Je ne sais pas comment remplacer la fonction suivante:
La fonction a pour but de compter le nombre de C (comme congé) mis dans un tableau semestriel pour un mois donné.


C1 = WorksheetFunction.CountIfs(Semestre1.Range("b" & a + 2 & ":GP" & a + 2), "C", Semestre1.Range("b4:GP4"), "<" & Mois + 1 & "/01/" & Annee)

On peut apparement utiliser sumproduct mais je n'arrive pas à le coder correctement... si quelqu'un peut m'aider.

Merci d'avance

A voir également:

1 réponse

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié par pilas31 le 18/11/2011 à 17:39
Bonjour,

Je me suis essayé à l'exercice en 2003, j'avoue que ce n'est pas évident.
Je n'ai pas réussi à utiliser la fonction WorksheetFunction.sumproduct.

Par contre avec la fonction Evaluate aprés plusieurs essais je crois que je suis au résultat. Par contre je n'ai pas pu intégrer Semestre1 dans ma formule.

Comme c'est sans doute une feuille, je suggère de la sélectionner avant de lancer la fonction. Voila donc le résultat :

Semestre1.Select 
C1 = Evaluate("SumProduct(($b$" & a + 2 & ":$gp$" & a + 2 & " = ""C"")*($b$4:$gp$4 < DATEVALUE(""" & Mois + 1 & " / 1 / " & Annee & """)))")


J'avoue que c'est assez "ésotérique" mais chez moi cela fonctionne.

D'autres avis sont les biens venus.

Bien sur (j'entends d'ici les remarques) je sais bien qu'en faisant des boucles en VBA on peut obtenir le résultat plus facilement mais c'était un chalenge que de répondre exactement au problème posé par notre demandeur...

A+
Cordialement,
0
Merci beaucoup. Ca fonctionne parfaitement. J'avais vu que cette formule existait mais je n'arrivais pas à mettre les guillemets au bon endroit.

Merci encore
0