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 :

Ne tenir compte que de certaines lignes si .. sinon


Sujet :

POWER

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingenieur maintenance
    Inscrit en
    Février 2023
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingenieur maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2023
    Messages : 31
    Points : 21
    Points
    21
    Par défaut Ne tenir compte que de certaines lignes si .. sinon
    Bonjour!
    J'ai un soucis pour lequel j'avais demander de l'aide pour réaliser une macro et on m'a conseillé d'utiliser Power Query (je débute).
    J'ai grosso modo réussi à arriver au résultat désiré grâce à Power Query, c'est vraiment super sachant que le format des données de départ était vraiment dégeulasse. Néanmoins j'ai quelques détails à régler avant un resultat parfait:

    Nom : p2.png
Affichages : 148
Taille : 65,2 Ko

    Ici on a les heures du 23 et 24 novembre 2023 d'un technicien qui bosse dans la 3ème équipe (shift 3). Le 23 et 24 notre entreprise était fermée or ce technicien à tout de même travailler (MAINTENANCE oblige) mais ce n'était pas le cas de tous les techniciens, certains ont bossé et d'autres non.
    Ce que je veux alors, c'est que lorsque j'ai des heures en Holiday - Shift 3 et des heures en Holiday Worked - Shift 3 le même jour et pour le même technicien alors ne pas prendre en compte les heures correspondant à Holiday - Shift 3 pour les techniciens de la 3ème équipe.
    Pour la seconde équipe c'est Holiday - Shift 2 et Holiday Worked - Shift 2.
    Enfin pour la 1ère équipe c'est Holiday et Holiday Worked.
    Les autres lignes correspondent à des heures de travail normales, des heures supp ... bref à ne pas toucher.

    Merci de m'avoir lu et j'ai hâte de vous lire !

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 473
    Points : 16 357
    Points
    16 357
    Par défaut
    Bonjour

    Il faut exploiter la ligne suivante et tester si ligne en cours contient "Holiday -" et ligne suivante "Holiday Worked" pour la même date et le même technicien et remplacer la valeur Hours par 0.

    Il faut utiliser pour cela des index : principe avec double Index ici http://www.excel-formations.fr/Trucs_astuces/PQ05.php

    On peut aussi utiliser un seul index et se référer à la ligne suivante par l'index de la ligne +1.
    Avec l'étape précédente nommée PStep
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = Table.ReplaceValue(PStep,each [Hours],each  if [Technicien name]=PStep[Technicien name]{[Index]+1} and [Work date]=PStep[Work date]{[Index]+1} and Text.Contains([Pay code],"Holidays -") and Text.Contains(PStep[Pay code]{[Index]+1},"Holidays Worked") then 0 else [Hours],Replacer.ReplaceValue,{"Hours"})

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingenieur maintenance
    Inscrit en
    Février 2023
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingenieur maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2023
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Bonjour et merci pour ta réponse, malheuresement j'ai besoin d'un peu plus d'aide car je n'obitent pas de résultat.
    Lorsque que tu dis que PStep correspond à la dernière étape, je dois remplacer PStep par le nom de ma dernière étape n'est ce pas ? Dans mon cas ma dernière étape se nomme #"Renamed Columns8". Lorsque je lance le code rien ne se produit !

    Donc voici le code entier avant l'ajout de ton étape:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    let
        Source = Folder.Files("\\XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"),
        #"Filtered Hidden Files1" = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true),
        #"Invoke Custom Function1" = Table.AddColumn(#"Filtered Hidden Files1", "Transform File", each #"Transform File"([Content])),
        #"Renamed Columns1" = Table.RenameColumns(#"Invoke Custom Function1", {"Name", "Source.Name"}),
        #"Removed Other Columns1" = Table.SelectColumns(#"Renamed Columns1", {"Source.Name", "Transform File"}),
        #"Expanded Table Column1" = Table.ExpandTableColumn(#"Removed Other Columns1", "Transform File", Table.ColumnNames(#"Transform File"(#"Sample File"))),
        #"Changed Type" = Table.TransformColumnTypes(#"Expanded Table Column1",{{"Source.Name", type text}, {"Column1", type any}, {"Column2", type text}, {"Column3", type any}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}, {"Column7", type any}, {"Column8", type text}, {"Column9", type any}, {"Column10", type text}, {"Column11", type any}, {"Column12", type text}, {"Column13", type any}, {"Column14", type any}, {"Column15", type any}, {"Column16", type text}, {"Column17", type any}, {"Column18", type any}, {"Column19", type any}, {"Column20", type any}, {"Column21", type any}, {"Column22", type text}, {"Column23", type any}, {"Column24", type any}, {"Column25", type any}, {"Column26", type any}, {"Column27", type any}, {"Column28", type any}, {"Column29", type text}, {"Column30", type any}, {"Column31", type any}, {"Column32", Int64.Type}, {"Column33", type any}, {"Column34", type any}, {"Column35", type any}, {"Column36", type any}, {"Column37", type any}}),
        #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"Source.Name"}),
        #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Column4", "Technician name"}}),
        #"Reordered Columns" = Table.ReorderColumns(#"Renamed Columns",{"Technician name", "Column1", "Column2", "Column3", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17", "Column18", "Column19", "Column20", "Column21", "Column22", "Column23", "Column24", "Column25", "Column26", "Column27", "Column28", "Column29", "Column30", "Column31", "Column32", "Column33", "Column34", "Column35", "Column36", "Column37"}),
        #"Renamed Columns2" = Table.RenameColumns(#"Reordered Columns",{{"Column5", "Total amont of hours this week"}, {"Column6", "Pay Code"}}),
        #"Removed Columns1" = Table.RemoveColumns(#"Renamed Columns2",{"Column8", "Column7", "Column9"}),
        #"Renamed Columns3" = Table.RenameColumns(#"Removed Columns1",{{"Column10", "Work Date"}}),
        #"Removed Columns2" = Table.RemoveColumns(#"Renamed Columns3",{"Column11", "Column12", "Column13", "Column14", "Column15"}),
        #"Renamed Columns4" = Table.RenameColumns(#"Removed Columns2",{{"Column16", "Time In"}}),
        #"Removed Columns3" = Table.RemoveColumns(#"Renamed Columns4",{"Column17", "Column18", "Column19", "Column20", "Column21"}),
        #"Renamed Columns5" = Table.RenameColumns(#"Removed Columns3",{{"Column22", "Time Out"}}),
        #"Removed Columns4" = Table.RemoveColumns(#"Renamed Columns5",{"Column23", "Column24", "Column25", "Column26", "Column27"}),
        #"Renamed Columns6" = Table.RenameColumns(#"Removed Columns4",{{"Column28", "Hours"}}),
        #"Removed Columns5" = Table.RemoveColumns(#"Renamed Columns6",{"Column29", "Column30", "Column31", "Column32", "Column33", "Column34", "Column35", "Column36", "Column37", "Column3"}),
        #"Filtered Rows" = Table.SelectRows(#"Removed Columns5", each true),
        #"Removed Columns6" = Table.RemoveColumns(#"Filtered Rows",{"Column2", "Column1"}),
        #"Filtered Rows1" = Table.SelectRows(#"Removed Columns6", each ([Pay Code] <> "Meal")),
        #"Removed Blank Rows" = Table.SelectRows(#"Filtered Rows1", each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null}))),
        #"Removed Top Rows" = Table.Skip(#"Removed Blank Rows",2),
        #"Removed Columns7" = Table.RemoveColumns(#"Removed Top Rows",{"Total amont of hours this week"}),
        #"Changed Type1" = Table.TransformColumnTypes(#"Removed Columns7",{{"Technician name", type text}}),
        #"Filled Down" = Table.FillDown(#"Changed Type1",{"Technician name"}),
        #"Filtered Rows2" = Table.SelectRows(#"Filled Down", each not Text.Contains([Technician name], " (cont.)")),
        #"Added Custom" = Table.AddColumn(#"Filtered Rows2", "Custom", each if Text.Contains([Technician name],",")
    and [Pay Code]=null
    and [Work Date]=null
    and [Time In]=null
    and [Time Out]=null
    and [Hours]=null
    then "TO DELETE"
    else null),
        #"Renamed Columns7" = Table.RenameColumns(#"Added Custom",{{"Custom", "TO DELETE"}}),
        #"Filtered Rows3" = Table.SelectRows(#"Renamed Columns7", each ([TO DELETE] = null)),
        #"Removed Columns8" = Table.RemoveColumns(#"Filtered Rows3",{"TO DELETE"}),
        #"Added Custom1" = Table.AddColumn(#"Removed Columns8", "TO DELETE 2", each if [Pay Code]=null
    then "TO DELETE"
    else null),
        #"Filtered Rows4" = Table.SelectRows(#"Added Custom1", each ([TO DELETE 2] = null)),
        #"Removed Columns9" = Table.RemoveColumns(#"Filtered Rows4",{"TO DELETE 2"}),
        #"Changed Type2" = Table.TransformColumnTypes(#"Removed Columns9",{{"Hours", type number}}),
        #"Removed Errors" = Table.RemoveRowsWithErrors(#"Changed Type2", {"Hours"}),
        #"Filtered Rows5" = Table.SelectRows(#"Removed Errors", each ([Hours] <> 0)),
        #"Removed Columns10" = Table.RemoveColumns(#"Filtered Rows5",{"Time In", "Time Out"}),
        #"Changed Type3" = Table.TransformColumnTypes(#"Removed Columns10",{{"Work Date", type date}}),
        #"Added Custom2" = Table.AddColumn(#"Changed Type3", "Custom", each Date.WeekOfYear([Work Date], Day.Monday)),
        #"Renamed Columns8" = Table.RenameColumns(#"Added Custom2",{{"Custom", "Week No"}})
    in
        #"Renamed Columns8"

    Et voici le code modifié en prenant en compte ta solution (modifications à partir de la ligne 54):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    let
        Source = Folder.Files("\\XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"),
        #"Filtered Hidden Files1" = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true),
        #"Invoke Custom Function1" = Table.AddColumn(#"Filtered Hidden Files1", "Transform File", each #"Transform File"([Content])),
        #"Renamed Columns1" = Table.RenameColumns(#"Invoke Custom Function1", {"Name", "Source.Name"}),
        #"Removed Other Columns1" = Table.SelectColumns(#"Renamed Columns1", {"Source.Name", "Transform File"}),
        #"Expanded Table Column1" = Table.ExpandTableColumn(#"Removed Other Columns1", "Transform File", Table.ColumnNames(#"Transform File"(#"Sample File"))),
        #"Changed Type" = Table.TransformColumnTypes(#"Expanded Table Column1",{{"Source.Name", type text}, {"Column1", type any}, {"Column2", type text}, {"Column3", type any}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}, {"Column7", type any}, {"Column8", type text}, {"Column9", type any}, {"Column10", type text}, {"Column11", type any}, {"Column12", type text}, {"Column13", type any}, {"Column14", type any}, {"Column15", type any}, {"Column16", type text}, {"Column17", type any}, {"Column18", type any}, {"Column19", type any}, {"Column20", type any}, {"Column21", type any}, {"Column22", type text}, {"Column23", type any}, {"Column24", type any}, {"Column25", type any}, {"Column26", type any}, {"Column27", type any}, {"Column28", type any}, {"Column29", type text}, {"Column30", type any}, {"Column31", type any}, {"Column32", Int64.Type}, {"Column33", type any}, {"Column34", type any}, {"Column35", type any}, {"Column36", type any}, {"Column37", type any}}),
        #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"Source.Name"}),
        #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Column4", "Technician name"}}),
        #"Reordered Columns" = Table.ReorderColumns(#"Renamed Columns",{"Technician name", "Column1", "Column2", "Column3", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17", "Column18", "Column19", "Column20", "Column21", "Column22", "Column23", "Column24", "Column25", "Column26", "Column27", "Column28", "Column29", "Column30", "Column31", "Column32", "Column33", "Column34", "Column35", "Column36", "Column37"}),
        #"Renamed Columns2" = Table.RenameColumns(#"Reordered Columns",{{"Column5", "Total amont of hours this week"}, {"Column6", "Pay Code"}}),
        #"Removed Columns1" = Table.RemoveColumns(#"Renamed Columns2",{"Column8", "Column7", "Column9"}),
        #"Renamed Columns3" = Table.RenameColumns(#"Removed Columns1",{{"Column10", "Work Date"}}),
        #"Removed Columns2" = Table.RemoveColumns(#"Renamed Columns3",{"Column11", "Column12", "Column13", "Column14", "Column15"}),
        #"Renamed Columns4" = Table.RenameColumns(#"Removed Columns2",{{"Column16", "Time In"}}),
        #"Removed Columns3" = Table.RemoveColumns(#"Renamed Columns4",{"Column17", "Column18", "Column19", "Column20", "Column21"}),
        #"Renamed Columns5" = Table.RenameColumns(#"Removed Columns3",{{"Column22", "Time Out"}}),
        #"Removed Columns4" = Table.RemoveColumns(#"Renamed Columns5",{"Column23", "Column24", "Column25", "Column26", "Column27"}),
        #"Renamed Columns6" = Table.RenameColumns(#"Removed Columns4",{{"Column28", "Hours"}}),
        #"Removed Columns5" = Table.RemoveColumns(#"Renamed Columns6",{"Column29", "Column30", "Column31", "Column32", "Column33", "Column34", "Column35", "Column36", "Column37", "Column3"}),
        #"Filtered Rows" = Table.SelectRows(#"Removed Columns5", each true),
        #"Removed Columns6" = Table.RemoveColumns(#"Filtered Rows",{"Column2", "Column1"}),
        #"Filtered Rows1" = Table.SelectRows(#"Removed Columns6", each ([Pay Code] <> "Meal")),
        #"Removed Blank Rows" = Table.SelectRows(#"Filtered Rows1", each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null}))),
        #"Removed Top Rows" = Table.Skip(#"Removed Blank Rows",2),
        #"Removed Columns7" = Table.RemoveColumns(#"Removed Top Rows",{"Total amont of hours this week"}),
        #"Changed Type1" = Table.TransformColumnTypes(#"Removed Columns7",{{"Technician name", type text}}),
        #"Filled Down" = Table.FillDown(#"Changed Type1",{"Technician name"}),
        #"Filtered Rows2" = Table.SelectRows(#"Filled Down", each not Text.Contains([Technician name], " (cont.)")),
        #"Added Custom" = Table.AddColumn(#"Filtered Rows2", "Custom", each if Text.Contains([Technician name],",")
    and [Pay Code]=null
    and [Work Date]=null
    and [Time In]=null
    and [Time Out]=null
    and [Hours]=null
    then "TO DELETE"
    else null),
        #"Renamed Columns7" = Table.RenameColumns(#"Added Custom",{{"Custom", "TO DELETE"}}),
        #"Filtered Rows3" = Table.SelectRows(#"Renamed Columns7", each ([TO DELETE] = null)),
        #"Removed Columns8" = Table.RemoveColumns(#"Filtered Rows3",{"TO DELETE"}),
        #"Added Custom1" = Table.AddColumn(#"Removed Columns8", "TO DELETE 2", each if [Pay Code]=null
    then "TO DELETE"
    else null),
        #"Filtered Rows4" = Table.SelectRows(#"Added Custom1", each ([TO DELETE 2] = null)),
        #"Removed Columns9" = Table.RemoveColumns(#"Filtered Rows4",{"TO DELETE 2"}),
        #"Changed Type2" = Table.TransformColumnTypes(#"Removed Columns9",{{"Hours", type number}}),
        #"Removed Errors" = Table.RemoveRowsWithErrors(#"Changed Type2", {"Hours"}),
        #"Filtered Rows5" = Table.SelectRows(#"Removed Errors", each ([Hours] <> 0)),
        #"Removed Columns10" = Table.RemoveColumns(#"Filtered Rows5",{"Time In", "Time Out"}),
        #"Changed Type3" = Table.TransformColumnTypes(#"Removed Columns10",{{"Work Date", type date}}),
        #"Added Custom2" = Table.AddColumn(#"Changed Type3", "Custom", each Date.WeekOfYear([Work Date], Day.Monday)),
        #"Renamed Columns8" = Table.RenameColumns(#"Added Custom2",{{"Custom", "Week No"}}),
        #"Added Custom3" = Table.ReplaceValue(#"Renamed Columns8",each [Hours],each  if [Technicien name]=#"Renamed Columns8"[Technicien name]{[Index]+1} and [Work date]=#"Renamed Columns8"[Work date]{[Index]+1} and Text.Contains([Pay code],"Holidays") and Text.Contains(#"Renamed Columns8"[Pay code]{[Index]+1},"Holidays Worked") then 0 else [Hours],Replacer.ReplaceValue,{"Hours"})
    in
        #"Added Custom3"

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 473
    Points : 16 357
    Points
    16 357
    Par défaut
    Bonjour
    Rien ne t'empêchait de renommer ton étape Renamed Columns8 en PStep : personne ne s'enquiquine dans les formules avec des noms d'étapes mer..iques

    A priori tu n'as pas créé d'Index donc cela ne peut fonctionner.

    D'autre part on n'ajoute pas une colonne avec ce que j'ai donné, mais on remplace dans la colonne Hours existante

    Donc avec ces 2 problèmes tu dois avoir un message d'erreur...

    Ajoute un Index après ton étape, renomme cette étape d'ajout d'index Pstep, clique sur le symbole Fx à gauche de la barre de formule et remplace ce qui s'affiche dans cette barre par le code que je t'ai donné

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingenieur maintenance
    Inscrit en
    Février 2023
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingenieur maintenance
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2023
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    J'ai reposté la problematique ici :

    https://www.developpez.net/forums/d2.../#post12012945

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

Discussions similaires

  1. Ne faire le Update que sur certaines lignes de ma table.
    Par FredNV dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 21/03/2017, 09h18
  2. Réponses: 0
    Dernier message: 12/08/2016, 10h21
  3. [XL-2007] Trier des lignes sans tenir compte de certaines lignes
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 30/08/2010, 19h02
  4. [RegEx] Tenir compte des sauts de ligne
    Par Christophe Charron dans le forum Langage
    Réponses: 3
    Dernier message: 08/01/2010, 11h40
  5. Réponses: 4
    Dernier message: 24/08/2007, 21h42

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