xellstorm
FR
Ouvrir l’app

Migrer un modèle depuis @RISK, ModelRisk ou Analytic Solver

Guide · Mis à jour en octobre 2026

xellstorm ouvre sans le complément un fichier conçu pour @RISK, ModelRisk ou Analytic Solver. Il lit 164 de leurs fonctions de distribution et fait de chaque formule une entrée dont les paramètres restent liés à vos cellules. Avant le lancement, il liste ce qu’il a converti et chaque formule laissée de côté, avec la raison.

Ces 164 fonctions se répartissent ainsi : 53 pour @RISK, 62 pour ModelRisk et 49 pour Analytic Solver. xellstorm lit aussi 65 formes qui donnent une distribution par ses centiles, ainsi que la troncature, les marqueurs de sortie, les matrices de corrélation et les tables multi-simulations.

Ce que l’import trouve dans un fichier écrit pour @RISK

Le fichier reprend l’estimation de bâtiment de l’exemple sur la provision pour aléas d’un projet, écrite comme le serait un modèle conçu pour @RISK : chaque poste de coût est un =RiskPert(min, most likely, max, RiskName(label)) sur les cellules de sa ligne, chaque événement de risque un RiskBernoulli sur sa probabilité, le coût total et le dépassement portent un RiskOutput, Structure et MEP sont corrélés par RiskCorrmat, trois budgets figurent dans un RiskSimtable et une cellule donne le RiskMean du total. Une seconde feuille, « Demonstrations », contient cinq formules isolées : deux formes arithmétiques qui se convertissent et trois qui ne se convertissent pas. Nous avons généré le fichier par script : xellstorm n’a pas besoin de @RISK pour le lire, et vous non plus.

Dans l’application, Import from workbook, à l’étape Distributions, liste les formules trouvées (en ligne de commande, xellstorm import affiche la même liste). Pour ce fichier, il convertit 12 entrées : les 6 postes de coût, les 4 événements de risque et 2 démonstrations arithmétiques. Les postes de coût et les événements de risque gardent leurs paramètres liés aux cellules : modifier un min ou une probabilité dans le fichier change donc l’exécution suivante, et RiskName(A3) nomme chaque entrée d’après le texte de sa ligne. Les deux démonstrations converties sont un tirage normal multiplié par un facteur et un tirage dont la moyenne est calculée à partir d’une autre cellule. Aucune des deux n’intervient dans les sorties de l’estimation.

Ce que l’import convertit dans le fichier (cellules liées entre parenthèses, avec la valeur qu’elles contiennent)
CelluleFormule dans le fichierDevient
E3=RiskPert(B3,C3,D3,RiskName(A3))Aménagement du site : une PERT de min B3 (100), de plus probable C3 (120), de max D3 (170)
E4=RiskPert(B4,C4,D4,RiskName(A4))Fondations : une PERT de min B4 (300), de plus probable C4 (340), de max D4 (460)
E5=RiskPert(B5,C5,D5,RiskName(A5),RiskCorrmat(Correlation,1))Structure : une PERT de min B5 (760), de plus probable C5 (820), de max D5 (1 010)
E6=RiskPert(B6,C6,D6,RiskName(A6),RiskCorrmat(Correlation,2))MEP : une PERT de min B6 (540), de plus probable C6 (610), de max D6 (780)
E7=RiskPert(B7,C7,D7,RiskName(A7))Finitions : une PERT de min B7 (400), de plus probable C7 (450), de max D7 (560)
E8=RiskPert(B8,C8,D8,RiskName(A8))Équipements : une PERT de min B8 (260), de plus probable C8 (280), de max D8 (330)
D11=RiskBernoulli(B11,RiskName(A11))Conditions du sol : une loi de Bernoulli de probabilité B11 (0,25)
D12=RiskBernoulli(B12,RiskName(A12))Changement de conception : une loi de Bernoulli de probabilité B12 (0,35)
D13=RiskBernoulli(B13,RiskName(A13))Retard de fournisseur : une loi de Bernoulli de probabilité B13 (0,2)
D14=RiskBernoulli(B14,RiskName(A14))Fortes intempéries : une loi de Bernoulli de probabilité B14 (0,3)
Demonstrations!B3=RiskNormal(100,10)*1.1une loi normale de moyenne 100 et d’écart type 10, avec le tirage multiplié par 1,1 ; démonstration seulement, non utilisée par l’estimation
Demonstrations!B4=RiskNormal(Estimate!C3*1.1,10)une loi normale de moyenne Estimate!C3*1.1 (132) et d’écart type 10 ; démonstration seulement, non utilisée par l’estimation

