Nom de cellule issue de countif

Fermé
kristof44 Messages postés 2 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 14 novembre 2011 - 9 juin 2008 à 21:22
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 - 11 juin 2008 à 09:49
Bonjour,
je cherche à composer une référence de cellule excel de type A10 par exemple
le A étant fixe, la valeur numérique de la cellule provenant d'un countif
Lorsque je lance la macro suivante le système me répond incompatibilité de type

Voici le code ...
Sub test()
Dim toto As Integer
Dim tata As String
toto = "=COUNTIF(R[-10]C:R[-1]C,""Y"")"
tata = "A" & toto
Range(tata).Select
End Sub

D'après ce que je comprend, la valeur renvoyée par le contiif n'est pas numérique.
Comment obtenir une valeur numérique ?
Avez vous une solution ?

Merci pour toute aide.

2 réponses

Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
10 juin 2008 à 10:24
Bonjour Kristof,
tu confonds deux choses : saisir une formule dans Excel avec VBA et exécuter une fonction Excel dans VBA.
"=COUNTIF(R[-10]C:R[-1]C,""Y"")" est une chaîne de texte, que tu écris dans une cellule Excel, pour en faire une formule. Exemple :
Activecell.FormulaR1C1 ="=COUNTIF(R[-10]C:R[-1]C,""Y"")"

C'est donc normal que toto, déclaré comme Integer, n'accepte pas une chaîne de texte.
Ce que tu peux faire, c'est faire le calcul dans Excel, puis récupérer le résultat dans ta variable toto :
Range("A20").FormulaR1C1 ="=COUNTIF(R[-10]C:R[-1]C,""Y"")"
toto = Range("A20").Value

Ou alors...

Pour exécuter une fonction Excel dans VBA, utilise la syntaxe suivante :
toto = Application.WorksheetFunction.CountIf(QuellePlage, "Y")

Remplace QuellePlage par la plage dans laquelle tu comptes les Y. La variable toto prendra la valeur du résultat de la fonction, qui sera compatible avec Integer.

A suivre...
0
Merci pour ton aide...
je vais abuser mais ... peux tume dire comment cumuler deux cellules en vba.
Dans deux variables tot1 et tot2 j'ai l'adresse des cellules à cumuler D16 et D54 par exemple
Dans la variable tot3 j'ai l'adresse de la variable ou je veux fair ele cumul D60;

sI tu as une soluce je suis preneur.

Encore merci
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
11 juin 2008 à 09:49
Salut,
c'est tout bête :
tot1 = "D16"
tot2 = "D54"
tot3 = "D60"
Range(tot3).Value = Range(tot1).Value + Range(tot2).Value
0