IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAP Business Objects Discussion :

Afficher durée parmi doublons sous condition


Sujet :

SAP Business Objects

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Afficher durée parmi doublons sous condition
    Bonjour !

    Après avoir fait une petite recherche, mais n'ayant pas trouvé mon bonheur, je me permets de vous adresser ma question.

    Je possède une BDD avec des utilisateurs, qui possèdent un matricule. A ces utilisateurs il arrive des évènements (maladie, congé, etc) qui ont une date de début et une date de fin.

    Seulement, dans certains cas, un évènement est rallongé. Par exemple un congé parental peut-être rallongé d'un mois, et dans ce cas je me retrouve avec deux lignes du type :

    Matricule : AAA --- Début : 01/01/2016 --- Fin : 01/02/2016
    Matricule : AAA --- Début : 01/01/2016 --- Fin : 01/03/2016

    Du coup, lorsque j'essaie de faire ma somme d'absence, et bien pour cette personne là je vais compter qu'il a été absent 1 mois + 2 mois (soit 3 mois) alors que dans les faits il n'a été absent que 2 mois. Un rallongement peut aussi arriver plus d'une fois.

    Ainsi, j'aimerais trouver un moyen qui me permette de faire une condition comme celle si : "Si le matricule et la date de début sont la même, alors (si la date de fin est la plus haute parmi ceux là, afficher durée, sinon afficher 0) sinon afficher durée".

    En gros, on cherche tout ceux qui ont le même matricule et la même date de début, entre eux on cherche celui avec la date de fin la plus haute, et dans sa ligne on y attribue la durée (60 pour 2 mois par exemple), pour ceux dont la date de fin est inférieur on y indique 0 (comme ça lorsque je fais la somme de toutes les lignes ça ne comptera que les durées les plus longues) et enfin, pour les évènements qui n'ont pas le même matricule et la même date de début, on écrit la durée dans leur ligne (le cas de base où il n'y a aucun rallongement).

    Seulement je ne sais pas du tout comment faire ça, je pense qu'il faut comparer chaque ligne du tableau avec toutes les autres lignes du tableau (pas avec elle-même car sinon la condition sera toujours vraie), et je ne sais pas faire.

    Si vous savez comment faire, par n'importe quel moyen ce serait génial !

    Merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2008
    Messages : 259
    Points : 338
    Points
    338
    Par défaut
    Bjr, je n'ai pas BO sous la main, mais je tenterai les solutions ci-dessous

    Solution1 : (Tu peux essayer le tableau suivant, mais ce ne donnera pas tout à fait ce que tu souhaitais)
    Tableau : Matricule - Début - NbArrets - FinMax - Durée1

    variables :
    NbArrets =nb([Fin]) dans([Matricule];[Début])
    FinMax =max([Fin]) dans([Matricule];[Début])
    Durée1 =JourEntre([Début];[FinMax])


    Solution 2
    Tableau : Matricule - Début - Fin - Durée2
    variable :
    Durée2 : si NbCumulatif([Fin];([Matricule];[Début])) = nb([Fin]) dans([Matricule];[Début]) Alors JourEntre([Début];[FinMax])

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Tout d'abord merci de ta réponse.

    Je ne comprends pas tout pour la seconde méthode.

    Qu'est ce que le "Dans" et comment trouves-tu la "FinMax" ?

    Merci encore de ton aide

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2008
    Messages : 259
    Points : 338
    Points
    338
    Par défaut
    Bjr,

    l'opérateur Dans(...) est un opérateur de contexte. Il permet de figer le contexte de calcul.
    Ainsi la syntaxe nb([Fin]) dans([Matricule];[Début]) doit permettre de connaître le nombre de "date de fin" de chaque "Matricule - date de début"


    FinMax est la même variable que dans la solution1 (j'ai oublié de la renoter)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Ah oui, ma question était bête je n'avais pas tout bien regardé.

    J'ai cependant une erreur lorsque j'essaie de créer la variable.

    Voici la formule exacte :
    =Si(NombreCumulatif([fin-2016];[Matricule];[début-2016]))=Nombre([fin-2016])Dans([Matricule];[début-2016])Alors JoursEntre([début-2016];[FinMax])

    Et l'erreur se situe sur [Matricule] dans NombreCumulatif.
    "Contexte de réinitialisation incorrect (WIS 10072)"

    Je ne sais pas trop comment la résoudre, j'ai lu la doc de la fonction mais je n'ai pas trouvé .

    Merci encore.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2008
    Messages : 259
    Points : 338
    Points
    338
    Par défaut
    Est-ce que [Matricule] et [début-2016] sont bien des dimensions ?
    Si oui, je pense que c'est une histoire de parenthèses

    =Si (NombreCumulatif([fin-2016];([Matricule];[début-2016]))=Nombre([fin-2016])Dans([Matricule];[début-2016])) Alors JoursEntre([début-2016];[FinMax])

    Mais tu es dans quelle version de BO ?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Je suis sous BO XI 3.1

Discussions similaires

  1. Afficher valeur ou non sous conditions
    Par sand111510 dans le forum Modélisation
    Réponses: 1
    Dernier message: 12/09/2012, 16h48
  2. Afficher un button column sous condition
    Par Devlin111 dans le forum C#
    Réponses: 3
    Dernier message: 13/06/2012, 11h43
  3. [XL-MAC 2011] Afficher une donnée aléatoire sous condition
    Par Donv29 dans le forum Excel
    Réponses: 1
    Dernier message: 17/03/2012, 12h17
  4. Repérer les doublons sous condition
    Par arckeo72 dans le forum Excel
    Réponses: 3
    Dernier message: 24/12/2010, 09h59
  5. Réponses: 9
    Dernier message: 24/01/2008, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo