Bonjour,
Dans ce tutoriel vous apprendrez à utiliser la fonction DatesEntre() afin de calculer un écart entre deux dates.
Prérequis :
- Version : SAP BI 4.2
- Application : SAP Web Intelligence
- Droit de conception sur Web Intelligence
Contexte :
Vous souhaitez calculer l’écart entre deux dates en jours, semaines, mois, trimestres, semestres ou années sur un document Web Intelligence.
Mise en oeuvre :
Pour l’exemple de mise en oeuvre, j’ai créé une requête basée sur un document Excel très simple dans lequel j’ai une date de début et une date de fin :

Pour calculer l’écart entre ces dates, nous allons utiliser la fonction « DatesEntre() » ou « DatesBetween() » en anglais.
Syntaxe officielle de la fonction :

La difficulté dans l’utilisation de cette fonction réside dans le fait que la documentation fourni par SAP est en anglais et que, lorsqu’on l’utilise dans sa version française, nous n’avons pas les valeurs à indiquer pour l’argument « période » (les exemples fournis sont tous en anglais).
Vous trouverez donc ci-dessous un récapitulatif des différentes valeurs que peut prendre l’argument « période » afin de déterminer avec quel unité vous allez calculer votre écart (en jours, semaines, mois …) :

Vous pouvez désormais créer une nouvelle variable ou une nouvelle formule de calcul pour calculer votre écart en année par exemple de la manière suivante :

Vous pouvez ainsi utiliser les arguments présentés dans le tableau ci-dessus pour calculer l’écart dans l’unité souhaité.
Vous trouverez ci-dessous un exemple d’écarts calculés à partir de mon tableau d’origine :

Bonjour,
Est-il possible de calculer un écart entre deux dates mais en partant du principe qu’une année = 360 jours et non 365, comme le ferait la fonction JOURS360 d’Excel ?
Par avance, merci pour votre réponse.
Cordialement,
Bonjour,
Il n’existe pas de fonction équivalente à la fonction JOURS360 dans Web Intelligence. Néanmoins vous pouvez arriver au même résultat en calculant l’écart en jours (DayPeriod au lieu de YearPeriod) ou en utilisant la fonction JoursEntre() et en divisant le résultat par 360.
Je vous souhaite une bonne journée.
Romain CARRETERO
Bonjour,
Merci pour cette explication.
Est il possible d’ajouter une notion d’heure dans ce calcul ?
Merci d’avance d’avoir pris du temps pour me répondre.
Bien cordialement,
Bonjour,
La fonction HeureEntre() devrait répondre à votre question. Elle s’utilise comme la fonction DateEntre() mais prend en compte l’heure des dates que vous comparez.
Utilisez un des opérateurs suivants en fonction de votre besoin. : PériodeHeure, Période Minute, PériodeSeconde ou Période Milliseconde.
Bonne journée.
Cordialement,
Romain CARRETERO
Bonjour,
J’ai une de mes colonnes qui contient un numéro et ce numéro correspond dans une autre colonne à plusieurs dates.
Savez vous comment je peux afficher l’ordre de classement de ces dates dans une autre colonne Svp?
Par exemple : Colonne A contient les numéros de clients et colonne B contient les dates de passage en agence.
Je souhaiterais pouvoir identifier pour chaque client, son premier passage, second passage, 3 eme passage.
En vous remerciant par avance
Bien cordialement
Bonjour M TACHEFINI,
Afin de répondre à votre besoin je vous invite à suivre les étapes suivantes :
1/ Dans votre document Webi qui contient les ID clients et les dates, il faut créer une variable pour transformer la dimension date en « indicateur ». Créer donc une variable de type indicateur et au niveau de la formule indiquer simplement le nom de la dimension date.
2/ Créer un tableau avec 3 colonnes : Colonne 1 = ID client, Colonne 2 = Dimension Date et Colonne 3 = Variable Date (indicateur).
Masquer la colonne 2 (clic droit sur la colonne > masquer) et créer un saut sur l’ID client (clic droit > Saut > Ajouter un saut)
3/ Créer un classement sur votre colonne Variable Date pour avoir les n premières/dernières dates par ID client.
Une bonne journée.
Romain CARRETERO
Bonjour romain et merci !
ce que je veux afficher c’est un classement par numéro client sans saut
ça donnerais ça :
Numéro client : date passage : classement (nouvelle colonne ):
123456798 16/07/2020 Premier passage
789456123 15/06/2020 Premier passage
789456123 13/07/2020 Deuxième passage
546654987 07/07/2020 Premier passage
La nouvelle colonne que je souhaites créer m’indiquerais le classement par passage 🙂
Bien cordialement
Bonjour,
Si vous souhaitez utiliser un classement, il faudrait :
1/ Créer une variable pour le classement : =SommeCumulative(Nombre([Date]) ;([ID_Client]))
Insérer la variable dans votre tableau pour obtenir le classement(1, 2, 3,…) des dates par client.
2/ Si vous souhaitez afficher « Premier Passage », « Deuxième Passage », etc… il suffit de modifier votre variable de cette manière :
=Si SommeCumulative(Nombre([Transaction Date]) ;([Store Supplier])) = 1 Alors « Premier Passage » Sinon Si SommeCumulative(Nombre([Transaction Date]) ;([Store Supplier]))= 2 Alors « Deuxième Passage » Sinon Si SommeCumulative(Nombre([Transaction Date]) ;([Store Supplier])) = 3 Alors « Troisième Passage » Sinon SommeCumulative(Nombre([Transaction Date]) ;([Store Supplier]))
3/ Si vous souhaitez visualiser uniquement les 3 premiers passages, il suffira simplement de filtrer le tableau sur les valeurs souhaitées.
J’espère que cette méthode répond davantage à votre demande.
Bonne journée.
Romain CARRETERO
Merciiiii ça marche vraiment top romain !
bonjour,
est ce qu’il est possible de calculer un nombre de jours ouvrés comme dans Excel avec la formule NB.JOURS.OUVRES ?
J’ai insérer un fichier Excel comportant la liste des jours ouvrés.
j’ai créé la variable suivante, mais je ne sais pas comment vérifier si un jour férié est compris entre mes dates
=Si([Date réception de l’acte]=[Date de Fin]; »0″;(DatesEntre([Date réception de l’acte];[Date de Fin];PériodeJour)))
Pouvez vous m’aider ?
Merci
Bonjour,
Web Intelligence ne propose pas de fonction équivalente à la fonction NB.JOURS.OUVRES d’Excel.
La solution serait de calculer, dans une variable, le nombre de jour non ouvrés sur la période à l’aide de votre fichier Excel (voir ce tuto si besoin https://tutoriel-businessobjects.fr/index.php/2020/06/03/creer-une-requete-a-partir-dun-fichier-excel/).
Il faudra ensuite réaliser la différence entre votre calcul (DatesEntre([Date réception de l’acte];[Date de Fin];PériodeJour)) et le nombre de jours non ouvrés sur la période.
Bon courage