Le même import lit le reste du modèle :

L’import liste aussi les formules qu’il ne convertit pas. Pour les 3 formules de la seconde feuille, il donne la raison, et chacune a une issue :

Ce que l’import ne convertit pas, avec la raison, sur la feuille « Demonstrations »
FormuleRaison donnéeQue faire
=RiskBinomial(1,0.3)*RiskTriang(20,40,80)« multiple distributions in one formula are not converted; give each distribution its own input cell » (plusieurs distributions dans une même formule ne sont pas converties : donnez à chacune sa propre cellule d’entrée)Séparez-la : une cellule =RiskBernoulli(0.3) pour savoir si le risque survient, une cellule =RiskTriang(20,40,80) pour son impact, et multipliez-les dans une troisième, comme le font les événements de risque de l’estimation.
=RISKCOMPOUND(RiskPoisson(3),RiskLognorm(10,3))« RISKCOMPOUND has no exact xellstorm equivalent » (aucun équivalent exact dans xellstorm)xellstorm n’a pas de distribution composée. Modélisez le nombre d’événements et leurs montants dans des cellules distinctes, ou laissez la cellule hors du modèle.
=RISKPERTALT(10%,90,"m.likely",100,90%,130)« RISKPERTALT has no exact xellstorm equivalent » (aucun équivalent exact dans xellstorm)Saisissez le min, le plus probable et le max de la PERT (RiskPert), ou donnez les centiles à RiskTrigen, qui est converti.

Exécution du modèle converti

Avec la configuration importée et 5 000 itérations, le coût total moyen est de 2 784,7 (milliers de dollars US). La moyenne exacte des mêmes distributions, soit les moyennes PERT (min + 4 × plus probable + max) / 6 plus la probabilité de chaque risque multipliée par son impact, vaut 2 784,7 ; l’erreur type de la moyenne simulée est de 1,7. Structure et MEP atteignent une corrélation de rang de 0,60. Voici les trois budgets du RiskSimtable, lancés comme exécution de référence et deux scénarios :

Le modèle importé, exécuté : probabilité que le coût total dépasse chaque budget du RiskSimtable (5 000 itérations, milliers de dollars US)
ExécutionBudgetProbabilité de dépassement
Exécution de référence (simulation 1)2 90017,7 %
Simulation 23 0005,2 %
Simulation 33 1000,7 %

Un budget plus élevé est dépassé moins souvent, et comme les scénarios tirent les mêmes nombres que l’exécution de référence, les écarts entre les lignes viennent du seul budget, et non de l’échantillonnage.

Les résultats seront-ils identiques à ceux du complément ?

Le modèle est le même ; les nombres aléatoires, non. Chaque règle de l’import associe une fonction à la distribution qu’elle décrit, avec des paramètres traduits comme l’éditeur les documente, et se vérifie sur la distribution scipy équivalente ; le script qui produit les données de test contrôle aussi la moyenne de chaque correspondance d’après la formule de l’éditeur. Dès que toutes les distributions d’un fichier sont converties, ses moyennes et ses centiles ne diffèrent donc de ceux du complément que par le bruit d’échantillonnage, qui diminue quand vous lancez plus d’itérations : l’erreur type ci-dessus donne l’ordre de grandeur à attendre pour la moyenne.

