Pb transposition =SOMMEPROD(1/NB.SI(A1:A38;A1:A38)) en VBA
Résolu
VBACripteur
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'essai de transposer en VBA la formule ci-dessous:
=SOMMEPROD(1/NB.SI(A1:A38;A1:A38))
Dans une cellule, cette formule me retourne bien le nombre que je cherche.
J'ai donc essayé le code suivant en VBA:
Dim vEval as variant
Dim sRange1 as string
vEval = WorksheetFunction.SumProduct(1 / WorksheetFunction.CountIf(A1:A38,A1:A38))
=> erreur de compilation erreur de syntaxe
vEval = WorksheetFunction.SumProduct(1 / WorksheetFunction.CountIf(A1:A38;A1:A38))
=> erreur de compilation Attendu : séparateurde liste ou )
sRange1 = "A1:A38"
vEval = WorksheetFunction.SumProduct(1 / WorksheetFunction.CountIf(Worksheets("Sheet1").Range(sRange1), Worksheets("Sheet1").Range(sRange1)))
=> pas d'erreur de compilation mais quand je l'execute, erreur d'execution'13': Incompatibilité de type
Quelqu'un aurait-il une idée ?
J'essai de transposer en VBA la formule ci-dessous:
=SOMMEPROD(1/NB.SI(A1:A38;A1:A38))
Dans une cellule, cette formule me retourne bien le nombre que je cherche.
J'ai donc essayé le code suivant en VBA:
Dim vEval as variant
Dim sRange1 as string
vEval = WorksheetFunction.SumProduct(1 / WorksheetFunction.CountIf(A1:A38,A1:A38))
=> erreur de compilation erreur de syntaxe
vEval = WorksheetFunction.SumProduct(1 / WorksheetFunction.CountIf(A1:A38;A1:A38))
=> erreur de compilation Attendu : séparateurde liste ou )
sRange1 = "A1:A38"
vEval = WorksheetFunction.SumProduct(1 / WorksheetFunction.CountIf(Worksheets("Sheet1").Range(sRange1), Worksheets("Sheet1").Range(sRange1)))
=> pas d'erreur de compilation mais quand je l'execute, erreur d'execution'13': Incompatibilité de type
Quelqu'un aurait-il une idée ?
A voir également:
- Pb transposition =SOMMEPROD(1/NB.SI(A1:A38;A1:A38)) en VBA
- Nb.si en anglais - Guide
- Faites en sorte que la cellule a1 affiche exactement ce qui est montré sur cette image - Forum Excel
- Faites en sorte que la cellule a1 affiche exactement ce qui est montré sur cette image. quel mot apparaît en b1 ? - Forum Excel
- Nb.si contient texte ✓ - Forum Excel
- Si B1=oui A1=jaune - Forum Excel
2 réponses
Bonjour
sommeprod n'est pas la bonne fonction mais ca marche quand m^me
2 manières pour utiliser des matricielles en VBA
evaluate est à utiliser si on utilise des variables
Michel
sommeprod n'est pas la bonne fonction mais ca marche quand m^me
2 manières pour utiliser des matricielles en VBA
evaluate est à utiliser si on utilise des variables
Sub xxxx() MsgBox Evaluate("sum(1/countif(A1:A38,A1:A38))") MsgBox [sum(1/countif(A1:A38,A1:A38))] End Sub
Michel
Bonjour michel_m
Effectivement avec Evaluate("sum(1/countif(A1:A38,A1:A38))") j'ai bien le bon résultat mais en déclarant vEval comme int car le Evaluate me donne 5.999999999 alors que ce que je recherche c'est bien 6
En déclarant un int, le résultat est bien arrondi à 6.
Par contre, étant de nature curieuse,... peux-tu me dire pourquoi SOMMEPROD n'est pas la bonne fonction mais qui fonctionne quand même (mais pas dans mon exemple) ?
Effectivement avec Evaluate("sum(1/countif(A1:A38,A1:A38))") j'ai bien le bon résultat mais en déclarant vEval comme int car le Evaluate me donne 5.999999999 alors que ce que je recherche c'est bien 6
En déclarant un int, le résultat est bien arrondi à 6.
Par contre, étant de nature curieuse,... peux-tu me dire pourquoi SOMMEPROD n'est pas la bonne fonction mais qui fonctionne quand même (mais pas dans mon exemple) ?
Le but d'un sommeprod est de multiplier les conditions réussies -une condition réussie renvoie Vrai soit 1- et faire la somme de la colonne des valeurs des lignes réussies
ce qui pas le cas dans la formule de dénombrement car on fait "simplement" la somme inverse des nb.si: il n'y a donc pas de "prod" et somme suffit
marque résolu merci et bon après-midi
ce qui pas le cas dans la formule de dénombrement car on fait "simplement" la somme inverse des nb.si: il n'y a donc pas de "prod" et somme suffit
marque résolu merci et bon après-midi