OVH Cloud OVH Cloud

Nb.Si dans VBA

12 réponses
Avatar
Guillaume
Bonjour a tous,

Comemnt faire pour écrire la fonction Nb.Si d'excel dans VBA

Voila le code

Private Sub CommandButton1_Click()
Dim maPlage As Range
Set maPlage = Worksheets("Vente Produits Février 2004").Range("A64:A6000")
reponse = Application.WorksheetFunction.Nb.Si(maPlage, "cells(1,1))
MsgBox reponse
End Sub

Ca marche pas... Pourquoi?
Quelqu'un peut m'aider?

Merci
Et bon Week End!!
lol

Guillaume

2 réponses

1 2
Avatar
Daniel.M
Dur, dur, le vendredi matin. :-)

Bon WE à toi aussi.

Daniel M.

"Jacky" wrote in message
news:
Ben Oui, il y a des jours comme cela....

Bon We
JJ



Avatar
Michel Gaboly
Bonjour,

Les fonctions de feuille de calcul ne peuvent être utilisées directement ;-((

Il faut passer par :

Application.WorksheetFunction. suivi du nom en anglais de la fonction.

Ceci est la syntaxe actuelle. Auparavant,

Application.

suffisait. Pour des raisons de compatibilité avec l'existant, il est toujours
possible d'utiliser cette version courte. Elle est d'ailleurs vivement
conseillée avec EQUIV(), auquel correspond MATCH() en anglais :

Application.WorksheetFunction.Match

est buggué tandis que

Application.Match

fonctionne correctement.


Par ailleurs, on ne peut quand on utilise ainsi dans VBA une fonction de feuille
de calcul utiliser directement une plage comme "A20:A300". Il faut fournir
à la fonction un objet Range.

L'autre option consiste à utiliser la fonction Evaluate à laquelle on passe
sous forme de chaine de caractères quotes (ou guillemets, ") avant et après,
la formule utilisée dans une feuille Excel, sans le signe "=", avec les
noms en anglais des fonctions et avec la virgule au lieu du point-virgule
comme séparateur d'argument.

On peut intégrer des variables dans l'argument passer à Evaluate, en
utilisant l'opérateur de concaténation, (&).

Evaluate peut être remplacé par des crochets. Dans ce cas, pas de quote,ni
d'intégration possible de variable, mais c'est plus concis.

Voici 6 varaintes qui fonctionnent :

Toto = Application.WorksheetFunction.CountIf(Selection, "zaza")
Toto = Application.WorksheetFunction.CountIf(Range("Noms", "zaza")
Toto = Application.WorksheetFunction.CountIf(Range("A1:B20"), "zaza")
Toto = Application.CountIf(Range("A1:B20"), "zaza")
Toto = Evaluate("Countif(A1:B50, ""zaza"")")
Toto = [Countif(A1:B50, "zaza")]



Heu merci...

Donc en gros ca fait

toto = countif("A20:A300", "zaza")

Car ca marche po chez moi...

Désolé

Guillaume

"Modeste" a écrit dans le message de
news: 12f1f01c3f7aa$4a2781f0$
;-)))
tsss.....tssss...
plutot :

COUNTIF
Counts the number of cells within a range that meet the
given criteria.
Syntax
COUNTIF(range,criteria)
Range : is the range of cells from which you want to
count cells.
Criteria : is the criteria in the form of a number,
expression, or text that defines which cells will be
counted. For example, criteria can be expressed as
32, "32", ">32", "apples".

'---------------------------
SUMIF
Adds the cells specified by a given criteria.
Syntax
SUMIF(range,criteria,sum_range)
Range is the range of cells you want evaluated.
Criteria is the criteria in the form of a number,
expression, or text that defines which cells will be
added. For example, criteria can be expressed as
32, "32", ">32", "apples".

Sum_range are the actual cells to sum.

@+

-----Message d'origine-----
Bonjour

Tu peux regarder du côté de SUMIF()

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Guillaume" a écrit dans le message
news:

#
Bonjour a tous,

Comemnt faire pour écrire la fonction Nb.Si d'excel
dans VBA



Voila le code

Private Sub CommandButton1_Click()
Dim maPlage As Range
Set maPlage = Worksheets("Vente Produits Février
2004").Range("A64:A6000")


reponse = Application.WorksheetFunction.Nb.Si
(maPlage, "cells(1,1))


MsgBox reponse
End Sub

Ca marche pas... Pourquoi?
Quelqu'un peut m'aider?

Merci
Et bon Week End!!
lol

Guillaume





.




--
Cordialement,

Michel Gaboly
http://www.gaboly.com



1 2