# XNPV Fonction de script

La fonction XNPV() renvoie la valeur actuelle nette agrégée pour un calendrier de liquidités (non nécessairement périodique) que représentent des nombres appariés dans les expressions pmt et date. Tous les paiements sont actualisés sur une base de 365 jours par an.

XNPV(discount\_rate, pmt, date)

numérique

Note InformationsPar défaut, le résultat sera formaté sous forme de devise.

La formule pour calculer XNPV est indiquée ci-dessous :

Formule d'agrégation XNPV

Formule d'agrégation XNPV

Formule d'agrégation XNPV ![Image de formule pour la fonction de script XNPV.](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-xnpv-formula.png)

où :

* `P``i`= entrées/sorties de flux de liquidités nettes au cours d'une seule période `i`

* `d``1`= première date de paiement

* `d``i` = `i`^e^ date de paiement

* `rate` = taux de remise

La valeur Net Present Value, or NPV, est utilisée pour calculer la valeur totale actuelle d'un flux de liquidités futur avec un taux de remise donné. Pour calculer XNPV, nous devons estimer les liquidités futures avec les dates correspondantes. Ensuite, pour chaque paiement, nous appliquons le taux de remise composé en fonction de la date du paiement.

L'application de l'agrégation XNPV à une série de paiements est similaire à l'application d'une agrégation Sum sur ces paiements. La différence réside dans le fait que chaque montant est modifié (ou « réduit ») en fonction du taux de remise sélectionné (similaire à un taux d'intérêt) et du niveau d'avancée du paiement dans le futur. L'application de XNPV avec le paramètre discount\_rate défini sur zéro produira une opération XNPV équivalente à une opération Sum (les paiements ne seront pas modifiés avant d'être additionnés). En règle générale, plus le paramètre discount\_rate est proche de zéro, plus le résultat XNPV sera similaire à celui d'une agrégation Sum.

Arguments

| Argument | Description |
| --- | --- |
| discount\_rate | discount\_rate est le taux de réduction annuel à appliquer aux paiements.<br><br>Une valeur égale à 0.1 indique un taux de remise de 10 %. |
| pmt | Paiements. Expression ou champ contenant les flux de liquidités correspondant au calendrier de paiement spécifié dans la fonction date. Les valeurs positives sont supposées être des apports et les valeurs négatives des décaissements.<br><br>Note InformationsXNPV() n'applique pas de remise aux liquidités initiales, étant donné que la fonction s'applique toujours à la date de début. Les paiements ultérieurs font l'objet d'une remise en fonction d'une année de 365 jours. Cela est différent de NPV(), où même le premier paiement fait l'objet d'une remise. |
| date | Expression ou champ contenant le calendrier de dates correspondant aux paiements de flux de liquidités spécifiés dans la fonction pmt. La première valeur est utilisée comme date de début pour calculer les décalages temporels des liquidités futures. |

Si vous utilisez cette fonction, les limitations suivantes s'appliquent :

* Les valeurs textuelles, les valeurs NULL et les valeurs manquantes dans une ou les deux paires de données sont ignorées.

## Cas d'utilisation

* La valeur `XNPV()` est utilisée dans la modélisation financière pour calculer la valeur Net Present Value (NPV - Valeur actuelle nette) d'une opportunité d'investissement.

* En raison de sa plus grande précision, la valeur XNPV est préférée à la valeur NPV pour tous les types de modèles financiers.

## Paramètres régionaux

Sauf indication contraire, les exemples de cette rubrique utilisent le format de date suivant : MM/DD/YYYY. Le format de date est indiqué dans l'instruction `SET DateFormat` de votre script de chargement de données. Le format de date par défaut peut être différent dans votre système en raison de vos paramètres régionaux et d'autres facteurs. Vous pouvez modifier les formats utilisés dans les exemples ci-dessous en fonction de vos besoins. Ou vous pouvez modifier les formats utilisés dans votre script de chargement pour qu'ils correspondent à ceux de ces exemples.

Les paramètres régionaux par défaut des applications sont basés sur les paramètres système régionaux de l'ordinateur ou du serveur où Qlik Sense est installé. Si le serveur Qlik Sense auquel vous accédez est configuré sur la Suède, l'éditeur de chargement de données utilisera les paramètres régionaux suédois pour les dates, l'heure et la devise. Ces paramètres de format régionaux ne sont pas liés à la langue affichée dans l'Qlik Sense interface utilisateur. Qlik Sense sera affiché dans la même langue que le navigateur que vous utilisez.

## Exemple 1 – un seul paiement (script)

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/FinancialAggregationFunctions/XNPV.htm)

#### Script de chargement et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données d'un projet et son flux de trésorerie pour un an, dans une table appelée `CashFlow`. La date initiale du calcul est définie sur le 1er juillet 2022, avec un flux de trésorerie net égal à 0. Au bout d'un an, on a un flux de trésorerie de 1 000 $.

* Instruction resident load de la table `CashFlow`, utilisée pour calculer le champ `XNPV` du projet dans une table appelée `XNPV`.

* Taux de remise codé en dur de 10 % (0,1), utilisé dans le calcul XNPV.

* Une instruction `Group By` est utilisée pour regrouper l'ensemble des paiements du projet.

Script de chargement

