Nom de cellule issue de countif

kristof44 Messages postés 2 Statut Membre -  
Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   309
 
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
kristof44
 
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   Statut Membre Dernière intervention   309
 
Salut,
c'est tout bête :
tot1 = "D16"
tot2 = "D54"
tot3 = "D60"
Range(tot3).Value = Range(tot1).Value + Range(tot2).Value
0