# inmonths - fonction de script et fonction de graphique

Cette fonction permet de déterminer si un horodatage tombe pendant la même période (mois, période de deux mois, trimestre, période de quatre mois ou semestre) que la date de référence. Il est également possible de déterminer si l'horodatage se situe dans une période passée ou future.

InMonths(n\_months, timestamp, base\_date, period\_no [, first\_month\_of\_year])

booléen

Dans Qlik Sense, la valeur booléenne true est représentée par -1 et la valeur false par 0.

Diagramme de la fonction `inmonths()`

Diagramme de la fonction `inmonths()`

Diagramme de la fonction `inmonths()`inmonths() ![Diagramme montrant la plage temporelle pendant laquelle la fonction inmonths() évaluera une date de référence comme true ou false.](https://help.qlik.com/fr-FR/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-diagram1.png)

La fonction `inmonths()` divise l'année en segments en fonction de l'argument `n_months` fourni. Elle détermine ensuite si chaque horodatage évalué tombe dans le même segment que celui de l'argument `base_date`. Si, toutefois, un argument `period_no` est fourni, la fonction détermine si les horodatages tombent pendant une période précédente ou suivante par rapport à la `base_date`.

Les segments suivants de l'année sont disponibles dans la fonction en tant qu'arguments `n_month`.

Arguments `n_month`n\_month

| Période | Nombre de mois |
| --- | --- |
| mois | 1 |
| période de deux mois | 2 |
| trimestre | 3 |
| période de quatre mois | 4 |
| semestre | 6 |

Cas d'utilisation

La fonction `inmonths()` renvoie un résultat booléen. Ce type de fonction sera généralement utilisé comme condition dans une expression `if expression`. En utilisant la fonction `inmonths()`, vous pouvez sélectionner la période à évaluer. Par exemple, en laissant l'utilisateur identifier les produits fabriqués au cours du mois, du trimestre ou du semestre d'une période donnée.

booléen

Dans Qlik Sense, la valeur booléenne true est représentée par -1 et la valeur false par 0.

Arguments

| Argument | Description |
| --- | --- |
| n\_months | Nombre de mois définissant la période. Entier ou expression aboutissant à un entier qui doit correspondre à l'une de ces valeurs : 1 (qui équivaut à la fonction inmonth()), 2 (période de deux mois), 3 (qui équivaut à la fonction inquarter()), 4 (période de quatre mois) ou 6 (semestre). |
| timestamp | Date à comparer à base\_date. |
| base\_date | Date utilisée pour évaluer la période. |
| period\_no | Il est possible de décaler la période à l'aide de l'argument period\_no, d'un entier ou d'une expression aboutissant à un entier, où la valeur 0 indique la période comprenant l'argument base\_date. Les valeurs négatives spécifiées pour period\_no indiquent les périodes passées tandis que les valeurs positives désignent les périodes à venir. |
| first\_month\_of\_year | Si vous voulez utiliser des exercices (financiers) qui ne commencent pas en janvier, indiquez une valeur comprise entre 2 et 12 dans l'argument first\_month\_of\_year. |

Vous pouvez utiliser les valeurs suivantes pour définir le premier mois de l'année dans l'argument `first_month_of_year` :

Valeurs first\_month\_of\_year

| Mois | Valeur |
| --- | --- |
| Février | 2 |
| Mars | 3 |
| Avril | 4 |
| Mai | 5 |
| Juin | 6 |
| Juillet | 7 |
| Août | 8 |
| Septembre | 9 |
| Octobre | 10 |
| Novembre | 11 |
| Décembre | 12 |

## Paramètres régionaux

Sauf indication contraire, les exemples de cette rubrique utilisent le format de date suivant : MM/JJ/AAAA. 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 sur lequel 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'interface utilisateur Qlik Sense. Qlik Sense sera affiché dans la même langue que celle du navigateur que vous utilisez.

Exemples de fonction

| Exemple | Résultat |
| --- | --- |
| `inmonths(4, '01/25/2013', '04/25/2013', 0)` | Renvoie TRUE. Car la valeur d'horodatage, 01/25/2013, est comprise dans la période de quatre mois du 01/01/2013 au 04/30/2013, qui comprend la valeur de `base_date`, 04/25/2013. |
| `inmonths(4, '05/25/2013', '04/25/2013', 0)` | Renvoie FALSE. Car la date 05/25/2013 se trouve en dehors de la période indiquée dans l'exemple précédent. |
| `inmonths(4, '11/25/2012', '02/01/2013', -1 )` | Renvoie TRUE. Car la valeur de `period_no`, `-1`, décale la période de recherche de quatre mois en arrière (la valeur de n-months), ce qui définit la période de recherche du 09/01/2012 au 12/31/2012. |
| `inmonths(4, '05/25/2006', '03/01/2006', 0, 3)` | Renvoie TRUE. Car la valeur de `first_month_of_year` est définie sur `3`, ce qui définit la période de recherche du 03/01/2006 au 07/30/2006 au lieu du 01/01/2006 au 04/30/2006. |

## Exemple 1 - aucun argument supplémentaire

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.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 à un nouvel onglet.

Le script de chargement contient :

* Un ensemble de données contenant un ensemble de transactions pour 2022 est chargé dans une table appelée ‘`Transactions`’.

* Instruction preceding load avec une variable supplémentaire, ‘`in_months`’, qui détermine les transactions qui ont eu lieu au cours du même trimestre que celui du 15 mai 2022.

Script de chargement

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', 0) as in_months 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Résultats

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

* `date`
* `in_months`

Tableau de résultats

| date | in\_months |
| --- | --- |
| 2/19/2022 | 0 |
| 3/7/2022 | 0 |
| 3/30/2022 | 0 |
| 4/5/2022 | -1 |
| 4/16/2022 | -1 |
| 5/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/22/2022 | -1 |
| 6/15/2022 | -1 |
| 6/26/2022 | -1 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Le champ ‘`in_months`’ est créé dans l'instruction preceding load à l'aide de la fonction `inmonths()`. Le premier argument fourni est `3`, qui divise l'année en segments trimestriels. Le deuxième argument identifie le champ en cours d'évaluation, le champ date, dans cet exemple. Le troisième argument est une date codée en dur pour le 15 mai, qui est la `base_date`, et l'argument final est un argument `period_no` égal à `0`.

Diagramme de la fonction `inmonths()` avec des segments trimestriels

Diagramme de la fonction `inmonths()` avec des segments trimestriels

Diagramme de la fonction `inmonths()`inmonths() avec des segments trimestriels![Diagramme montrant la plage temporelle évaluée par la fonction inmonths() avec le 15 mai comme date de référence et l'année divisée en segments trimestriels.](https://help.qlik.com/fr-FR/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-examples1_and4-diagram.png)

Mai tombe pendant le deuxième trimestre de l'année. Par conséquent, toute transaction effectuée entre le 1er avril et le 30 juin renverra un résultat booléen TRUE. Cela est validé dans le tableau de résultats.

## Exemple 2 - period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.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 à un nouvel onglet.

Le script de chargement contient :

* Un ensemble de données contenant un ensemble de transactions pour 2022 est chargé dans une table appelée ‘`Transactions`’.

* Chargement précédent avec une variable supplémentaire, ‘`previous_quarter`’, qui détermine si les transactions ont eu lieu au cours du trimestre avant le 15 mai 2022.

Script de chargement

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', -1) as previous_quarter 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Résultats

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

* `date`
* `previous_quarter`

Tableau de résultats

| date | trimestre précédent |
| --- | --- |
| 2/19/2022 | -1 |
| 3/7/2022 | -1 |
| 3/30/2022 | -1 |
| 4/5/2022 | 0 |
| 4/16/2022 | 0 |
| 5/1/2022 | 0 |
| 5/7/2022 | 0 |
| 5/22/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

La fonction évalue si les transactions ont eu lieu au cours du premier trimestre de l'année via la valeur `-1` comme argument `period_no` dans la fonction `inmonths()`. Le 15 mai est la `base_date` et tombe pendant le deuxième trimestre de l'année (avril-juin).

Diagramme de la fonction `inmonths()` avec des segments trimestriels et l'argument `period_no` défini sur `-1`

Diagramme de la fonction `inmonths()` avec des segments trimestriels et l'argument `period_no` défini sur `-1`

Diagramme de la fonction `inmonths()`inmonths() avec des segments trimestriels et l'argument `period_no`period\_no défini sur `-1`-1![Diagramme montrant la plage temporelle évaluée par la fonction inmonths() avec le 15 mai comme date de référence, l'année divisée en segments trimestriels et l'argument period_no défini sur -1, ce qui décale la plage temporelle d'un trimestre en arrière.](https://help.qlik.com/fr-FR/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-example2-diagram.png)

Par conséquent, toute transaction effectuée entre janvier et mars renverra un résultat booléen TRUE.

## Exemple 3 - first\_month\_of\_year

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.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 à un nouvel onglet.

Le script de chargement contient :

* Un ensemble de données contenant un ensemble de transactions pour 2022 est chargé dans une table appelée ‘`Transactions`’.

* Chargement précédent avec une variable supplémentaire, ‘`in_months`’, qui détermine si les transactions ont eu lieu au cours du même trimestre que celui du 15 mai 2022.

Dans cet exemple, la stratégie organisationnelle exige que mars soit le premier mois de l'exercice financier.

Script de chargement

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', 0, 3) as in_months 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Résultats

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

* `date`
* `in_months`

Tableau de résultats

| date | in\_months |
| --- | --- |
| 2/19/2022 | 0 |
| 3/7/2022 | -1 |
| 3/30/2022 | -1 |
| 4/5/2022 | -1 |
| 4/16/2022 | -1 |
| 5/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/22/2022 | -1 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Si on utilise `3` comme argument `first_month_of_year` dans la fonction `inmonths()`, la fonction commence l'année le 1er mars. La fonction `inmonths()` divise ensuite l'année en trimestres : mars-mai, juin-août, sept-nov, déc-févr. Par conséquent, le 15 mai tombe pendant le premier trimestre de l'année (mars-mai).

Diagramme de la fonction `inmonths()` avec mars défini comme le premier mois de l'année.

Diagramme de la fonction `inmonths()` avec mars défini comme le premier mois de l'année.

Diagramme de la fonction `inmonths()`inmonths() avec mars défini comme le premier mois de l'année.![Diagramme montrant la plage temporelle évaluée par la fonction inmonths() avec le 15 mai comme date de référence, l'année divisée en segments trimestriels et mars défini comme le premier mois de l'année.](https://help.qlik.com/fr-FR/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-example3-diagram.png)

Toute transaction qui a lieu au cours de ces mois renverra un résultat booléen TRUE.

## Exemple 4 - exemple objet graphique

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

#### Script de chargement et expression de graphique

Vue d'ensemble

Le même ensemble de données et le même scénario que ceux du premier exemple sont utilisés.

Cependant, dans cet exemple, l'ensemble de données est le même et chargé dans l'application. Le calcul qui détermine si les transactions ont eu lieu pendant le même trimestre que celui du 15 mai 2022 est créé sous forme de mesure dans un graphique de l'application.

Script de chargement

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension :

* `date`

Pour calculer si des transactions ont eu lieu au cours du même trimestre que celui du 15 mai, créez la mesure suivante :

`=inmonths(3,date,'05/15/2022', 0)`

Tableau de résultats

| date | =inmonths(3,date,'05/15/2022', 0) |
| --- | --- |
| 2/19/2022 | 0 |
| 3/7/2022 | 0 |
| 3/30/2022 | 0 |
| 4/5/2022 | -1 |
| 4/16/2022 | -1 |
| 5/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/22/2022 | -1 |
| 6/15/2022 | -1 |
| 6/26/2022 | -1 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Le champ ‘`in_months`’ est créé dans le graphique à l'aide de la fonction `inmonths()`. Le premier argument fourni est `3`, qui divise l'année en segments trimestriels. Le deuxième argument identifie le champ en cours d'évaluation, le champ date, dans cet exemple. Le troisième argument est une date codée en dur pour le 15 mai, qui est la `base_date`, et l'argument final est un argument `period_no` égal à `0`.

Diagramme de la fonction `inmonths()` avec des segments trimestriels

Diagramme de la fonction `inmonths()` avec des segments trimestriels

Diagramme de la fonction `inmonths()`inmonths() avec des segments trimestriels![Diagramme montrant la plage temporelle évaluée par la fonction inmonths() avec le 15 mai comme date de référence et l'année divisée en segments trimestriels.](https://help.qlik.com/fr-FR/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-examples1_and4-diagram.png)

Mai tombe pendant le deuxième trimestre de l'année. Par conséquent, toute transaction effectuée entre le 1er avril et le 30 juin renverra un résultat booléen TRUE. Cela est validé dans le tableau de résultats.

## Exemple 5 - scénario

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.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 à un nouvel onglet.

Le script de chargement contient :

* Ensemble de données chargé dans une table appelée ‘Products’.

* La table contient les champs suivants :

  * product ID

  * product type

  * manufacture date

  * cost price

L'utilisateur final souhaite un graphique qui affiche, par type de produit, le coût des produits fabriqués au cours du premier segment de 2021. L'utilisateur souhaite pouvoir définir la longueur de ce segment.

Script de chargement

```
SET vPeriod = 1; 

Products: 
Load 
* 
Inline  
[ 
product_id,product_type,manufacture_date,cost_price 
8188,product A,'2/19/2022',37.23 
8189,product D,'3/7/2022',17.17 
8190,product C,'3/30/2022',88.27 
8191,product B,'4/5/2022',57.42 
8192,product D,'4/16/2022',53.80 
8193,product D,'5/1/2022',82.06 
8194,product A,'5/7/2022',40.39 
8195,product B,'5/22/2022',87.21 
8196,product C,'6/15/2022',95.93 
8197,product B,'6/26/2022',45.89 
8198,product C,'7/9/2022',36.23 
8199,product D,'7/22/2022',25.66 
8200,product D,'7/23/2022',82.77 
8201,product A,'7/27/2022',69.98 
8202,product A,'8/2/2022',76.11 
8203,product B,'8/8/2022',25.12 
8204,product B,'8/19/2022',46.23 
8205,product B,'9/26/2022',84.21 
8206,product C,'10/14/2022',96.24 
8207,product D,'10/29/2022',67.67 
];
```

Résultats

Chargez les données et ouvrez une feuille.

Au début du script de chargement, une variable, vPeriod, est créée ; elle est liée au contrôle d'entrée de variable.

Procédez comme suit :

1. Dans le panneau des ressources, cliquez sur Objets personnalisés.

2. Sélectionnez Qlik Dashboard bundle et créez un objet Entrée de variable.

3. Saisissez un titre pour l'objet graphique.

4. Sous Variable, sélectionnez vPeriod comme nom et définissez l'objet de sorte qu'il s'affiche sous forme de Liste déroulante.

5. Sous Valeurs, cliquez sur les valeurs Dynamiques. Saisissez les éléments suivants :

   ```
   ='1~month|2~bi-month|3~quarter|4~tertial|6~half-year'.
   ```

6. Ajoutez une nouvelle table à la feuille.

7. Dans le panneau des propriétés, sous Données, ajoutez product\_type comme dimension.

8. Ajoutez l'expression suivante comme mesure :

   =sum(if(inmonths($(vPeriod),manufacture\_date,makedate(2022,01,01),0),cost\_price,0))

9. Définissez le Formatage des nombres de la mesure sur Money (Devise).

Tableau de résultats

| product\_type | =sum(if(inmonths($(vPeriod),manufacture\_date,makedate(2022,01,01),0),cost\_price,0)) |
| --- | --- |
| product A | $88.27 |
| product B | $37.23 |
| product C | $17.17 |
| product D | $0.00 |

La fonction inmonths() utilise l'entrée utilisateur comme argument pour définir la taille du segment de début de l'année. La fonction transmet la date de fabrication de chacun des produits comme deuxième argument de la fonction inmonths(). Avec le 1er janvier utilisé comme troisième argument dans la fonction inmonths(), les produits dont les dates de fabrication tombent dans le segment de début de l'année renverront une valeur booléenne TRUE, et, par conséquent, la fonction sum additionnera les coûts de ces produits.