countif en vba et plusieurs conditions

Christian3000

XLDnaute Nouveau
Bonjour à tous,

Question qui me semble un peu bête mais je n'ai pas réussi à trouver l'info tout seul :

Est-ce possible d'utiliser la fonction Countif, en vba, avec plusieurs conditions?

Si oui, quel est la syntaxe à utiliser?

Pour l'exemple, voici ma ligne :

Worksheets("Stats").Range("C6").Value = WorksheetFunction.CountIf(Worksheets("BD").Range("D10:D1350"), "X")

"X" est la 1ère condition et la 2ème que je n'arrive pas à ajouter serait non vide: "<>""".

Merci d'avance pour votre aide!

Christian
 

Christian3000

XLDnaute Nouveau
Re : countif en vba et plusieurs conditions

Bonjour,

Merci pour l'info!

En fait, Worksheets("BD").Range("D10:1350") fait référence à une colonne qui supportent environ 100 valeurs différentes ainsi que des cellules vides!
Mon but est d'inscrire dans une cellule tierce le nombre de valeurs X (ce qui est facile avec countif) mais aussi le nombre de toutes les autres cellules non vides dans une autre. Le problème avec une formulation du type : "countif(Plage,"<>X") est qu'elle inclut les cellules vides... Donc il me faut trouver un moyen d'exclure ces cellules vides du décompte!
Peut-être avec Is NotEmtpty en tête de formulation?

Bye bye,

Ch.
 

Christian3000

XLDnaute Nouveau
Re : countif en vba et plusieurs conditions

Avec un peu de réflexion on y arrive!
Voici ce que j'ai trouvé (et qui fonctionne):

(Soit N = valeurs différentes de X)

VariableN=Application.WorksheetFunction.CountIf(Worksheets("BD").Range("G10:G1350"), "<>X")
VariableVide=Application.WorksheetFunction.CountIf(Worksheets("BD").Range("G10:G1350"), "")

Worksheets("Stats").Range("I6").Value=VariableN-VariableVide
Worksheets("Stats").Range("H6").Value = WorksheetFunction.CountIf(Worksheets("BD").Range("G10:G1350"), "X")

End sub

Qu'en penses-tu?
 

thedjoul

XLDnaute Nouveau
Re : countif en vba et plusieurs conditions

Bonjour,


Je suis un peu nouveau et profite de ce sujet pour poser une question un peu plus générale quand à ce "countif". J'ai parcouru nombreux livres et forum et ne peut trouver réponse à la bête question suivante :

Dans un programme en VBA, j'utilise uniquement des "vecteurs" (genre truc(1 to 3) as variant), et j'essaie à tout prix d'appliquer la fonction countif(truc,0) à ce vecteur d'éléments numériques.

Il semble que même dans la dernière version d'excel 2010 cette satanée fonction countif (ou plus généralement les worksheetsfunctions, quoique MAX semble marcher) soit bornée à un range de CELLULES UNIQUEMENT (range("A1:A10")). C'est extrêmement frustrant puisque mon programme tourne en boucle et perds un temps considérable en affichant des valeurs, puis en effectuant le countif.

Je peux évidemment faire ça avec une loop + if mais ce countif semble plus rapide et plus compact au niveau codage.

Un grand merci à celui/celle qui me délivrera de cette souffrance :) !!!
 

Discussions similaires

Réponses
12
Affichages
400

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 071
Membres
104 020
dernier inscrit
Mzghal