Il s’agit de corrélations de rang, comme dans @RISK et Analytic Solver, et xellstorm atteint la corrélation de rang demandée. Chaque outil apparie les tirages à sa façon pour y parvenir : un modèle corrélé peut donc différer un peu plus dans les queues de distribution que le seul bruit d’échantillonnage ne l’explique. Votre fichier n’est pas modifié : xellstorm le lit seulement, et le modèle s’ouvre toujours dans le complément.

Ce qui est converti

Ce qui n’est pas converti

Plusieurs distributions dans une même cellule, une distribution dans une autre fonction ou au dénominateur, la division directe d’une distribution et les chaînes qui obligent à changer l’ordre des opérations ne sont pas converties. Par exemple, (RiskNormal(0,1)+5)*2 et RiskNormal(0,1)*2*3 sont laissés de côté, avec une raison. RiskNormal(0,1)*(1/C1) est en revanche converti quand C1 donne un multiplicateur positif fini, car la formule calcule explicitement l’inverse avant de multiplier. Restent aussi non prises en charge : les multiplicateurs dont la valeur est nulle ou négative, les arguments qui appellent des fonctions ou dépendent de cellules aléatoires, les fonctions sans équivalent exact (distributions composées, fonctions de séries temporelles, RiskPertAlt et les autres formes par centiles à deux paramètres de forme), l’argument U de ModelRisk et les copules, ainsi que les propriétés absentes du tableau. Le moteur ne sait pas calculer une formule de complément non prise en charge ; le contrôle de compatibilité la nomme.

Fonctions prises en charge

Les tableaux viennent directement de la liste de règles de l’importeur : ils indiquent donc exactement ce qu’il convertit. « Centiles » marque les formes qui donnent une distribution par ses centiles ; † marque les fonctions converties avec des nombres seulement. Sous chaque distribution figure son nom dans les spécifications de xellstorm.

