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

autofill en conflit (de canard) avec une fonction ?

3 réponses
Avatar
maatthieu
resalut tout le monde
en fait je suis encore face =E0 un probl=E8me de ce satan=E9 autofill...

je lance mon programme vba :

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

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=E9 "=3Df(B2)", je
tape entr=E9e, 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=E9 :
1) Application.Calculate partout dans mon code pour qu'il recalcule la
page, mais non, #value! reste
2) j'ai d=E9sactive la mise =E0 jour des recalculs :
Application.Calculation =3D xlCalculationManual
pour la reactiver a la fin de la procedure d'autofill
(Application.Calculation =3D xlCalculationAutomatic)
toujours la meme erreur... :aie:

que pourrais-je essayer de plus ?

3 réponses

Avatar
maatthieu
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...
Avatar
zOrg2net
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...




Avatar
maatthieu
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