recuperer valeur cellule avec formule Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
f
fulgar
Jeune membre
Jeune membre
Messages : 19
Inscrit le : 6 juin 2016
Version d'Excel : 2007

Message par fulgar » 22 juin 2016, 22:32

bonjour,
je voudrais récupérer dans une variable VBA la valeur d'une cellule qui contient le résultat d'une fonction. j'ai utiliser la ligne du type

VAL = worksheets("calcul").cells(3,3).value
quand la cellule contient une valeur ça marche mais quand je veux récupérer le résultat d'une fonction dans la cellule en question ça ne marche pas. Il me retourne un erreur de compilation me disant qu'il y a une erreur de type.
Quelqu'un sait comment on fait.
je précise que je suis sous excel 2007
merci à vous.
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 7'073
Appréciations reçues : 370
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 22 juin 2016, 22:53

Bonsoir,

il n'y a rien à faire, car vous avez tout bon ! ;-)
Juste une erreur de déclaration de variable : votre variable VAL est déclarée comment ?
si vous avez DIM VAL As Integer
et que dans la cellule vous avez du texte alors vous essayez de mettre des patates dans des choux !!!

Donc pour être "variable" dimensionnez votre variable en Variant afin qu'elle "s'adapte" aux valeurs...
Le mieux est de "typer" au plus près de la réalité vos variables, donc faites un tour sur l'aide de VBA pour voir les différent type de variable et de choisir celui qui est le mieux adapté à votre valeur de cellule.

@ bientôt

LouReeD
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
f
fulgar
Jeune membre
Jeune membre
Messages : 19
Inscrit le : 6 juin 2016
Version d'Excel : 2007

Message par fulgar » 22 juin 2016, 23:29

Non le retour de la fonction est typé comme double et
la variable de VBA est aussi de type double
mais j'ai vu sur internet que si la formule était dans la case F8 par exemple et que ma variable VBA est test il suffisait d'écrire
dim test as double
test =[sheets1!F8]
je vais essayer demain sur mon code
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 22 juin 2016, 23:31

Bonsoir,

Val est un nom de fonction VBA... Il est toujours conseillé de ne pas utiliser de mots-clés du langage comme noms de variables !
(Certains sont carrément interdit, et dès qu'on les écrit d'une façon interprétée comme nom de variable, l'interpréteur se manifeste, mais ce n'est pas le cas de tous, loin de là, et cela peut toujours réserver des surprises.) :D

Cordialement.
Et salut à LouReed !
f
fulgar
Jeune membre
Jeune membre
Messages : 19
Inscrit le : 6 juin 2016
Version d'Excel : 2007

Message par fulgar » 23 juin 2016, 10:37

test =[sheets1!F8]
ca fonctionne.
Cordialement.
Avatar du membre
LouReeD
Contributeur
Contributeur
Messages : 7'073
Appréciations reçues : 370
Inscrit le : 14 octobre 2014
Version d'Excel : 2013 FR, 2016 FR
Contact :
Téléchargements : Mes applications

Message par LouReeD » 25 juin 2016, 09:00

Bonjour,

Maréchal ;-)
En effet c'est un point qui m'a échappé : les noms de variables réservés par VBA !
Mais n'y a t il pas un message d'erreur ou d'alerte lors de l'utilisation de ce type de variables lors de l'écriture du code ?

@ bientôt et merci de vos mercis !

LouReeD
Quelques règles à lire ICI ;;)
______________________________________________________Vous pouvez allez faire un tour sur : Index de "Mes applications" ;;)
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 25 juin 2016, 13:59

Re,

Pas de message direct (du moins je n'en ai jamais eu), mais indirectement pour certains le type de message qui indique que VBA attend autre chose (donc qu'il interprète bien comme un mot-clé utilisé avec une syntaxe erroné) : on ne fait pas tout de suite le rapprochement (au début de ce genre d'aventure...) mais quand le fait de changer ou ajouter une lettre au nom de variable élimine l'erreur, cela confirme bien les raisons de réagir de VBA.
Mais dans la plupart des cas pas de message à l'écriture du code, dysfonctionnement selon les cas lors de l'exécution qui se traduit soit par erreur (ce qui est le mieux !) soit par un résultat imprévu (plus vicieux, on peut y passer du temps !).
Il vaut mieux autant que possible éviter...

Re-bonne journée.
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message