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

POWER Discussion :

formule Si pour 3 valeurs mais sur plusieurs lignes


Sujet :

POWER

  1. #1
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut formule Si pour 3 valeurs mais sur plusieurs lignes
    Bonjour,
    Je débute sur les outils Power : j'ai suivi une formation de 3 jours et suivi bcp de vidéos...
    j'ai une BdD complexe dans la mesure où mon Id se trouvent sur plusieurs lignes (entre 1 à 20 lignes possibles).
    J'ai une colonne nommée "Statut" ; dans cette colonne, j'ai 3 valeurs possibles : OK;KO;NC (il y a une valeur pour chaque ligne de l'Id)
    Ma formule doit correspondre à ceci :
    Pour un même Id, si une des valeurs Statut est KO alors KO, si toutes les valeurs Statuts sont NC alors NC, sinon Ok
    je n'ai aucune idée pour savoir comment m'y prendre.

    Est-ce que quelqu'un peut m'aider, svp ?
    Un grand merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 041
    Points : 2 492
    Points
    2 492
    Par défaut
    Bonjour

    vous cherchez quoi ?
    une formule Excel, une formule DAX pour Power Pivot, une formule M pour Power Query

    vous avez quelle version d'Excel ?

    Votre question est trop vague

    Stéphane

  3. #3
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Raccourcix, merci de votre réponse
    J'ai office 365, je récupère mes données d'un fichier cvs dans Query puis je crée mes rapports avec Pivot, donc une formule DAX pour Power Pivot serait l'idéal, mais une formule M pour Power Query ferait parfaitement l'affaire.
    Voici ce que cela donne dans csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    N°   Statut   autres colonnes
    01   OK
    01   OK
    01   KO
    01   NC
    01   OK
    Dans ce cas du dossier 01 on a un KO donc le dossier 01 est KO (le nombre de ligne pour le dossier est aléatoire mais ne devrait pas dépasser la vingtaine)
    Merci de votre aide

  4. #4
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 041
    Points : 2 492
    Points
    2 492
    Par défaut
    Bonjour

    avec Power Query vous regroupez les N° pour déterminer le statut "retenu"
    List.MatchesAny pour au moins un KO
    List.MatchesAll pour tous en NC
    sinon OK

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Table.Group(
            #"Etape précédente", 
            {"N°"}, 
            {{"Statut retenu", each 
                if List.MatchesAny(_[Statut],each _ = "KO") then "KO" 
                else if List.MatchesAll(_[Statut],each _ = "NC") then "NC" 
                else "OK"}}
            )
    Puis vous fusionnez avec votre table initiale

    Stéphane

  5. #5
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonsoir Raccourcix,
    Un grand merci pour votre réponse.
    Mais je n'arrive pas à l'utiliser, je ne sais pas comment l'insérer dans l'éditeur avancé ; j'ai cherché sur le Net, mais je ne trouve pas.
    Voici ce que j'ai essayé de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    let
        Source = Csv.Document(File.Contents(Chemin()&"\export.csv"),[Delimiter=";", Columns=28, Encoding=1252, QuoteStyle=QuoteStyle.None]),
        #"En-têtes promus" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
        #"Type modifié" = Table.TransformColumnTypes(#"En-têtes promus",{{"Statut OSRC", type text}, {"Numéro de dossier", Int64.Type}, {"Type de fiche", type text}, {"Superviseur", type text}, {"Structure", type text}, {"Réseau", type text}, {"Date de supervision", type date}, {"NIR", Int64.Type}, {"NomAssure", type text}, {"Technicien", type text}, {"Nouveau embauché(e)/formé(e)", type text}, {"Agent ciblé", type text}, {"Temps", Int64.Type}, {"Thème de supervision", type text}, {"Catégorie", type text}, {"Rubrique", type text}, {"Spécificité", type text}, {"Thématique", type text}, {"Point de supervision", type text}, {"Statut", type text}, {"Incidence financière", type text}, {"Motif KO", type text}, {"Mot clé KO", type text}, {"Commentaire", type text}, {"Point de supervision national?", type text}, {"Dossier supervisé avec erreur", type text}, {"Thème de supervision national?", type text}, {"Commentaire global", type text}}),
        #"Colonnes renommées" = Table.RenameColumns(#"Type modifié",{{"Numéro de dossier", "N°"}, {"Temps", "Durée"}, {"Point de supervision national?", "Point Spv Nat"}, {"Dossier supervisé avec erreur", "Spv avec erreur"}, {"Thème de supervision national?", "Thème Nat"}, {"Nouveau embauché(e)/formé(e)", "Nouvel embauché"}})
        #"Statut" = Table.Group(#"Colonnes renommées",{"N°"}, 
            {{"Statut retenu", each 
                if List.MatchesAny(_[Statut],each _ = "KO") then "KO" 
                else if List.MatchesAll(_[Statut],each _ = "NC") then "NC" 
                else "OK"}})
        in
            #"Statut"
    mais je reçois le message suivant :
    Expression.SyntaxError : Jeton Comma attendu.
    avec entre la ligne 6 et la ligne 7--> ^^^^^^
    Pouvez-vous me dire comment corriger cette erreur, svp ?
    Merci

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 660
    Points : 1 399
    Points
    1 399
    Par défaut
    Bonjour,

    Il manque une virgule à la fin de la ligne commençant par .

  7. #7
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 041
    Points : 2 492
    Points
    2 492
    Par défaut
    Bonjour
    Il faut une virgule à la fin de chaque étape sauf la dernière (avant le in)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    let
    étape1 = ... ,
    étape2 = ... ,
    étape3 = ...
    in
    étape3
    il faut donc que vous ajoutiez une virgule à la fin de la ligne #"Colonnes renommées" =... ,

    Stéphane

  8. #8
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour,
    Désolée de revenir vers vous que maintenant.

    J'ai modifié mon éditeur, comme vous me l'avez montré, cela a eu pour conséquence de remplacer ma base de données par une nouvelle table avec 2 colonnes l'une pour les N° de dossier et l'autre pour son "statut retenu"; c'est donc super et je vous remercie.
    Y a-t-il un moyen pour conserver ma base de données et que la colonne "Statut retenu" soit ajoutée à la BDD, en recopiant le statut retenu à l'ensemble des lignes du dossier ou alors de créer une nouvelle table que je pourrais lier à la 1ère ?

    Je vous remercie pour votre aide

  9. #9
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 402
    Points : 2 855
    Points
    2 855
    Par défaut
    Bonjour

    Citation Envoyé par mouftie Voir le message
    [...] ou alors de créer une nouvelle table que je pourrais lier à la 1ère ?
    C'est exactement cela qu'a écrit Raccourcix dans le post 4 "Puis vous fusionnez avec votre table initiale"

    La requête que vous venez d'obtenir, il faut la charger en connexion uniquement.
    Puis revenir dans votre première requête et faire une fusion avec cette nouvelle requête > puis afficher la colonne désirée (après avoir dépliée la colonne de fusion).

    En espérant que cela aide

    Bonne fin d'après-midi

    Pierre Dumas
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 041
    Points : 2 492
    Points
    2 492
    Par défaut
    Bonjour
    Une autre possibilité que la fusion avec la table initiale consiste à récupérer également "toutes les lignes" lors du regroupement

    Cela donnera un code du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Table.Group(#"Colonnes renommées",{"N°"}, 
            {{"Statut retenu", each 
                if List.MatchesAny(_[Statut],each _ = "KO") then "KO" 
                else if List.MatchesAll(_[Statut],each _ = "NC") then "NC" 
                else "OK"},
                {"Données", each _}
                })
    Puis à déployer les colonnes nécessaires.

    Stéphane

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/12/2015, 10h47
  2. [XL-2007] Création macro pour répéter une formule sur plusieurs lignes
    Par maxpj dans le forum Excel
    Réponses: 1
    Dernier message: 11/12/2015, 20h45
  3. [XL-2010] Création macro pour répéter une formule sur plusieurs lignes
    Par JoOz-ZeP43 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/10/2014, 19h06
  4. Reporter valeur enregistrement sur plusieurs lignes suivantes
    Par oarnold dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 06/03/2008, 18h52
  5. Réponses: 3
    Dernier message: 03/03/2008, 20h02

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