Comment garder une variable d'une procédure à une autre
Mathioustone
Messages postés20Date d'inscriptionmercredi 22 décembre 2010StatutMembreDernière intervention16 mai 2011
-
4 mars 2011 à 09:31
Mathioustone
Messages postés20Date d'inscriptionmercredi 22 décembre 2010StatutMembreDernière intervention16 mai 2011
-
7 mars 2011 à 09:05
Bonjour à tous!
Sur mon programme, j'ai trois fonctions qui sont les suivantes:
?sub worksheet_change(Byval target as range) qui effectue une première saisie
?sub saisie2() qui permet une saisie manuelle des cellules restantes
?sub calcul() qui effectue les calculs selon les infos précédemment remplies
Le problème est le suivant:
j'utilise dans la fonction worksheet_change
i Target.Row afin d'avoir la ligne sélectionnée> date_travaux = Range("AV" & i)
Cependant, la valeur de i disparaît dès que je quitte ma fonction sub worksheet_change... j'ai pourtant essayé de déclarer avec static, avec public mais rien -_-
A quoi celà est dû? puis-je parer ce problème et si oui comment?
Merci de l'attention et bonne continuation
Math'
Apprendre le français avant d'apprendre tout autre langage est une chose essentielle
A voir également:
Comment garder une variable d'une procédure à une autre
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 20133 4 mars 2011 à 09:44
Tu as deux solutions.
1) déclare i en public. Pour cela tu dois taper dim i as string à la première ligne de ta macro (la deuxième si tu as un option explicite). i serra visible partout et serra modifiable partout.
2) tu créer un fonction. Car "a fonction sub" c impossible(crois moi ) qui retourne i. Tu auras un truc genre.
'appelle de la fonction
ValeurI = worksheet_change...()
'La fonction worksheet_change...
public function worksheet_change...() as string
dim i as string
...
...
i = Target.Row
worksheet_change... = i
end function
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 20133 4 mars 2011 à 10:34
Pas exactement. Tu auras
public function worksheet_change(byval target as range) as string
dim i as string 'je te conseil il ne faut pas gaspiller la mémoire
i = target.row 'avec le code qui suit
sub saisie2()
sub calculs()
worksheet_change = i
end function
un function te permet de retouner une valeur. Une sub ne te le permet pas.
Mathioustone
Messages postés20Date d'inscriptionmercredi 22 décembre 2010StatutMembreDernière intervention16 mai 2011 4 mars 2011 à 13:06
lorsque je compile, le débogueur m'affiche:
"erreur de compilation: la déclaration de la procédure ne correspond pas à la description de l'évenement ou de la procédure de même nom"
erreur dans la synthaxe peut-être?
Apprendre le français avant d'apprendre tout autre langage est une chose essentielle
Vous n’avez pas trouvé la réponse que vous recherchez ?
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 20133 4 mars 2011 à 13:23
Comme tu ne me transmets pas la ligne, je pars du principe que c'est depuis que tu as changé ta fonction comme cela plublic function Worksheet_Change(ByVal Target As Range) as string.
Il faut que la variable qui récupère la valeur de i soit du même type que i. Si i est un string l'appelle va ressemblé a cela
dim ValRetour as string
ValRetour = Worksheet_Change(Target)
et ta fonction (je me répète volontairement) serra
public function worksheet_change(byval target as range) as string
dim i as string 'je te conseil il ne faut pas gaspiller la mémoire
i = target.row 'avec le code qui suit
sub saisie2()
sub calculs()
worksheet_change = i
end function
Si i n'est pas un string il faut que tu adaptes.
Si tu as tjs des problèmes envoi la ligne d'appelle de la fonction et la fonction.
Mathioustone
Messages postés20Date d'inscriptionmercredi 22 décembre 2010StatutMembreDernière intervention16 mai 2011 7 mars 2011 à 09:05
oupss j'ai dû oublier un post -_- *boulet^^
Forum en question voir post #14. Voilà, avec ceci ça devrait être mieux :) J'ai changé la stucture de mon programme et j'ai pas réconditionné les variables et autres. je link prochainement ma code lorsqu'il sera finit définitivement pour les curieux :p
Merci à tous et bonne continuation
Math'
Apprendre le français avant d'apprendre tout autre langage est une chose essentielle