Fonctions de distribution que l’importeur convertit, par distribution († nombres seulement : les paramètres sont calculés à partir des arguments)
Distribution (nom dans xellstorm)@RISKModelRiskAnalytic Solver
Bernoulli
bern
RiskBernoulliVoseBernoulliPsiBernoulli
Bêta
beta
RiskBeta
RiskBetaGeneral
RiskBetaSubj†
VoseBeta
VoseBeta4
VoseBetaSubj†
PsiBeta
PsiBetaGen
PsiBetaSubj†
Binomiale
binom
RiskBinomialVoseBinomialPsiBinomial
Burr XII
burr12
RiskBurr12——
Cauchy
cauchy
RiskCauchy
Centiles :
RiskCauchyAlt
RiskCauchyAltD
VoseCauchy—
Khi-deux
chi2
RiskChiSq
Centiles :
RiskChiSqAlt
RiskChiSqAltD
VoseChiSqPsiChiSquare
Centiles :
PsiChiSquareAlt
Khi, Maxwell
chi
—VoseChi
VoseMaxwell
—
Cumulative
cumul
RiskCumul
RiskCumulD†
VoseCumulA
VoseCumulD†
VoseOgive†
PsiCumul
Dagum (Burr III)
burr
RiskDagumVoseDagumPsiDagum
Discrète
custom
RiskDiscrete
RiskDUniform
VoseDiscrete
VoseDUniform
PsiDiscrete
PsiDisUniform
Exponentielle
expon
RiskExpon
Centiles :
RiskExponAlt
RiskExponAltD
VoseExpon
VoseExponential
PsiExponential
Centiles :
PsiExponentialAlt
Valeur extrême (max, Gumbel)
gumbel_r
RiskExtValue
Centiles :
RiskExtValueAlt
RiskExtValueAltD
VoseExtValueMaxPsiMaxExtreme
Centiles :
PsiMaxExtremeAlt
Valeur extrême (min)
gumbel_l
RiskExtValueMin
Centiles :
RiskExtValueMinAlt
RiskExtValueMinAltD
—PsiMinExtreme
Centiles :
PsiMinExtremeAlt
F
f
RiskFVoseFPsiFDist
Durée de vie en fatigue (Birnbaum–Saunders)
fatiguelife
RiskFatigueLife
Centiles :
RiskFatigueLifeAlt
RiskFatigueLifeAltD
VoseFatiguePsiFatigueLife
Centiles :
PsiFatigueLifeAlt
Fréchet
invweibull
RiskFrechet
Centiles :
RiskFrechetAlt
RiskFrechetAltD
—PsiFrechet
Centiles :
PsiFrechetAlt
Gamma, Erlang
gamma
RiskGamma
RiskErlang
Centiles :
RiskGammaAlt
RiskGammaAltD
VoseGamma
VoseErlang
PsiGamma
PsiErlang
Centiles :
PsiGammaAlt
Générale (poids relatifs)
general
RiskGeneralVoseRelative—
Pareto généralisée
genpareto
—VoseGPD—
Histogramme
histogram
RiskHistogrmVoseHistogramPsiHistogram
Sécante hyperbolique
hypsecant
RiskHypSecant
Centiles :
RiskHypSecantAlt
RiskHypSecantAltD
VoseHSPsiHypSecant
Hypergéométrique
hypergeom
RiskHypergeoVoseHypergeoPsiHyperGeo
Uniforme entière
randint
RiskIntUniformVoseIntUniform
VoseStepUniform†
PsiIntUniform
Gaussienne inverse
invgauss
RiskInvgauss
Centiles :
RiskInvgaussAlt
RiskInvgaussAltD
VoseInvGaussPsiInvNormal
Johnson SB
johnsonsb
RiskJohnsonSBVoseJohnsonBPsiJohnsonSB
Johnson SU
johnsonsu
RiskJohnsonSUVoseJohnsonUPsiJohnsonSU
Kumaraswamy
kumaraswamy
RiskKumaraswamyVoseKumaraswamy
VoseKumaraswamy4
PsiKumaraswamy
Laplace
laplace
RiskLaplace
Centiles :
RiskLaplaceAlt
RiskLaplaceAltD
VoseLaplace—
Lévy
levy
RiskLevy
Centiles :
RiskLevyAlt
RiskLevyAltD
VoseLevyPsiLevy
Centiles :
PsiLevyAlt
Log-logistique
fisk
RiskLogLogistic
Centiles :
RiskLogLogisticAlt
RiskLogLogisticAltD
VoseLogLogisticPsiLogLogistic
Centiles :
PsiLogLogisticAlt
Logistique
logistic
RiskLogistic
Centiles :
RiskLogisticAlt
RiskLogisticAltD
VoseLogisticPsiLogistic
Centiles :
PsiLogisticAlt
Log-normale
lognorm
RiskLognorm
RiskLognorm2
Centiles :
RiskLognormAlt
RiskLognormAltD
VoseLognormal
VoseLognormalE
PsiLogNormal
PsiLognorm
PsiLognorm2
Centiles :
PsiLogNormalAlt
Binomiale négative, géométrique
nbinom
RiskGeomet
RiskNegbin
VoseGeometric
VoseNegBin
VoseNegBinom
VosePolya†
PsiGeometric
PsiNegBinomial
Normale
norm
RiskNormal
RiskErf†
Centiles :
RiskNormalAlt
RiskNormalAltD
VoseNormal
VoseErf†
PsiNormal
PsiErf†
Centiles :
PsiNormalAlt
Pareto
pareto
RiskPareto
Centiles :
RiskParetoAlt
RiskParetoAltD
VoseParetoPsiPareto
Centiles :
PsiParetoAlt
Pareto II (Lomax)
lomax
RiskPareto2
Centiles :
RiskPareto2Alt
RiskPareto2AltD
VosePareto2PsiPareto2
Centiles :
PsiPareto2Alt
Pearson V (gamma inverse)
invgamma
RiskPearson5
Centiles :
RiskPearson5Alt
RiskPearson5AltD
VosePearson5PsiPearson5
Centiles :
PsiPearson5Alt
Pearson VI (bêta prime)
betaprime
RiskPearson6VosePearson6PsiPearson6
PERT
pert
RiskPertVosePERT
VoseModPERT
PsiPert
Poisson
poiss
RiskPoissonVosePoissonPsiPoisson
Rayleigh
rayleigh
RiskRayleigh
Centiles :
RiskRayleighAlt
RiskRayleighAltD
VoseRayleighPsiRayleigh
Centiles :
PsiRayleighAlt
Réciproque (log-uniforme)
loguniform
RiskReciprocalVoseReciprocalPsiReciprocal
t de Student
t
RiskStudent
Centiles :
RiskStudentAlt
RiskStudentAltD
VoseStudent
VoseStudent3†
PsiStudent
Centiles :
PsiStudentAlt
Triangulaire
triang
RiskTriangVoseTrianglePsiTriangular
Triangulaire à partir de centiles (Trigen)
trigen
RiskTrigen
Centiles :
RiskTriangAlt
VoseTriangleAltPsiTriangGen
Uniforme
unif
RiskUniform
Centiles :
RiskUniformAlt
RiskUniformAltD
VoseUniformPsiUniform
Weibull
weibull_min
RiskWeibull
Centiles :
RiskWeibullAlt
RiskWeibullAltD
VoseWeibull
VoseWeibull3
PsiWeibull
Centiles :
PsiWeibullAlt
Formules d’échantillonnage d’Excel que l’importeur convertit († nombres seulement)
Formulexellstorm
=NORM.INV(RAND(), mean, sd)norm (loc, scale)
=NORMINV(RAND(), mean, sd)norm (loc, scale)
=mean + sd*NORM.S.INV(RAND())norm (loc, scale)
=LOGNORM.INV(RAND(), mu, sigma)lognorm (mu, sigma)
=LOGINV(RAND(), mu, sigma)lognorm (mu, sigma)
=GAMMA.INV(RAND(), alpha, beta)gamma (a, scale)
=GAMMAINV(RAND(), alpha, beta)gamma (a, scale)
=BETA.INV(RAND(), alpha, beta)beta (a, b)
=BETA.INV(RAND(), alpha, beta, A, B)beta (a, b, min, max)
=BETAINV(RAND(), alpha, beta, A, B)beta (a, b, min, max)
=BINOM.INV(n, p, RAND())binom (n, p)
=CRITBINOM(n, p, RAND())binom (n, p)
=RANDBETWEEN(a, b)randint (min, max)
=a + (b - a)*RAND()unif (min, max)
=a + s*RAND()unif (loc, scale)
=RAND()unif
=IF(RAND() < p, 1, 0)bern (p)
=IF(RAND() < p, x, y)†custom (x, prob)
Fonctions de propriété, marqueurs et statistiques que l’importeur lit
FonctionComplémentDevient dans xellstorm
RiskTruncate@RISKTroncature : truncate_min, truncate_max (avant tout décalage)
RiskTruncate2@RISKTroncature : truncate_min, truncate_max des valeurs décalées (ramenées avant le décalage)
RiskTruncateP@RISKTroncature : truncate_pmin, truncate_pmax (centiles de la distribution)
RiskShift@RISKDécalage : shift
RiskName@RISKNom : le nom de l’entrée
RiskLock@RISKVerrou : une valeur fixe (RiskLock(v), ou la valeur de RiskStatic)
RiskCorrmat@RISKCorrélation : corrélations de rang entre les entrées d’une même matrice
RiskDepC@RISKCorrélation : corrélation de rang avec l’entrée de même nom de paire
RiskIndepC@RISKCorrélation : corrélation de rang avec l’entrée de même nom de paire
RiskSimtable@RISKUne valeur par simulation : une cellule fixe dans l’exécution de référence, un scénario par simulation supplémentaire
RiskOutput@RISKSortie : une sortie portant le nom indiqué
VoseXBoundsModelRiskTroncature : truncate_min, truncate_max (avant tout décalage)
VosePBoundsModelRiskTroncature : truncate_pmin, truncate_pmax (centiles de la distribution)
VoseShiftModelRiskDécalage : shift
VoseInputModelRiskNom : le nom de l’entrée
VoseSimTableModelRiskUne valeur par simulation : une cellule fixe dans l’exécution de référence, un scénario par simulation supplémentaire
VoseOutputModelRiskSortie : une sortie portant le nom indiqué
PsiTruncateAnalytic SolverTroncature : type 1 (par défaut) : truncate_min, truncate_max avant tout décalage ; -1 : des valeurs décalées ; 3 : truncate_pmin, truncate_pmax
PsiTruncatePAnalytic SolverTroncature : truncate_pmin, truncate_pmax (centiles de la distribution)
PsiShiftAnalytic SolverDécalage : shift
PsiNameAnalytic SolverNom : le nom de l’entrée
PsiCorrMatrixAnalytic SolverCorrélation : corrélations de rang entre les entrées d’une même matrice
PsiCorrDepenAnalytic SolverCorrélation : corrélation de rang avec l’entrée de même nom de paire
PsiCorrIndepAnalytic SolverCorrélation : corrélation de rang avec l’entrée de même nom de paire
PsiSimParamAnalytic SolverUne valeur par simulation : une cellule fixe dans l’exécution de référence, un scénario par simulation supplémentaire
PsiOutputAnalytic SolverSortie : la cellule elle-même, ou les cellules auxquelles elle renvoie
PsiSimOutputAnalytic SolverSortie : la cellule elle-même, ou les cellules auxquelles elle renvoie
PsiMeanAnalytic SolverStatistique : la cellule de son premier argument devient une sortie (comme pour toute statistique Psi d’une sortie)

