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

Résolu
Panodrek Messages postés 130 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 16 juillet 2009 - 4 mars 2009 à 16:02
Panodrek Messages postés 130 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 16 juillet 2009 - 4 mars 2009 à 16:59
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...
A voir également:

2 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 mars 2009 à 16:28
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
3
Panodrek Messages postés 130 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 16 juillet 2009
4 mars 2009 à 16:59
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é :)
0
Rejoignez-nous