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?
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")
Ca marche pas... Pourquoi? Quelqu'un peut m'aider?
Merci Et bon Week End!! lol
Guillaume
.
-- Cordialement,
Michel Gaboly http://www.gaboly.com
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" <gee-dee-@discussions.microsoft.com> a écrit dans le message de
news: 12f1f01c3f7aa$4a2781f0$a101280a@phx.gbl...
;-)))
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
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Guillaume" <ggaufroy@free.fr> a écrit dans le message
news:
#NiQmT69DHA.888@tk2msftngp13.phx.gbl...
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")
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")