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

Discussion :

Retourner une dimension en fonction de la valeur la plus élevée d’un indicateur [DeskI XiR2]

  1. #1
    Membre à l'essai
    Homme Profil pro
    Contrôleur de gestion RH
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Contrôleur de gestion RH
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 16
    Points
    16
    Par défaut Retourner une dimension en fonction de la valeur la plus élevée d’un indicateur
    Bonjour à tous,

    Dans un rapport, je dois retourner, sur une ligne par salarié, le motif principal d’absence pendant l’année.

    Je dispose des éléments suivants :
    <ID salarié>
    <Code absence>
    <Nb jours absence>

    Exemple :

    - Données brutes :

    ID salarié_________Code absence ____Nb jours absence

    Monsieur Machin__ Accident du travail__45
    Monsieur Machin __Maladie ordinaire___7
    Madame Truc ____Enfant malade_______5
    Madame Truc ____Maternité_________112

    - Résultat attendu :

    ID salarié_________Code absence

    Monsieur Machin__ Accident du travail
    Madame Truc ____Maternité

    Le palmarès ne donnant rien de concluant, et la fonction Rang pas appropriée pour conserver une ligne par salarié, je sèche un peu…

    D’avance merci pour votre aide !

  2. #2
    Rédacteur
    Avatar de TomDuBouchon
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2009
    Messages
    3 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 343
    Points : 5 848
    Points
    5 848
    Par défaut
    Bonjour,

    Alors, le mieux pour résoudre ce genre de cas est d'appliquer une nouvelle condition dans la requête.

    En l'occurrence, il faudrait ajouter une condition sur l'objet "Nb jours absence", en précisant "Egal à", puis sélectionner "Calcul".

    De là, il sera possible de choisir de sélectionner le maximum en fonction d'un autre objet, ici "ID salarié"
    Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
    Un message vous a aidé ? Votez en cliquant sur
    Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton

  3. #3
    Membre à l'essai
    Homme Profil pro
    Contrôleur de gestion RH
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Contrôleur de gestion RH
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    En suivant ces consignes, BO me revoit le message d'erreur suivant à l'éxécution :

    DA0003 - Exception: DBD, ORA-01722: Nombre non valide State: N/A

    - Dans Objets disponibles, j'ai choisi <ID salarié>
    - Fonctions diponibles : 'Maximum'
    - Peut être calculé : 'Globalement'
    - Peut être calculé : 'Indépendamment des objets'
    - Vous pouvez comparer l'objet à : 'au moins une valeur du calcul'

    J'ai également essayé d'autres choix sans plus de succès...

    Je précise que l'indicateur <Nb de jours> est défini dans le designer sous la forme SUM(...)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Contrôleur de gestion RH
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Contrôleur de gestion RH
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Quelqu'un aurait une petite idée...?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 90
    Points : 62
    Points
    62
    Par défaut
    Bonjour

    Votre requête est intéressante (par salarié son type d'arrêt le + important)

    je voulais tester la méthode de Tom mais je suis en 5.1.9 et il ne me propose pas 'fonctions disponibles' et donc max

    Je passe directement de "sel un objet" à 'def le niveau de calcul"

    J'ai fait pleins de choix comme vous : il ne me renvoie qu'un seul salarié (c'est déjà çà)

    Et définir le niveau de calcul par un ou plusieurs objets : je n'arrive pas en selectionner 2 en même temps (sal et type d'arrêt) (si cela pouvait être une solution)

    Longueur et patience de temps....

    Cordialement

  6. #6
    Membre actif
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Points : 217
    Points
    217
    Par défaut
    Bonjour
    ci-joint en bidouillant un peu ce que j'arrive à avoir si cela peut vous aider.
    après execution de ma requete avec les dimensions type d'arrêt, nom agent, durée de l'arret, j'ai posé un maitre sur le nom. Ensuite j'ai crée 2 colonnes :
    durée max avec en formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Max(<Durée de l'arrêt sur période>)Dans Bloc
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type arrêt max : =Max(<Type d'arrêt (libellé)>) Dans Bloc
    Cela peut régler une partie du problème.
    Cordialement.
    Fichiers attachés Fichiers attachés

  7. #7
    Rédacteur
    Avatar de TomDuBouchon
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2009
    Messages
    3 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 343
    Points : 5 848
    Points
    5 848
    Par défaut
    OK,

    Alors, ce n'est pas un problème de version, mais d'objet (toutes les options sont dispos sur la v5)

    En fait, la définition du calcul Max, ou autre, ne peut être appliqué sur indicateur... Effectivement je n'avais à ce jour utiliser ce système que pour des dates en dimension...

    Bref, cela va poser un problème, car on a aucun objet à comparer... Dans la logique il aurait fallu un objet "Max_jours_absence" pour faire la comparaison. Du coup il aurait fallu créer la condition suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <Nb jours absences> Egal à Calcul :
    Max_jours_absence,
    Par un ou plusieurs objets : ID_Salarié
    Toutes les valeurs du calcul
    Mais du coup, je me demande si tu n'aurais pas meilleur compte de créer une table dérivée qui te ramène directement ce que tu souhaites, et de créer les objets correspondants.

    Sinon, il y aurait peut être une autre solution mais je ne me souviens jamais si c'est apparu à partir de la XIR2 ou la XI3... Donc à tester :

    Dans le tableau, créer un objet (nommons le "maxjours") avec la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Max(<nb jours absences>) Dans (<ID_Salarié>)
    Ensuite, dans la colonne des codes d'absence, saisir la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =<Code absence> Où (<Nb jours absences> = <maxjours>)
    @bailet : pas de table dérivée pour toi : création d'un objet spécifique obligatoire
    @gwena2b : le max(<libellé>) renverra le libellé max, et pas le libellé en fonction du nombre max.
    Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
    Un message vous a aidé ? Votez en cliquant sur
    Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton

  8. #8
    Membre actif
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Points : 217
    Points
    217
    Par défaut
    Effectivement, tu as raison tom
    On en apprend tous les jours sur ce forum

  9. #9
    Membre à l'essai
    Homme Profil pro
    Contrôleur de gestion RH
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Contrôleur de gestion RH
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Tom je pense que ta formule fonctionne à partir de XR3, moi j'ai un message d'erreur...

    C'est dommage, je passe à la 3 en novembre et j'ai cette enquête à rendre la semaine prochaine!

    Tu parlais également d'une table dérivée, à quoi pourrais ressembler le code?

    En tout cas merci à tous pour votre intérêt, si ça ne marche pas je ferai un aller-retour par Excel...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Bonjour,
    J'ai peur de passer un peu tard.

    J'ai compris que tu disposes d'un indicateur qui donne le nombre de jours d'absence et tu veux savoir la raison majeure de l'absence du salarié.

    Pour résoudre ce problème, j'essaierai cela.

    Euh ..., je ne sais pas expliquer simplement on va y aller en 2 fois.

    Dans la requête on a trois objets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Nom / Motif / Nb jours
    Tableau 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Nom         nombre total de jours        Nb Max d absences pour 
                d absence                    le même motif
    Mr Machin        52                             45
    Mme Truc        117                            112
    La formule pour obtenir le nombre max d'absences du salarié ([Nom]) pour le même motif est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =Max([Nb jours] Dans([Nom];[Motif])) Dans ([Nom])
    La fonction Max peut s'appliquer à des chaînes, on peut formater des nombres en chaîne, et on peut concaténer les chaînes.

    Refaire le calcul avec les fonctions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    = Max(FormatDeNombre([NbJours];"0000")+ [Motif] Dans([Nom];[Motif])) Dans ([Nom])
    Cela devrait donner :

    Tableau 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Nom         nombre total de jours        Nb Max d absences pour 
                d absence                    le même motif
    Mr Machin        52                         0045Accident du travail
    Mme Truc        117                         0112Maternité

    Tu transformes ta formule en variable => [Motif max] (plus facile pour la suite).

    Le "0000" dans format de jour sert a s'assurer que le nombre de jours sera bien codé sur 4 caractères.
    Deux raisons pour cela :

    1 : Si tu fais tes stats par année, il n'y aura jamais plus de 366 jours d'absence et avec des 0 en début de nombre tu es certain que tes chaînes seront classées comme des nombres. Donc le Max te ramènera la bonne valeur.

    2 : Si tu ne veux pas voir les nombres dans ton tableau tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =Droite([Motif Max]; Longueur([Motif_Max])-4)
    Sauf erreur de ma part ça devrait donner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Nom         nombre total de jours        Nb Max d absences pour 
                d absence                    le même motif
    Mr Machin        52                         Accident du travail
    Mme Truc        117                         Maternité
    Seul bémol : Un salarié absent le même nombre de jours pour deux raisons différentes. Là tu ne verras qu'un des deux motifs.


    Bon courage.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Contrôleur de gestion RH
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Contrôleur de gestion RH
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    L'idée me paraît tout à fait cohérente...je suis en vacances la semaine prochaine, je teste ça en rentrant.

    Merci de ton aide!!

  12. #12
    Membre à l'essai
    Homme Profil pro
    Contrôleur de gestion RH
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Contrôleur de gestion RH
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    ça a fonctionné, du 1er coup, et sans accroc...
    Un grand merci!

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 364
    Points : 551
    Points
    551
    Par défaut
    Bonne nouvelle,

    Au plaisir !

  14. #14
    Membre actif
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Points : 217
    Points
    217
    Par défaut
    Salut

    j'ai essayé sur la 6.5 et cela marche également.
    Trés bon travail Dira

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Retourner une couleur en fonction d'une valeur
    Par vincent0808 dans le forum Langage
    Réponses: 7
    Dernier message: 08/06/2010, 23h27
  2. lancer une macro en fonction de la valeur d'une cellule
    Par arkorrigan dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/06/2008, 17h18
  3. Réponses: 7
    Dernier message: 13/10/2007, 23h31
  4. Réponses: 3
    Dernier message: 21/05/2007, 15h31
  5. afficher une image en fonction de la valeur d un champ
    Par zahiton dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2006, 16h22

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