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...

2 réponses

Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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