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

Panodrek 131 Messages postés lundi 16 mars 2009Date d'inscription 16 juillet 2009 Dernière intervention - 4 mars 2009 à 16:02 - Dernière réponse : Panodrek 131 Messages postés lundi 16 mars 2009Date d'inscription 16 juillet 2009 Dernière intervention
- 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...
Afficher la suite 

Votre réponse

2 réponses

Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 4 mars 2009 à 16:28
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Renfield
Panodrek 131 Messages postés lundi 16 mars 2009Date d'inscription 16 juillet 2009 Dernière intervention - 4 mars 2009 à 16:59
0
Utile
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é :)
Commenter la réponse de Panodrek

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.