Questions

Faut-il avoir installé @RISK, ModelRisk ou Analytic Solver ?

Non. xellstorm lit les formules dans le fichier .xlsx lui-même et calcule le modèle avec son propre moteur dans votre navigateur, sans Excel ni complément. Enregistrez d’abord les fichiers .xls et .xlsb au format .xlsx.

xellstorm modifie-t-il mon fichier ?

Non. L’import transforme les formules en entrées dans la configuration de xellstorm ; le fichier sur votre ordinateur reste intact, et le modèle s’ouvre et s’exécute toujours dans le complément.

Que devient une matrice de corrélation ?

Les entrées qui partagent une plage RiskCorrmat ou PsiCorrMatrix reçoivent les corrélations de rang de la matrice, lues dans ses cellules à l’import ; RiskDepC et PsiCorrDepen associent une entrée à celle de même nom. Les paires illisibles (matrice non carrée, position hors matrice, cellule sans nombre) sont signalées dans les notes de l’import ; une entrée non convertie figure dans la liste avec sa raison et sort de ses paires. Si la matrice n’est pas une matrice de corrélation valide, xellstorm applique la plus proche qui le soit, et l’application la montre avant l’exécution.

Que devient un RiskSimtable ?

La première valeur fixe la cellule dans l’exécution de référence et chaque valeur suivante devient un scénario, nommé Simulation 2, Simulation 3, et ainsi de suite. Les scénarios tirent les mêmes nombres aléatoires que l’exécution de référence : les différences entre eux viennent donc des seules valeurs de la table.

@RISK, ModelRisk et Analytic Solver sont des marques de leurs propriétaires respectifs. xellstorm n’est affilié à aucun d’eux ; leurs noms de fonctions n’apparaissent ici que pour dire ce que xellstorm lit.

À lire aussi

xellstorm est un outil de simulation de Monte-Carlo qui fonctionne dans le navigateur, pour les modèles Excel : aucun complément, et votre fichier ne quitte jamais votre ordinateur.