VBA Excel : Récupérer une valeur issu d'une formule dans une variable [Résolu]

Signaler
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009
-
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009
-
Bonjour.

Je programme actuellement une macro sous excel qui me permet d'effectuer des copier coller de résultat d'étude à partir de fichiers excel.

Ces données sont rangé par années.
Il y a un relevé par jours depuis 1994 qui est effectué et enregistré.

Pour pouvoir connaitre le nombre exact  de ligne à copier, je souhaite utiliser un nbval.

Cependant, cela me renvoie l'erreur suivante:

"Erreur d'execution 13: Incompatibilité de type".

Voici la partie de mon code qui me renvoie cette erreur:

   Dim x as integer
    ...
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "=SOMME(NBVAL(A:A)-4)"
    x = Sheets("" & RetourAnn).Range("D1").Value

Quelqu'un pourrait-il m'éclairer sur le problème que je rencontre?

PS: Lorsque je fais débogage et que je retourne sur le document excel, j'ai juste à cliquer sur la formule de cellule D1, et appuyer sur entrée pour que le programme reprenne normalement. Mais ce programme ne m'étant pas destiné personnellement, j'aimerais bien que les prochains utilisateurs n'ai pas besoin de faire ceci ainsi qu'aller dans l'éditeur de macro...

2 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
tu transmets un formule localisée (fr) et c'est MAAAAALLL...!!!
en plut, ta formule n'est pas en R1C1...

donc soit tu fais:

activecell.FormulaLocal = "=SOMME(NBVAL(A:A)-4)"
soit, et c'est bien mieux (portable) :
activecell.Formula = "=SUM(COUNTA(A:A)-4)"



mais ton code pourrait etre amélioré, en évitant ces incessant .Select .Activate....

Dim x As Integer
With ActiveSheet.Range("D1")
.Formula = "=SUM(COUNTA(A:A)-4)"
x = .Value
End With
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009

Merci, effectivement, j'avais pas vu que je m'étais planté, fallais mettre

ActiveCell.FormulaR1C1 = "=SUM(COUNTA(C[-3])-4)"

au lieu de

ActiveCell.FormulaR1C1 = "=SOMME(NBVAL(A:A)-4)"

grosse erreur d'inattention de ma part, merci de me l'avoir fait remarqué :)