Bonjour à tous,
Je bute sur un problème de mise en œuvre de la prometteuse fonction SCAN, et apprécierais votre aide :
Dans mon classeur Excel j'ai les plages de formules suivantes
Etat_Charge (S24:S17780)
Consigne (O24:O17780)
Couleur (M24:M17780)
TotalPV_Avail (R24 :R17780)
HC__HP (N24:N17780)
Clipped_Grid2ESS_HC (T24:T17780)
Clipped_PV2ESS (U24:U17780)
Clipped_ESS_Out (V24:V17780)
IncDec (AQ24 :AQ17780)
Voici les équations des plages impliquées dans mon calcul final Etat_Charge:
Clipped_Grid2ESS_HC (T24:T17780)
=SI(NON($N24);0; SI(($S24+ChargeMaxHC_DH-$V24)<$O24;ChargeMaxHC_DH; MAX(0;$O24-$S24+$V24)))
Clipped_PV2ESS (U24:U17780)
=SI(($S24+$R24-$V24)<=Capacité_BS;$R24; Capacité_BS-($S24-$V24))
Clipped_ESS_Out (V24:V17780)
=SI(ET(N24;NON(M24="BU"));0;MIN(Simu_DH[@[GetRecord.Valeur (Wh)]];S24;DéchargeMaxHP))
IncDec (AQ24 :AQ17780)
=SOMMEPROD($T$22:$V$22;$T23:$V23) (avec $T$22:$V$22 = {1 ;1 ;-1})
Ainsi les 3 plages Clipped_Grid2ESS_HC, Clipped_PV2ESS, Clipped_ESS_Out dépendent de Etat_Charge sur la même ligne
mais la plage de somme/Soustraction IncDec dépendent de Etat_Charge de la ligne précédente
Nota : les autres plages de cellules ne dépendent PAS de Etat_Charge
Consigne (O24:O17780)
Couleur (M24:M17780)
TotalPV_Avail (R24 :R17780)
HC__HP (N24:N17780)
Quand j’écris l’équation de la plage Etat_Charge ainsi : SOMMEPROD(S$22:V$22;S23:V23) avec S$22:V$22 = {1 ;1 ;1 ;-1}, le calcul de Etat_Charge se déroule normalement sans référence circulaire et réalise bien l'équation suivante : Etat_Charge(n)=Etat_Charge(n-1)+IncDec(n-1) .
Par contre je trouve qu'Excel est très lent à recalculer la feuille de calcul !
C'est pourquoi je cherche à remplacer la formule de la plage Etat_Charge SOMMEPROD(S$22:V$22;S23:V23) par :
=SCAN(0; IncDec; LAMBDA(prevAcc; currentOrg;
LET(
accNMoins1; prevAcc;
inN; currentOrg ;
accN; accNMoins1 + inN;
accN
)
))
MAIS CECI entraîne une référence circulaire !
Avez-vous des suggestions ?
Merci