Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

range("C30").Value = 7 fait tout buguer

8 réponses
Avatar
maatthieu
salut tout le monde
dite, j'ai un petit pb sur excel
j'ai fait un programme avec vba que voici:

Option Explicit

Public Function b(flow As Double, flow_loss As Double)

Dim n As Double
n =3D flow - flow_loss
b =3D n
Range("C30").Value =3D 7
End Function

puis dans la feuille excel,
dans la cellule B34 est ecrit : =3Db(5;3) il apparait #VALUE! au lieu
de -2
par contre, si j'enl=E8ve la ligne Range("C30").Value =3D 7 il
apparait le bon resultat : -2

je ne comprend vraiment pas pourquoi

8 réponses

Avatar
MichDenis
Le problème de ta fonction personnalisée est cette ligne de code :
Range("C30").Value = 7

Une fonction est faite pour retourner une valeur dans la cellule qui
contient la fonction. C'est d'ailleurs la principale différence entre
une fonction et une procédure.

Si tu inhibe la ligne de code mentionnée, ta fonction devrait bien fonctionner.


a écrit dans le message de news:

salut tout le monde
dite, j'ai un petit pb sur excel
j'ai fait un programme avec vba que voici:

Option Explicit

Public Function b(flow As Double, flow_loss As Double)

Dim n As Double
n = flow - flow_loss
b = n
Range("C30").Value = 7
End Function

puis dans la feuille excel,
dans la cellule B34 est ecrit : =b(5;3) il apparait #VALUE! au lieu
de -2
par contre, si j'enlève la ligne Range("C30").Value = 7 il
apparait le bon resultat : -2

je ne comprend vraiment pas pourquoi
Avatar
maatthieu
oui, la fonction marche parfaitement sans cette ligne
mais j'en ai besoin ! :)
comment pourrais-je donner une valeur à une cellule quelconque sinon ?

je precise que la ligne range("C30").Value = 7 marche bien
dans un Sub...

merci de ta reponse MichDenis



Le problème de ta fonction personnalisée est cette ligne de code :
Range("C30").Value = 7

Une fonction est faite pour retourner une valeur dans la cellule qui
contient la fonction. C'est d'ailleurs la principale différence entre
une fonction et une procédure.

Si tu inhibe la ligne de code mentionnée, ta fonction devrait bien fonc tionner.


a écrit dans le message de news:

salut tout le monde
dite, j'ai un petit pb sur excel
j'ai fait un programme avec vba que voici:

Option Explicit

Public Function b(flow As Double, flow_loss As Double)

Dim n As Double
n = flow - flow_loss
b = n
Range("C30").Value = 7
End Function

puis dans la feuille excel,
dans la cellule B34 est ecrit : =b(5;3) il apparait #VALUE! au lieu
de -2
par contre, si j'enlève la ligne Range("C30").Value = 7 il
apparait le bon resultat : -2

je ne comprend vraiment pas pourquoi


Avatar
maatthieu
oui je precise que la cellule C30 n'est pas la cellule qui contient la
fonction b...
Avatar
MichDenis
Je réitère ce que je te disais, tu ne peux pas affecter
une valeur directement à une cellule à partir d'une fonction
à moins que cette cellule contienne la fonction.





a écrit dans le message de news:

oui je precise que la cellule C30 n'est pas la cellule qui contient la
fonction b...
Avatar
Garette
Bonsoir,

Ce que t'explique MichDenis, c'est qu'une fonction est faite pour renvoyer
un résultat dans la cellule où elle est saisie.
Range("C30").Value = 7 est une ligne qui va mettre 7 dans la cellule C30,
qui fait donc une action dans une autre cellule.
Effectivement, ça fonctionne dans une Sub pas pas dans une Function.
Il faut donc enlever cette ligne de ta Fonction.
Avatar
LSteph
Bonsoir Matthieu,

tu pourrais peut-être envisager
d'une part une sub qui met 7 en C30 et par ailleurs
utiliser une fonction pour le calcul souhaité.


Cordialement.

lSteph

salut tout le monde
dite, j'ai un petit pb sur excel
j'ai fait un programme avec vba que voici:

Option Explicit

Public Function b(flow As Double, flow_loss As Double)

Dim n As Double
n = flow - flow_loss
b = n
Range("C30").Value = 7
End Function

puis dans la feuille excel,
dans la cellule B34 est ecrit : =b(5;3) il apparait #VALUE! au lieu
de -2
par contre, si j'enlève la ligne Range("C30").Value = 7 il
apparait le bon resultat : -2

je ne comprend vraiment pas pourquoi



Avatar
maatthieu
bon ok :(
mais comment faire alors ? voici mon programme simplifié :

dans ma feuille excel :
A1 = 1
A2 = 1+A1
A3 = f(A2)

je dois faire une public function f:

do
A3=1+A2
stocker la valeur de A3 dans A1 <----comment faire alors ??
loop until A3> 100
f= A3


je ne peux pas reecrir tout en vba car c'est trop long, il faut que je
reutilise les calculs fait dans les cellules d'excel, que je le les
importe dans vba, et que je reecrive certaines cellules...

ca fait tres plaisir d'etre aidé, merci à vous

Bonsoir Matthieu,

tu pourrais peut-être envisager
d'une part une sub qui met 7 en C30 et par ailleurs
utiliser une fonction pour le calcul souhaité.


Cordialement.

lSteph

salut tout le monde
dite, j'ai un petit pb sur excel
j'ai fait un programme avec vba que voici:

Option Explicit

Public Function b(flow As Double, flow_loss As Double)

Dim n As Double
n = flow - flow_loss
b = n
Range("C30").Value = 7
End Function

puis dans la feuille excel,
dans la cellule B34 est ecrit : =b(5;3) il apparait #VALUE! au lieu
de -2
par contre, si j'enlève la ligne Range("C30").Value = 7 il
apparait le bon resultat : -2

je ne comprend vraiment pas pourquoi





Avatar
MichDenis
Désolé, je ne comprends pas ce que fais ta fonction.

Si au lieu d'écrire ton code, tu nous expliquais la problématique
que tu veux résoudre par ta fonction.