autofill en conflit (de canard) avec une fonction ?

Le
maatthieu
resalut tout le monde
en fait je suis encore face un problme de ce satan autofill

je lance mon programme vba :

1)dans A2, ecrit ca : =f(A1) o f est une fonction qui marche et
A1 est un entier
2)dans A3, ecrit ca : = A2+n o n = 4
3)puis recopie vers la droite de 4 cases :
Range("A2:A3").AutoFill Destination:=Range("A2:E3"),
Type:=xlFillDefault

le programme s'arrete et j'ai un message d'erreur disant qu'il y a une
reference circulaire qu'il ne peut pas me montrer
je m'apercois qu'excel il y a des #VALUE! dans les cases B2:E3

je double clique sur B2, je vois qu'il y a bien marqu "=f(B2)", je
tape entre, et la oh miracle, toutes les cases B2:E3 se remplissent
des bonnes valeurs

ce qui prouve qu'il n'y a pas de reference circulaire

je soupconne un probleme de timing entre l'autofill et la fonction f

donc j'ai rajout :
1) Application.Calculate partout dans mon code pour qu'il recalcule la
page, mais non, #value! reste
2) j'ai dsactive la mise jour des recalculs :
Application.Calculation = xlCalculationManual
pour la reactiver a la fin de la procedure d'autofill
(Application.Calculation = xlCalculationAutomatic)
toujours la meme erreur :aie:

que pourrais-je essayer de plus ?
Vos réponses
Trier par : date / pertinence
maatthieu
Le #4373331
oui c'est ca, je commence à bien comprendre le probleme

en fait, des que l'on dit à excel de copier : "=f(A1)" dans A2, il le
fait et excel calcul automatiquement le resultat, comme si on double-
cliquait sur A2, qu'on rentrait nous meme "=f(A1)" et qu'on tapait
entrée

mais lorsque, dans une meme macro, on modifie A1 ultérieurement, la
fonction f contenue dans A2 n'est pas recalculée

voila je me suis fais bien avancé
mais je ne vois toujours pas comment on peut resoudre ce problème...
zOrg2net
Le #4373051
Bonjour,

Une suggestion, comme ça, sans avoir tout compris à ton pb, ni avoir testé.
Si une de tes macro modifie la valeur de A1, peut-être que pour recalculer A2
tu peux mettre un truc comme [A2].Activate, ce qui devrait remplacer Entrée ?
Enfin, peut-être. Ou un Refresh comme dans Access????

zOrg2net
7OuNet


oui c'est ca, je commence à bien comprendre le probleme

en fait, des que l'on dit à excel de copier : "=f(A1)" dans A2, il le
fait et excel calcul automatiquement le resultat, comme si on double-
cliquait sur A2, qu'on rentrait nous meme "=f(A1)" et qu'on tapait
entrée

mais lorsque, dans une meme macro, on modifie A1 ultérieurement, la
fonction f contenue dans A2 n'est pas recalculée

voila je me suis fais bien avancé
mais je ne vois toujours pas comment on peut resoudre ce problème...




maatthieu
Le #4372931
bien essayé mais j'ai l'impression que la macro se bloque des qu'il y
a #VALUE! qui apparait, donc meme si on met [A2].Activate apres, ce
n'est pas pris en compte
Publicité
Poster une réponse
Anonyme