```
CashFlow:
Load
*
Inline 
[	
PrjId,Dates,Values
1,'07/01/2022',0
1,'07/01/2023',1000
];

XNPV:
Load 
	PrjId,
	XNPV(0.1,Values,Dates) as XNPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* `PrjId`

* `XNPV`

Tableau de résultats

| PrjId | XNPV |
| --- | --- |
| 1 | $909.09 |

Conformément à la formule, la valeur XNPV du premier enregistrement est 0, et, pour le deuxième enregistrement, la valeur XNPV est de 909,09 $. Ainsi, la valeur XNPV totale est de 909,09 $.

## Exemple 2 – plusieurs paiements (script)

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/FinancialAggregationFunctions/XNPV.htm)

#### Script de chargement et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données d'un projet et son flux de trésorerie pour un an, dans une table appelée `CashFlow`.

* Chargement résident de la table `CashFlow`, utilisé pour calculer le champ `XNPV` du projet dans une table appelée `XNPV`.

* Taux de remise codé en dur de 10 % (0,1), utilisé dans le calcul XNPV.

* Une instruction `Group By` est utilisée pour regrouper l'ensemble des paiements du projet.

Script de chargement

```
CashFlow:
Load
*
Inline 
[	
PrjId,Dates,Values
1,'07/01/2022',0
1,'07/01/2024',500
1,'07/01/2023',1000
];

XNPV:
Load 
	PrjId,
	XNPV(0.1,Values,Dates) as XNPV //Discount Rate of 10%
Resident CashFlow
Group By PrjId;
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* `PrjId`

* `XNPV`

Tableau de résultats

| PrjId | XNPV |
| --- | --- |
| 1 | $1322.21 |

Dans cet exemple, un paiement de 1 000 $ est reçu à la fin de la première année et un paiement de 500 $ à la fin de la deuxième année. Avec un taux de remise de 10 % par période, la valeur XNPV effective est égale à 1 322,21 $.

Notez que seule la première ligne de données doit faire référence à la date de base pour les calculs. Pour le reste des lignes, l'ordre n'a pas d'importance, car le paramètre date est utilisé pour calculer la période écoulée.

## Exemple 3 – plusieurs paiements et flux de trésorerie irréguliers (script)

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/FinancialAggregationFunctions/XNPV.htm)

#### Script de chargement et résultats

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Taux de remise pour deux projets dans une table appelée `Project`.

* Flux de trésorerie pour plusieurs périodes pour chaque projet par ID de projet et dates. Le champ `Dates` est utilisé pour calculer la durée pendant laquelle le taux de remise est appliqué au flux de trésorerie. À l'exception du premier enregistrement (flux de trésorerie initial et date initiale), l'ordre des enregistrements n'a pas d'importance et sa modification ne devrait pas avoir d'impact sur les calculs.

* Via une combinaison de `NoConcatenate`, de chargements résidents et de la fonction `Left Join`, une table temporaire, `tmpNPV`, est créée, combinant les enregistrements des tables `Project` et `CashFlow` en une seule table uniforme. Les taux de remise de cette table sont répétés pour chaque flux de trésorerie.

* Instruction resident load de la table `tmpNPV`, utilisée pour calculer le champ `XNPV` de chaque projet dans une table appelée `XNPV`.

* Le taux de remise de valeur unique associé à chaque projet est récupéré via la fonction `only()` et utilisé dans le calcul `XNPV` pour chaque projet.

* Une instruction `Group By`, effectuant un regroupement par ID de projet, est utilisée pour regrouper tous les paiements et dates correspondantes pour chaque projet.

* Pour éviter le chargement de toute donnée synthétique ou redondante dans le modèle de données, la table `tmpXNPV` est abandonnée à la fin du script.

Script de chargement

```
Project:
Load * inline [
PrjId,Discount_Rate
1,0.1
2,0.15
];

CashFlow:
Load
*
Inline 
[	
PrjId,Dates,Values
1,'07/01/2021',0
1,'07/01/2022',1000
1,'07/01/2023',1000
2,'07/01/2020',0
2,'07/01/2023',500
2,'07/01/2024',1000
2,'07/01/2022',500
];

tmpXNPV:
NoConcatenate Load *
Resident Project;
Left Join
Load * 
Resident CashFlow;

XNPV:
Load 
	PrjId,
	XNPV(Only(Discount_Rate),Values,Dates) as XNPV //Discount Rate will be 10% for Project 1 and 15% for Project 2
Resident tmpXNPV
Group By PrjId;

Drop table tmpXNPV;
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* `PrjId`

* `XNPV`

Tableau de résultats

| PrjId | XNPV |
| --- | --- |
| 1 | $1735.54 |
| 2 | $278.36 |

L'ID de projet 1 a un flux de trésorerie initial de 0 $ le 1er juillet 2021. Deux paiements de 1 000 $ doivent être reçus à la fin de deux années consécutives, à un taux de remise de 10 % par période. Par conséquent, la valeur XNPV effective est égale à 1 735,54 $.

L'ID de projet 2 a un flux sortant initial de 1 000 $ (d'où le signe négatif) le 1er juillet 2020. Au bout de deux ans, un paiement de 500 $ est prévu. Au bout de trois ans, un autre paiement de 500 $ est prévu. Pour finir, le 1er juillet 2024, un paiement de 1 000 $ est prévu. Avec le taux de remise de 15 %, la valeur XNPV effective est égale à 278,36 $.

## En savoir plus

* [Drop table](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/drop-table.htm)
* [group by](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm#group_by)
* [Join](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Join.htm)
* [Max Fonction de script](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/max.htm)
* [NoConcatenate](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/NoConcatenate.htm)
* [NPV - fonction de graphique](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FinancialAggregationFunctionsInCharts/npv.htm)
* [Only Fonction de script](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/AggregationFunctions/only.htm)
* [Resident LOAD](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/load-data-from-previously-loaded-table.htm#Resident)