OVH Cloud OVH Cloud

Empécher calcul d'une formule...

2 réponses
Avatar
Dush
Bonjour,
Je souhaiterais emp=E9cher le calcul d'une fonction si=20
certaines conditions ne sont pas respect=E9es :
Dans le genre, calculer MaCellule (qui contient une=20
formule) seulement si LC(-2) est modifi=E9e (modification=20
intercept=E9e avec worksheet_change() ).
En bref, je voudrais faire un MaCellule.Calculate=20
seulement si une autre r=E9f=E9rence est modifi=E9e=20
(intercept=E9e par worksheet_change)...

Mon probl=E8me est que je n'arrive pas =E0 emp=E9cher le calcul=20
de ma formule.

Je ne sais pas si j'ai =E9t=E9 clair...

Avez-vous des pistes ?

Merci.

2 réponses

Avatar
AV
Ne mets pas de formule dans la feuille mais fait le calcul directement dans
l'évènement Worksheet_Change
Ex : pour un calcul conditionné par la valeur de la cellule A1 :
Faire la somme de B1:B3 en B4 si la valeur de A1 = 10 (dans le module de la
feuille)

Private Sub Worksheet_Change(ByVal zz As Range)
If zz.Address <> "$A$1" Then Exit Sub
If zz = 10 Then [B4] = [sum(B1:B3)] Else [B4] = ""
End Sub

AV

"Dush" a écrit dans le message news:
144101c387fb$6361f110$
Bonjour,
Je souhaiterais empécher le calcul d'une fonction si
certaines conditions ne sont pas respectées :
Dans le genre, calculer MaCellule (qui contient une
formule) seulement si LC(-2) est modifiée (modification
interceptée avec worksheet_change() ).
En bref, je voudrais faire un MaCellule.Calculate
seulement si une autre référence est modifiée
(interceptée par worksheet_change)...

Mon problème est que je n'arrive pas à empécher le calcul
de ma formule.

Je ne sais pas si j'ai été clair...

Avez-vous des pistes ?

Merci.
Avatar
Bourby
bonjour,

je ne sais pas si ça répondra à ta question....

1- tu ne déclares pas la fonction "volatile"
2- tu rajoutes un paramètre "bidon", qui sert à pointer sur la cellule
(mettons A2) qui doit déclencher le recalcul.

De cette façon, quand tu modifies A2, le moteur d'inférence d'Excel
va recalculer ta fonction.

Par exemple si ton code était:

Function maFonction(var1,var2)
lignes de code
end Sub

il suffit d'écrire:

Function maFonction(var1,var2, maCelluleBidon)
lignes de code SANS "Application.volatile"
end Sub

Dis_moi si ça marche comme tu le souhaites.

Bourby


"Dush" a écrit dans le message news:
144101c387fb$6361f110$
Bonjour,
Je souhaiterais empécher le calcul d'une fonction si
certaines conditions ne sont pas respectées :
Dans le genre, calculer MaCellule (qui contient une
formule) seulement si LC(-2) est modifiée (modification
interceptée avec worksheet_change() ).
En bref, je voudrais faire un MaCellule.Calculate
seulement si une autre référence est modifiée
(interceptée par worksheet_change)...

Mon problème est que je n'arrive pas à empécher le calcul
de ma formule.

Je ne sais pas si j'ai été clair...

Avez-vous des pistes ?

Merci.